web-dev-qa-db-ja.com

「データベースコンテキストが...に変更されました」メッセージを停止する方法

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

18
SteveC

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モード")。 ':'で始まる行の背景が灰色の場合は、有効になっていることがわかります。

28
Christian.K

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

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

6
Jolly Tom

別のアイデアは、SQLで3部構成の名前を使用することです。の代わりに...

USE Pubs; SELECT name FROM dbo.Authors;

...書く...

SELECT name FROM Pubs.dbo.Authors;

6
Aaron Bertrand

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

2
user2335044