我已经继承了一个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。如果我在未构建的预部署脚本中创建架构,那么我会从引用该架构的构建脚本中获取构建错误。如果我在部署前脚本中创建用户,则在构建脚本中对用户的引用将返回构建错误。最好的解决方法是什么?