12

私たちは Visual Studio Database Professional を使用しており、展開中に環境を区別するために SQLCMD 変数を多用しています。

コンテキストの設定に使用できるディレクティブがいくつかあることは知っています (サーバー名の :connect など)。スクリプト内で SQLCMD モードを強制的に実行する方法はありますか? 私たちの展開プロセスの一部は、DBA にスクリプトを調べて実行させることです。これは優れたセーフティ ネットになります (したがって、実行モードを SQLCMD に設定するよう DBA に思い出させる必要はありません)。

4

2 に答える 2

4

解決策ではありませんが、回避策として、スクリプトを警告に埋め込むことができます。 この投稿は、このコードに私をインスパイアしました:

SET NOEXEC OFF; -- previous execution may have toggled it
:setvar IsSqlCmdEnabled "True"
GO
IF ('$(IsSqlCmdEnabled)' = '$' + '(IsSqlCmdEnabled)')
BEGIN
  PRINT('Use SqlCmd-mode!!');
  SET NOEXEC ON;
  -- RAISERROR ('This script must be run in SQLCMD mode.', 20, 1) WITH LOG
END
ELSE
BEGIN
  PRINT('Using SqlCmd-mode')
  -- insert the code you really want to execute:
  -- ...
END
SET NOEXEC OFF; -- do not disable next execution in this session
于 2011-11-15T09:45:49.353 に答える
0

これは不可能のようです。SSMS プロジェクト モードも確認しました。

ただし、BIDS でデータベース プロジェクトを作成する場合、デプロイ前およびデプロイ後のスクリプトは既定で SQLCMD モードで実行されます。

それがあなたが望む答えではないことはわかっていますが、スクリプト ファイル内のテキストに基づいてそれを行うカスタム SSMS プラグインを作成することに頼ることなく、私があなたに提供できる最善の方法です。

于 2011-10-06T18:44:13.617 に答える