SQLCMD 變數概觀
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
SQL 專案中會使用 SQLCMD 變數,在 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 專案圖形化工具的發佈對話方塊中。 預設值不會編譯到 .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