考虑以下事项;
USE [$(db_name)]
GO
IF SCHEMA_ID('$(schema_name)') IS NULL
-- Must use dynamic SQL because 'CREATE SCHEMA' must be the first
-- statement in a query batch.
EXECUTE('CREATE SCHEMA [$(schema_name)]')
-- User already exists at this point.
GRANT SELECT, EXECUTE ON SCHEMA::[$(schema_name)] TO [$(user_name)]
通过sqlcmd.exe
执行时,不会报告错误并创建架构,但未授予权限。如果我然后执行SSMS中的最后一行(替换sqlcmd
变量),它将按预期工作。
有没有理由说SQL Server不会按照我的要求行事?
编辑:应该说,这是SQL Server 2008(10.50.1617)。
编辑2:哦,主啊,结果是部署框架正在删除并重新创建用户。感谢您的所有建议。
答案 0 :(得分:0)
结果是有问题的数据库用户被删除,然后在部署过程中重新创建。这解释了为什么sqlcmd.exe
没有错误,以及为什么我在GRANT
没有抱怨之前添加的存在检查,以及为什么之后手动运行GRANT
按预期工作。