次の方法で共有


SQLCMD 変数の概要

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric プレビューの SQL データベース

SQLCMD 変数は、SQL オブジェクトとスクリプトで動的に置換可能なトークンを作成するために SQL プロジェクトで使用されます。 これらの変数の値はデプロイ時に設定され、SQL プロジェクトの値を動的に設定するために使用できます。 SQLCMD 変数の値は、発行アクションまたは発行プロファイルを使用して設定できます。

デプロイまで設定されていない SQLCMD 変数 EnvironmentName のスクリーンショット。

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