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