SQL Server在创建架构后未应用权限

时间:2012-04-20 13:36:59

标签: sql-server sql-server-2008

考虑以下事项;

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:哦,主啊,结果是部署框架正在删除并重新创建用户。感谢您的所有建议。

1 个答案:

答案 0 :(得分:0)

结果是有问题的数据库用户被删除,然后在部署过程中重新创建。这解释了为什么sqlcmd.exe没有错误,以及为什么我在GRANT没有抱怨之前添加的存在检查,以及为什么之后手动运行GRANT按预期工作。