23

Changed database context to ...SQL の一部に が含まれている場合にメッセージを停止する方法はありますUSE databaseか?

4

5 に答える 5

37

のエラー レベルを設定する必要がありますsqlcmd。デフォルトは 0 です。注: ここでのエラー レベルと、sqlcmdたとえば.cmd.exeERRORLEVEL

sqlcmdすべてのセッションでこのメッセージを無効にするには、-mコマンドライン オプションを使用します。

sqlcmd -m 1 <other options>

コード ブロックに対してこのメ​​ッセージを無効にするには、次の:setvarバッチ コマンドを使用します。

USE [mydb]
GO

-- Disable message for next USE command
:setvar SQLCMDERRORLEVEL 1
USE [mydb]
GO

-- Reenable
:setvar SQLCMDERRORLEVEL 0

...

Management Studio で (またはその他の SQLCMD バッチ コマンド)を使用するには:setvar、表示中のクエリ ウィンドウで SQLCMD モードを有効にする必要があります ([クエリ/SQLCMD モード] メニュー)。「:」で始まる行の背景が灰色の場合、有効になっていることがわかります。

于 2012-05-02T11:26:23.990 に答える
7

ディレクトリ内のすべての .sql スクリプトを SQLCMD で実行することにより、更新をリリースします。しかし、USE myDB を使用してすべてを開始すると、ログ ファイルに繰り返し変更されたコンテキスト メッセージが表示されます。これは退屈です。だから私は代わりにこのワンライナーを使います。コンテキストが実際に変更された場合でも、メッセージが表示されますが、これは良いことです。

IF EXISTS(SELECT DB_NAME() WHERE DB_NAME() not IN ('myDB')) USE MyDB

于 2016-05-20T14:29:29.810 に答える
6

もう1つのアイデアは、SQLで3つの部分からなる名前を使用することです。たとえば...

USE Pubs; SELECT name FROM dbo.Authors;

...書きます...

SELECT name FROM Pubs.dbo.Authors;

于 2012-05-02T11:40:34.740 に答える
2

私の場合、簡単でシンプルな解決策は、最初にSELECT 1;. したがって、メッセージChanged database context...はこの最初のクエリに結合され、次のクエリはこのエラー メッセージなしで取得されました。

于 2013-05-15T07:42:57.937 に答える