0

考虑以下;

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:哦,上帝​​,原来部署框架正在删除并重新创建用户。感谢您的所有建议。

4

1 回答 1

0

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

于 2012-04-20T15:41:47.280 回答