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日

相关文章

  • php 在线 mysql 大数据导入程序

    1 <?php 2 header(“content-type:text/html;charset=utf-8”); 3 error_reporting(E_ALL); 4 set_time_limit(0); 5 $file=’./test.sql’; 6 $data=file($file); 7 8 echo “<pre>”; 9 //p…

    MySQL 2023年4月13日
    00
  • Linux oracle 9i图文安装教程二

    Linux Oracle 9i图文安装教程二 一、安装前准备 将Oracle 9i的软件压缩包上传到Linux系统中; 查看系统是否安装了最新版本的gcc和glibc,并确认已经安装了相应的包; rpm -q gcc rpm -q glibc 记得关闭防火墙,如果不关闭可能会影响安装过程; 设置Oracle用户和组; groupadd oinstall gr…

    database 2023年5月22日
    00
  • mysql连接查询中and与where的区别浅析

    MySQL连接查询中and与where的区别浅析 在MySQL中,连接查询是一种强大的查询方式,可以同时查询多个表,获取丰富的查询结果。而在连接查询中,我们常常会使用到and和where关键字,它们的作用虽然有些类似,但又存在着很大的差别。本文将详细探讨这两个关键字在连接查询中的使用方法和区别。 and关键字 and是连接查询中非常常用的一个关键字,它用于连…

    database 2023年5月22日
    00
  • Ubuntu 14.04下mysql安装配置教程

    下面是详细的Ubuntu 14.04下mysql安装配置教程: 1. 安装步骤 1.1 更新软件源 进入终端,输入以下命令: sudo apt-get update 1.2 安装mysql-server 同样在终端中输入以下命令: sudo apt-get install mysql-server 在安装过程中,会提示设置root用户的密码。 1.3 下载m…

    database 2023年5月22日
    00
  • 三表左连接查询的sql语句写法

    三表左连接查询是SQL语句中常见的一种查询方式。它可以在多张表中查找符合条件的结果,并将多张表的数据以特定的关联方式进行合并,以得到更为完整的信息。 下面介绍三表左连接查询的SQL语句写法和实例: SQL语句写法: SELECT A.*, B.*, C.* FROM table_A A LEFT JOIN table_B B ON A.id = B.a_id…

    database 2023年5月21日
    00
  • 如何使用MySQL Workbench操作数据库(表)

    下面是详细讲解“如何使用MySQL Workbench操作数据库(表)”的完整攻略: 准备工作 下载MySQL Workbench并安装,可以在 MySQL官网 下载。 连接到需要操作的MySQL数据库。 操作数据库 新建数据库: 在MySQL Workbench上方导航栏中选择“Database” → ”Create Database”。 输入数据库名称和…

    database 2023年5月21日
    00
  • DBMS中两阶段锁定的类型

    题目要求讲解DBMS中的两阶段锁定,这是一种常见的并发控制机制,用于控制多个事务同时并发访问数据库时产生的数据一致性问题。下面我们来逐步讲解。 什么是两阶段锁定 在DBMS(数据库管理系统)中,两阶段锁定(Two-phase Locking,简称2PL)是一种重要的并发控制技术。它的基本思想是将事务分为两个阶段:加锁阶段和释放锁阶段。 在加锁阶段,事务需要获…

    database 2023年3月27日
    00
  • MySQL联合索引用法示例

    MySQL的联合索引是由多个列组成的,可用于提高查询操作的性能。下面针对MySQL联合索引的用法进行详细讲解。 创建MySQL联合索引 在MySQL中,可以通过 ALTER TABLE 语句来创建联合索引。例如,我们创建一个由多个列组成的联合索引,语句如下: ALTER TABLE table_name ADD INDEX index_name (colum…

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