SQL Server错误21002是一个常见问题,通常会发生在创建一个新用户时。该错误消息的文本是 “[SQL-DMO]用户 * 已经存在”。它的意思是,你正在尝试创建一个已经存在的用户。以下是解决该问题的步骤:
1. 确认用户名是否存在
首先,你需要确认该用户名是否已经存在于已经存在的用户列表中。你可以使用下面的SQL查询来检查:
sp_helpuser 'username'
如果查询返回结果,请确认该用户名是否是你想要创建的。如果是,请删除该用户并重试创建过程。如果不是,请选择一个不同的用户名。
2. 使用ALTER USER命令更新用户信息
如果问题仍然存在,则有可能是由于创建过程中改变了用户的某些属性,这导致系统不能创建该用户。在这种情况下,使用下面的ALTER USER命令来更新该用户的信息:
ALTER USER [username] WITH LOGIN = [loginname]
其中,[username]为要更新的用户名,[loginname]为要关联的SQL登录名。如果使用SQL Server Management Studio 进行操作,则可以通过以下步骤完成:
- 打开SQL Server Management Studio,并连接到相应的服务器和数据库。
- 找到“安全性”文件夹,展开其中的“登录名”下拉列表。
- 右键单击要更新的登录名,并选择“属性”。
- 在“用户映射”选项卡上,选择要通知的数据库并选择要更新的用户。
- 数值滑块的值更新为“读/写”。
完成上述操作后,重新创建该用户。
示例1
假设你已经尝试通过以下脚本创建一个新的用户:
CREATE LOGIN john
WITH PASSWORD = 'MyPassword123'
GO
USE [MyDatabase]
GO
CREATE USER john
FOR LOGIN john
WITH DEFAULT_SCHEMA = dbo
如果运行上述代码,会得到错误21002,提示用户已存在。那么你可以使用第一种方法确认该用户已经存在:
sp_helpuser 'john'
如果查询返回结果,则可以通过以下脚本删除该用户:
USE [MyDatabase]
GO
DROP USER john
GO
DROP LOGIN john
GO
然后,重新运行创建用户的脚本。
示例2
假设你已经创建了一个名为“testuser”的用户:
CREATE LOGIN testuser WITH PASSWORD = 'Password3487'
USE MyDatabase
CREATE USER testuser FOR LOGIN testuser
现在想要将该用户的默认架构更改为“sales”。你可以执行以下命令:
ALTER USER testuser WITH DEFAULT_SCHEMA = sales
或者,在SQL Server Management Studio中,执行以下步骤完成更改:
- 在“安全性”文件夹中找到testuser。
- 右键单击该用户,并选择“属性”。
- 在“用户映射”选项卡上,选择要更新的数据库,然后将“默认架构”更改为“sales”。
- 单击“确定”以保存更改。
完成这些步骤后,testuser用户的默认架构应该已经成功更改。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL Server”错误 21002: [SQL-DMO]用户 * 已经存在问题解决 - Python技术站