如何处理SQL Server数据库项目中架构和用户的顺序?

时间:2018-08-20 19:23:17

标签: sql-server database dacpac

我已经继承了一个SQL Server数据库项目。数据库已经创建了系统登录名(my_user),并且项目为此创建了数据库用户:

IF (EXISTS(SELECT * FROM sys.sql_logins WHERE name = 'my_user')
    AND NOT EXISTS(SELECT * FROM sys.database_principals WHERE name = 'my_user'))
    CREATE USER [my_user] 
    FOR LOGIN [my_user] 
    WITH DEFAULT_SCHEMA = [my_schema];

EXEC sp_addrolemember 'db_owner', 'my_user';

ALTER AUTHORIZATION ON SCHEMA::my_schema TO [my_user];
GO

通过部署后脚本调用了该文件,但是由于我认为在此过程的早期需要该用户,因此将其移至部署前脚本。还有一个用于创建名为my_schema的架构的构建脚本。但是,我遇到了带有用户和架构的Catch-22。如果我在未构建的预部署脚本中创建架构,那么我会从引用该架构的构建脚本中获取构建错误。如果我在部署前脚本中创建用户,则在构建脚本中对用户的引用将返回构建错误。最好的解决方法是什么?

0 个答案:

没有答案