web-dev-qa-db-ja.com

SQLCMD.exeのデータベース変更メッセージを抑制します

スクリプト生成スクリプトを書いています。スクリプトは、DDLステートメントのリストを生成しています。

util_generator.sqlの生成は、データベース接続から始まります。

USE [TARGET_DATABASE]
GO
...
Many queries
Followed by print statements
...

これは非常に長いスクリプトなので、長さは不明です。 SQLCMD.exeを使用します

sqlcmd -s sa\password -i util_generator.sql -r0 -o util_1.sql

生成されたスクリプトutil_1.sqlは次のようになります。

Changed database context to 'TARGET_DATABASE'.
CREATE TABLE ...
CREATE INDEX ...
CREATE VIEW ...

問題は生成されたスクリプトutil_1.sqlが不明なコマンドChanged database context to 'TARGET_DATABASE'.で失敗することです

Changed database context to 'TARGET_DATABASE'.からのSQLCMD.exeメッセージを非表示にするには、サポートが必要です

SSMS util_generator.sqlを使用しても、Changed database context to 'TARGET_DATABASE'.メッセージを生成せずに機能します。

ただし、不明な長さの出力スクリプトに対してCLIからSSMSでutil_generator.sqlを実行することはできません。

SQLCMD.exeのChanged database context to 'TARGET_DATABASE'.ステートメントを抑制する方法を教えてください

3
Dudi Boy

Scott Hodginからのコメントに続きます。

解決策は、USE [TARGET_DATABASE]スクリプトからutil_generator.sqlを削除することです。

そして、SQLCMD.exeオプションを使用して-d経由でターゲットデータベースを割り当てます。

予想されるSQLCMD.exeは次のとおりです。

sqlcmd -s sa\password -i util_generator.sql -r0 -o util_1.sql -d TARGET_DATABASE
2
Dudi Boy

重大度レベルが10未満の(エラー)メッセージを抑制できます。起動オプションとして-m10を追加します。

私の知る限りでは、SQLCMDがその特定のメッセージを抑制する直接的な方法はありません。しかし、おそらく情報タイプのメッセージを(上記のように)抑制すればそれを削減できるでしょうか?

または、もちろん、Dudiの提案に従って-dスイッチを使用します。

3
Tibor Karaszi