我的SqlCmd.exe中规定了一个变量:
/v:PipelineUser=$(user)
我想从DACPAC/Post-Deploy脚本中引用这个,但我不完全确定如何引用。脚本模板上的聊天内容是这样的:
/*
Post-Deployment Script Template
--------------------------------------------------------------------------------------
This file contains SQL statements that will be appended to the build script.
Use SQLCMD syntax to include a file in the post-deployment script.
Example: :r .myfile.sql
Use SQLCMD syntax to reference a variable in the post-deployment script.
Example: :setvar TableName MyTable
SELECT * FROM [$(TableName)]
--------------------------------------------------------------------------------------
*/
但是,这看起来是物理地为变量赋值,而不是引用发布变量。
如何在部署后脚本中引用SqlCmd传递的PipelineUser
变量?
找到了解决方案。我们需要引用DACPAC/SSDT项目属性中的变量。
然后,当部署脚本作为SqlCmd的一部分创建时,它只会在.中被替换
然后,我们可以使用$(variablename)
在部署后脚本中引用我们想要的内容
这是一个实际的对象名称,而不仅仅是一个字符串。我们可以通过"引用"它来使它成为字符串。
示例用法:
DECLARE @userVARCHAR(100) = '$(user)';
ALTER AUTHORIZATION ON SCHEMA::[Staging] TO [$(user)];