SQLCMD 变量概述
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Microsoft Fabric SQL 数据库
SQLCMD 变量在 SQL 项目中用于在 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 变量
要在 Visual Studio 中将 SQLCMD 变量添加到 SQL 项目,右键单击“解决方案资源管理器”中的项目,然后选择“属性”。 在“属性”窗口的“SQLCMD 变量”选项卡中,指定变量名和默认值(可选)。
定义变量后,可以通过将变量名称整合在 $(variableName)
语法中,在 SQL 脚本中使用变量。
从 Visual Studio 发布项目时,SQLCMD 变量是在“发布”对话框中设置的。 使用“加载值”按钮将 SQL 项目中的默认值加载到对话框中。
要在 Visual Studio 中将 SQLCMD 变量添加到 SQL 项目,右键单击“解决方案资源管理器”中的项目,然后选择“属性”。 在“属性”窗口的“SQLCMD 变量”部分中,指定变量名和默认值(可选)。
定义变量后,可以通过将变量名称整合在 $(variableName)
语法中,在 SQL 脚本中使用变量。
从 Visual Studio 发布项目时,SQLCMD 变量是在“发布”对话框中设置的。 使用“加载值”按钮将 SQL 项目中的默认值加载到对话框中。
若要将 SQLCMD 变量添加到 SQL 数据库项目扩展中的 SQL 项目,请在“数据库项目”视图中的项目下右键单击“SQLCMD 变量”节点,然后选择“添加 SQLCMD 变量”。 指定变量名称和默认值(可选)。
定义变量后,可以通过将变量名称整合在 $(variableName)
语法中,在 SQL 脚本中使用变量。
从 SQL 数据库项目扩展发布项目时,SQLCMD 变量值会自动从默认值加载。 当系统提示在发布过程中修改值时,你可以提供替代值。
若要向 SQL 项目添加 SQLCMD 变量,请将 <ItemGroup>
项添加到 .sqlproj
文件中,其中包含每个变量的 <SqlCmdVariable>
项。 <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