共用方式為


SQLCMD 變數概觀

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體

SQL 專案中會使用 SQLCMD 變數,在 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 專案圖形化工具的發佈對話方塊中。 預設值不會編譯到 .dacpac 檔案中,而命令列部署如果沒有發行設定檔或 /v 選項指定的值,就會為 SQLCMD 變數使用空值。

在 SQL 物件中使用 SQLCMD 變數

SQLCMD 變數可以包裝 $(variableName) 語法中的變數名稱,以用於 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 變數

若要將 SQLCMD 變數新增至 Visual Studio 中的 SQL 專案,以滑鼠右鍵按一下 [方案總管] 中的專案,然後選取 [屬性]。 在屬性視窗的 [SQLCMD 變數] 索引標籤中,指定變數名稱,並選擇性地指定預設值。

定義變數之後,可以透過將變數名稱包裝在 $(variableName) 語法中,在 SQL 指令碼中使用變數。

從 Visual Studio 發佈專案時,在 [發佈] 對話方塊中設定 SQLCMD 變數。 使用 [載入值] 按鈕,將預設值從 SQL 專案載入對話方塊中。

若要將 SQLCMD 變數新增至 Visual Studio 中的 SQL 專案,以滑鼠右鍵按一下 [方案總管] 中的專案,然後選取 [屬性]。 在屬性視窗的 [SQLCMD 變數] 部分,指定變數名稱,並還可以選擇是否指定預設值。

定義變數之後,可以透過將變數名稱包裝在 $(variableName) 語法中,在 SQL 指令碼中使用變數。

從 Visual Studio 發佈專案時,在 [發佈] 對話方塊中設定 SQLCMD 變數。 使用 [載入值] 按鈕,將預設值從 SQL 專案載入對話方塊中。

若要將 SQLCMD 變數新增至 SQL 資料庫專案延伸模組中的 SQL 專案,以滑鼠右鍵按一下 [資料庫專案] 檢視中專案下的 [SQLCMD 變數] 節點,然後選取 [新增 SQLCMD 變數]。 指定變數名稱,然後選擇性地指定預設值。

定義變數之後,可以透過將變數名稱包裝在 $(variableName) 語法中,在 SQL 指令碼中使用變數。

從 SQL 資料庫專案延伸模組發佈專案時,SQLCMD 變數值會自動從預設值載入。 當系統提示您在發佈程序期間修改值時,您可以提供替代值。

若要將 SQLCMD 變數新增至 SQL 專案,請將 <ItemGroup> 項目新增至 <SqlCmdVariable> 檔案,其中每個變數都有 .sqlproj 項目。 <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