Changed database context to ...SQL の一部に が含まれている場合にメッセージを停止する方法はありますUSE databaseか?
5 に答える
のエラー レベルを設定する必要があります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 モード] メニュー)。「:」で始まる行の背景が灰色の場合、有効になっていることがわかります。
ディレクトリ内のすべての .sql スクリプトを SQLCMD で実行することにより、更新をリリースします。しかし、USE myDB を使用してすべてを開始すると、ログ ファイルに繰り返し変更されたコンテキスト メッセージが表示されます。これは退屈です。だから私は代わりにこのワンライナーを使います。コンテキストが実際に変更された場合でも、メッセージが表示されますが、これは良いことです。
IF EXISTS(SELECT DB_NAME() WHERE DB_NAME() not IN ('myDB')) USE MyDB
もう1つのアイデアは、SQLで3つの部分からなる名前を使用することです。たとえば...
USE Pubs; SELECT name FROM dbo.Authors;
...書きます...
SELECT name FROM Pubs.dbo.Authors;
私の場合、簡単でシンプルな解決策は、最初にSELECT 1;. したがって、メッセージChanged database context...はこの最初のクエリに結合され、次のクエリはこのエラー メッセージなしで取得されました。