适用于: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 变量
可以使用 /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 脚本中使用变量。
从命令行部署项目时,可以使用 /v
命令行工具中的 选项设置 SQLCMD 变量。
For example:
SqlPackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:EnvironmentName=production