我有一个脚本,用于创建与 SQL Server 2005 登录名关联的用户。它在创建数据库和登录名后立即执行此操作。该脚本的一位用户报告了以下错误:
The login already has an account under a different user name
知道这种情况是怎么发生的吗?我该如何修改脚本来处理它?
答案1
在创建用户的部分中,‘UserName’ 是数据库用户名,‘LoginName’ 是服务器登录名。(它们通常相同)以下代码使用 IF NOT EXISTS 检查用户,如果用户已存在,则不会运行创建。注意:这应该在用户数据库上下文中运行,而不是主数据库上下文中。
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'UserName')
CREATE USER [UserName] FOR LOGIN [LoginName]