適用対象: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 プロジェクトのグラフィカル ツールの発行ダイアログに読み込むためだけに使用されます。 デフォルト値は/v
ファイルにコンパイルされるわけではなく、発行プロファイルや.dacpac
オプションを使用して値を指定しないコマンドライン配置では、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 変数を設定できます。
For example:
SqlPackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:EnvironmentName=production