在DACPAC中使用SQLCMD变量作为用户名



我正在尝试在Synapse专用SQL池中自动创建用户。按照Microsoft文档中的描述,在Azure DevOps管道中构建和集成DACPAC。问题是,我想在DACPAC的构建时使用SQLCMD变量指定用户名,如下所示:

CREATE USER [$(TestUserName)] FROM EXTERNAL PROVIDER;

这会抛出以下构建错误:

SQL70604: SqlCmd variable reference is not allowed in object names ($(TestUserName)).

我对这个问题采取了完全错误的方法,还是有人知道如何让它工作?

我遇到了完全相同的问题,并将一些安全性移到了部署后脚本中。你失去了用户在主要项目中的一些好处,但它解决了问题。您还必须编写防御脚本IF EXISTS ...

一个示例,使用在YAML管道中使用/v参数传递的sqlcmd变量:

IF NOT EXISTS ( SELECT * FROM sys.database_principals WHERE name = 'someUser-$(envShort)-developers' )
CREATE USER [someUser-$(envShort)-developers] FOR EXTERNAL PROVIDER;

角色成员sp_addrolemember也用于部署后脚本,原因相同

最新更新