SQLの一部にChanged database context to ...
が含まれている場合にUSE database
メッセージを停止する方法はありますか?
errorlevel of sqlcmd
を設定する必要があります。デフォルトは0です。注:ここでエラーレベルをsqlcmd
の終了コードと混同しないでください。 、たとえば、ERRORLEVEL
としてcmd.exe
とします。
すべての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で:setvar
(または他のSQLCMDバッチコマンド)を使用するには、現在のクエリウィンドウでSQLCMDモードを有効にする必要があります(メニュー "クエリ/ SQLCMDモード")。 ':'で始まる行の背景が灰色の場合は、有効になっていることがわかります。
SQLCMDを使用して、ディレクトリ内のすべての.sqlスクリプトを実行して更新をリリースします。ただし、すべてをUSE myDBで開始すると、ログファイルに繰り返し変化するコンテキストメッセージが表示され、鈍くなります。代わりに、この1つのライナーを使用します。コンテキストが実際に変更された場合でも、メッセージが表示されます。これは良いことです。
IF EXISTS(SELECT DB_NAME() WHERE DB_NAME()NOT IN( 'myDB'))USE MyDB
別のアイデアは、SQLで3部構成の名前を使用することです。の代わりに...
USE Pubs; SELECT name FROM dbo.Authors;
...書く...
SELECT name FROM Pubs.dbo.Authors;
私の場合、簡単でシンプルな解決策は、SELECT 1;
などの小さなクエリを最初に実行することでした。したがって、メッセージChanged database context...
はこの最初のクエリに結合され、次のクエリはこのエラーメッセージなしで取得されました。