次の方法で共有


SQLCMD 変数の概要

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Microsoft Fabric SQL Database

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

展開までに設定されていない SQLCMD 変数 EnvironmentName のスクリーンショット。

SQL プロジェクト ファイルのサンプルと構文

SQLCMD 変数は、<ItemGroup> 項目の下の .sqlproj ファイルで定義されます。 この例では、変数 EnvironmentNametesting の既定値で定義されています。

...
  <ItemGroup>
    <SqlCmdVariable Include="EnvironmentName">
      <DefaultValue>testing</DefaultValue>
      <Value>$(SqlCmdVar__1)</Value>
    </SqlCmdVariable>
  </ItemGroup>
</Project>

DefaultValue 要素は省略可能です。 既定値を指定すると、SQL プロジェクト用にグラフィック ツールの発行ダイアログに読み込むときのみに使用されます。 発行プロファイルで指定された値を使用せずに、既定値は .dacpac ファイルとコマンド ライン 展開にコンパイルされません。そうでない場合、 値を指定する /v オプションが SQLCMD 変数に空の値になります。

SQL オブジェクトで SQLCMD 変数の使用

変数名を $(variableName) 構文でラップすることにより、SQLCMD 変数は SQL オブジェクトとスクリプトで使用できます。 たとえば、次の SQL スクリプトは $(EnvironmentName) 変数を使用してスクリプト動作を制御します。

IF '$(EnvironmentName)' = 'testing'
BEGIN
    -- do something
END

発行アクションに SQLCMD 変数の使用

SqlPackage コマンド ライン ツールの /v オプションを使用して、SQLCMD 変数は展開時に設定できます。 たとえば、次のコマンドは 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 データベース プロジェクト 拡張機能の SQL プロジェクトに SQLCMD 変数を追加するには、[データベース プロジェクト] ビューでプロジェクトの下にある [SQLCMD 変数] ノードを右クリックし、[SQLCMD 変数の追加] を選択します。 変数名を指定し、必要に応じて既定値を指定します。

変数が定義されたら、変数名を $(variableName) 構文でラップすることにより、変数を SQL スクリプトに使用できます。

SQL データベース プロジェクトの拡張機能からプロジェクトを発行すると、SQLCMD 変数の値は既定値から自動的に読み込まれます。 発行プロセス中に値を変更するように求められると、代替値を指定できます。

SQLCMD 変数を SQL プロジェクトに追加するには、各変数の <SqlCmdVariable> 項目を含む .sqlproj ファイルに <ItemGroup> 項目を追加します。 <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