適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL データベース
SQLCMD 変数は、SQL オブジェクトとスクリプトで動的に置換可能なトークンを作成するために SQL プロジェクトで使用されます。 これらの変数の値はデプロイ時に設定され、SQL プロジェクトの値を動的に設定するために使用できます。 SQLCMD 変数の値は、発行アクションまたは発行プロファイルを使用して設定できます。
SQL プロジェクト ファイルのサンプルと構文
SQLCMD 変数は、.sqlproj項目の下の <ItemGroup> ファイルで定義されます。 この例では、変数 EnvironmentName は既定値の testing で定義されています。
...
<ItemGroup>
<SqlCmdVariable Include="EnvironmentName">
<DefaultValue>testing</DefaultValue>
<Value>$(SqlCmdVar__1)</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
DefaultValue 要素は省略可能です。 既定値を指定すると、SQL プロジェクトのグラフィカル ツールの発行ダイアログに読み込むためだけに使用されます。 デフォルト値は.dacpacファイルにコンパイルされるわけではなく、発行プロファイルや/vオプションを使用して値を指定しないコマンドライン配置では、SQLCMD変数の値が空になります。
SQL オブジェクトで SQLCMD 変数を使用する
SQLCMD 変数は、変数名を $(variableName) 構文で囲むことによって、SQL オブジェクトやスクリプトで使用できます。 たとえば、次の SQL スクリプトでは、 $(EnvironmentName) 変数を使用してスクリプトの動作を制御します。
IF '$(EnvironmentName)' = 'testing'
BEGIN
-- do something
END
発行アクションで SQLCMD 変数を使用する
SQLCMD 変数は、/v コマンド ライン ツールの オプションを使用して、デプロイ時に設定できます。 たとえば、次のコマンドは、 EnvironmentName 変数を productionに設定します。
sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:EnvironmentName=production
SQLCMD 変数を追加して使用する
Visual Studio で SQL プロジェクトに SQLCMD 変数を追加するには、 ソリューション エクスプローラー でプロジェクトを右クリックし、[ プロパティ] を選択します。 プロパティ ウィンドウの [SQLCMD 変数 ] タブで、変数名と必要に応じて既定値を指定します。
変数が定義されたら、変数名を$(variableName)構文で囲むことによって、SQLスクリプトで使用できます。
Visual Studio からプロジェクトを発行すると、SQLCMD 変数が発行ダイアログで設定されます。 [ 値の読み込み ] ボタンを使用して、SQL プロジェクトからダイアログに既定値を読み込みます。
Visual Studio で SQL プロジェクトに SQLCMD 変数を追加するには、 ソリューション エクスプローラー でプロジェクトを右クリックし、[ プロパティ] を選択します。 プロパティ ウィンドウの [SQLCMD 変数 ] セクションで、変数名と必要に応じて既定値を指定します。
変数が定義されたら、変数名を$(variableName)構文で囲むことによって、SQLスクリプトで使用できます。
Visual Studio からプロジェクトを発行すると、SQLCMD 変数が発行ダイアログで設定されます。 [ 値の読み込み ] ボタンを使用して、SQL プロジェクトからダイアログに既定値を読み込みます。
SQL Database Projects 拡張機能の SQL プロジェクトに SQLCMD 変数を追加するには、[データベース プロジェクト] ビューのプロジェクトの下にある [SQLCMD 変数] ノードを右クリックし、[SQLCMD 変数の追加] を選択します。 変数名を指定し、必要に応じて既定値を指定します。
変数が定義されたら、変数名を$(variableName)構文で囲むことによって、SQLスクリプトで使用できます。
SQL Database Projects 拡張機能からプロジェクトを発行すると、SQLCMD 変数の値が既定値から自動的に読み込まれます。 発行プロセス中に値を変更するように求められたら、代替値を指定できます。
SQLCMD 変数を SQL プロジェクトに追加するには、各変数の<ItemGroup>項目を含む.sqlproj項目を<SqlCmdVariable> ファイルに追加します。
<SqlCmdVariable>項目には、変数名、既定値、デプロイ時に設定できる値が含まれます。
<ItemGroup>
<SqlCmdVariable Include="EnvironmentName">
<DefaultValue>testing</DefaultValue>
<Value>$(SqlCmdVar__1)</Value>
</SqlCmdVariable>
</ItemGroup>
変数が定義されたら、変数名を$(variableName)構文で囲むことによって、SQLスクリプトで使用できます。
コマンド ラインからプロジェクトを配置する場合、SqlPackage コマンド ライン ツールの /v オプションを使用して SQLCMD 変数を設定できます。
例えば次が挙げられます。
SqlPackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:EnvironmentName=production