如何解决在DACPAC部署中使用SQL变量来区分权限
我在Azure上有一个SQL数据库,并使用SqlPackage.exe和.dacpac文件将所有架构更改部署到该数据库。我希望对此进行修改,以便可以根据部署的环境使用sql变量来控制架构中的某些更改。因此,在.sqlproj文件中,我添加了以下内容:
<ItemGroup>
<SqlCmdVariable Include="DEPLOYMENTTYPE">
<DefaultValue>
</DefaultValue>
<Value>$(SqlCmdVar__1)</Value>
</SqlCmdVariable>
</ItemGroup>
然后在.sql文件中设置安全性,我添加了如下条件:
CREATE ROLE [db_newprodrole]
AUTHORIZATION [dbo];
GO
IF ($(DEPLOYMENTTYPE) = 'production')
ALTER ROLE [db_newprodrole] ADD MEMBER [newestprodmember];
但是,在这种情况下,我遇到了语法错误:
SQL46010: Incorrect syntax near (.
能请你帮忙吗?如何在数据库上设置权限,以我引入的新变量为条件?
谢谢!
解决方法
对于字符串替换,变量需要用引号括起来:
IF ('$(DEPLOYMENTTYPE)' = 'production')
ALTER ROLE [db_newprodrole] ADD MEMBER [newestprodmember];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。