SQL Server”错误 21002: [SQL-DMO]用户 * 已经存在问题解决

yizhihongxing

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 进行操作,则可以通过以下步骤完成:

  1. 打开SQL Server Management Studio,并连接到相应的服务器和数据库。
  2. 找到“安全性”文件夹,展开其中的“登录名”下拉列表。
  3. 右键单击要更新的登录名,并选择“属性”。
  4. 在“用户映射”选项卡上,选择要通知的数据库并选择要更新的用户。
  5. 数值滑块的值更新为“读/写”。

完成上述操作后,重新创建该用户。

示例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中,执行以下步骤完成更改:

  1. 在“安全性”文件夹中找到testuser。
  2. 右键单击该用户,并选择“属性”。
  3. 在“用户映射”选项卡上,选择要更新的数据库,然后将“默认架构”更改为“sales”。
  4. 单击“确定”以保存更改。

完成这些步骤后,testuser用户的默认架构应该已经成功更改。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL Server”错误 21002: [SQL-DMO]用户 * 已经存在问题解决 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • mysql 动态执行存储过程语句

    MySQL 支持使用 PREPARE STATEMENT 和 EXECUTE STATEMENT 命令动态执行存储过程语句,具体操作步骤如下: 创建存储过程 首先,我们需要先创建一个包含动态 SQL 的存储过程,如下所示: CREATE PROCEDURE dynamic_query(IN col_name VARCHAR(64)) BEGIN DECLAR…

    database 2023年5月22日
    00
  • 简单解析MySQL中的cardinality异常

    下面将详细讲解如何解析MySQL中的cardinality异常。 什么是cardinality 在MySQL中,cardinality是指索引列中唯一值的估计数量。当MySQL查询优化器发现某个索引的cardinality过低或过高时,就会进行相应调整,以达到更好的查询性能。值得注意的是,cardinality的估计值并不是绝对准确的,只是一种近似的估算。因…

    database 2023年5月21日
    00
  • mysql中drop、truncate与delete的区别详析

    MySQL中drop、truncate与delete的区别详析 在 MySQL 中,我们经常会用到三个操作:DROP、TRUNCATE 和 DELETE,它们旨在删除表中的数据,但它们之间有很大的区别。 DROP DROP 的作用是删除整个表。执行 DROP 命令后,表结构和数据都将被删除,而且不可恢复。因此,执行此命令时需要谨慎。 示例1:删除表 DROP…

    database 2023年5月18日
    00
  • MySQL版本低了不支持两个时间戳类型的值解决方法

    MySQL版本低了不支持两个时间戳类型的值解决方法 问题描述:在MySQL版本较低的情况下,如果要存储两个时间戳类型的值,可能会遇到错误提示类似于“ERROR 1292 (22007): Incorrect datetime value: ‘2021-10-30 12:00:00’ for column ‘datetime_column’”,提示无法正确处理…

    database 2023年5月22日
    00
  • 详解腾讯云CentOS7.0使用yum安装mysql及使用遇到的问题

    详解腾讯云CentOS7.0使用yum安装mysql及使用遇到的问题 MySQL是一种常用的开源关系型数据库管理系统,具有稳定性、安全性等优点。在CentOS 7.0中,我们可以使用yum命令来快速安装MySQL。本文将详细介绍如何在腾讯云CentOS 7.0中使用yum安装MySQL,并阐述使用中可能遇到的问题及其解决方案。 安装MySQL 更新系统软件包…

    database 2023年5月22日
    00
  • 详解Oracle隐式游标和显式游标

    详解Oracle隐式游标和显式游标 Oracle数据库中的游标是一种可重复访问SQL查询结果集的数据类型。Oracle数据库中有两种类型的游标:隐式游标和显式游标。 隐式游标 隐式游标是自动创建的游标,数据库会在执行每个SQL语句时隐式地为其创建游标。隐式游标简单易用,而且可以节省编写PL/SQL程序时的大量工作。 下面是一个隐式游标的示例。该示例中,SEL…

    database 2023年5月21日
    00
  • PHP中PDO事务处理操作示例

    下面是关于PHP中PDO事务处理操作示例的完整攻略。 什么是PDO事务处理 在PHP中,使用PDO对数据库进行操作时,设置事务可以确保多个操作顺利执行或者回滚。事务可以理解为一组原子操作,要么全部执行,要么全部不执行。如果其中一个操作有错误,所有操作都将被回滚。可以避免数据一致性问题。 PDO事务操作示例 1. 开始事务,执行所有SQL语句,然后提交事务 t…

    database 2023年5月22日
    00
  • MySQL带你秒懂索引下推

    MySQL带你秒懂索引下推攻略 索引下推简介 索引下推是MySQL 5.6版本新增的特性,是MySQL优化查询速度的一种手段。它的基本原理是在执行SQL语句时,尽可能地利用索引来提高查询效率,减少全表扫描的需要。 索引下推的作用 索引下推可以减少MySQL查询语句所需要的IO开销和CPU开销。其实现原理是让MySQL尽可能地使用索引,避免对表所有的数据进行扫…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部