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

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日

相关文章

  • mysql8.0.23 linux(centos7)安装完整超详细教程

    下面是“mysql8.0.23 linux(centos7)安装完整超详细教程”的完整攻略: 准备工作 在开始安装之前,首先需要满足一些前置条件: 已经拥有一台安装好CentOS 7的服务器。 确保服务器拥有基本的系统管理权限,包括sudo权限和root用户访问权限。 确保服务器已经安装了依赖软件包,如gcc,openssl,cmake等。 下载MySQL …

    database 2023年5月22日
    00
  • SQL中游标(cursor)的基本使用实例

    来讲解SQL中游标(cursor)的基本使用实例的完整攻略。 什么是游标? 游标是一种对结果集中的数据进行单独处理的技术,通常用于需要对查询结果进行逐行处理的情况。它可以类比在文件中移动指针,按照指针指向的位置进行对数据的操作。 游标的基本使用 游标的基本使用分为以下三步: 定义游标。 执行游标,并将游标定位到结果集的第一条。 处理游标的当前记录,并将游标定…

    database 2023年5月21日
    00
  • 最详细的SQL注入相关的命令整理 (转)第1/2页

    首先,SQL注入是一种利用未经过滤的用户输入,通过注入恶意的SQL语句来实现对数据库的攻击。而“最详细的SQL注入相关的命令整理”是一篇文章,总结了常用的SQL注入命令,并提供了一些具体的实例说明。 文章中提到的SQL注入命令主要包括以下几种: UNION SELECT:通过拼接多个SELECT语句,将不同表的数据合并在一起。例如,可以通过以下语句获取所有用…

    database 2023年5月21日
    00
  • Oracle备库宕机启动的完美解决方案

    下面就详细讲解“Oracle备库宕机启动的完美解决方案”的完整攻略。 什么是Oracle备库宕机启动 在Oracle数据库中,备库用于数据冗余和灾备备份。假设主库宕机,我们需要将备库升级为主库来继续提供服务。 但是,当备库也发生宕机时,可能无法轻松地将其升级为主库。此时,我们需要采取一些措施来解决这个问题。 完美的备库宕机启动解决方案 下面是完美的备库宕机启…

    database 2023年5月22日
    00
  • 初识 ASP.NET Membership 用户管理

    ASP.NET Membership 是 .NET Framework 提供的一组 API,用于实现安全的用户管理功能。它可以帮助开发者轻松地实现用户登录、注册、密码重置等操作,并且可以管理用户角色和权限。 下面是初识 ASP.NET Membership 用户管理的完整攻略: 安装Membership 在使用Membership之前,我们需要先安装Memb…

    database 2023年5月22日
    00
  • DML和TCL的区别

    DML和TCL是SQL中非常重要的两个术语,他们分别代表了数据操作语言和事务控制语句。下面我将详细讲解它们的区别。 DML DML指数据操作语言,顾名思义,它主要用于对数据库表中的数据进行操作,包括增加、删除、修改等操作。DML语句包括INSERT、UPDATE、DELETE等等。下面是两个实例说明DML的操作: 添加数据 添加数据是DML语言中的一种操作,…

    database 2023年3月27日
    00
  • [Redis] Redis6 的RC版本更改日志

    Redis 6在许多关键方面对Redis进行了改进,并且是该项目历史上最大的Redis版本之一,因此,这里我们仅列出此版本中的最大功能: *模块系统现在具有许多新的API这使得模块作者可以完成过去无法实现的任务。可以将任意模块私有数据存储在RDB文件中,以挂接不同的服务器事件,捕获和重写命令执行,阻止key上的客户端等等。 *重新编写了Redis活动到期周期…

    Redis 2023年4月11日
    00
  • SQL查询字段被包含语句

    SQL查询字段被包含语句,通常是用于查找包含指定关键词的数据行。下面是详细的攻略: 1. 理解SQL查询字段被包含语句 SQL查询语句中,使用 LIKE 运算符进行模糊匹配。比如,我们要查找包含关键词 “apple” 的数据行,可以使用以下查询语句: SELECT * FROM table_name WHERE column_name LIKE ‘%appl…

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