共用方式為


SQLCMD 變數概觀

適用於:Microsoft Fabric 中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 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