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日

相关文章

  • redis4.0 安装

    本地环境:Centos 7.6   https://redis.io/download 在官网找了半天只有5.0  6.0的下载地址,没有找到4.0的下载址, http://www.redis.cn/download.html 在redis中文网上才找到下载地址。   wget http://download.redis.io/releases/redis-…

    Redis 2023年4月12日
    00
  • Cassandra 和 MySQL 的区别

    Cassandra 和 MySQL 都是常见的数据库。虽然它们都可以存储和查询数据,但是它们在很多方面有很大的区别。下面就对它们的不同点逐一进行讲解。 1. 数据模型 Cassandra 和 MySQL 的数据模型是完全不同的。Cassandra 是一个列式数据库,每个列族(column family)包含了多个行(rows), 每个行由多个列组成。Cass…

    database 2023年3月27日
    00
  • SQL 计算平均值时去掉最大值和最小值

    要计算平均值时去掉最大值和最小值,可以使用SQL中的子查询和聚合函数结合。以下是具体步骤: 使用子查询得到最大值和最小值: 使用如下语句得到数据表中列column的最大值和最小值: SELECT MAX(column), MIN(column) FROM table; 使用HAVING语句筛选掉最大值和最小值: 把上面子查询的结果作为过滤条件传入HAVING…

    database 2023年3月27日
    00
  • sqlserver 中时间为空的处理小结

    下面是详细讲解 SQL Server 中时间为空的处理小结的完整攻略。 标题 SQL Server 中时间为空的处理小结 问题描述 在 SQL Server 中,我们常常需要对时间类型的数据进行操作,但有时候这些数据可能是空值,而空值的处理需要特别注意。本文将为大家讲解在 SQL Server 中处理时间为空值的方法。 空值判断方法 在 SQL Server…

    database 2023年5月21日
    00
  • MySQL中日期型单行函数代码详解

    以下是MySQL中日期型单行函数的详细攻略: 一、日期型单行函数 MySQL提供了丰富的日期型单行函数,方便用户进行日期类型数据的处理。 1.1 CURDATE()函数 该函数用于返回当前日期,格式为’YYYY-MM-DD’。 示例: SELECT CURDATE(); 结果为: +————+ | CURDATE() | +———…

    database 2023年5月22日
    00
  • zabbix监控4.4升级至5.0的详细教程

    zabbix监控4.4升级至5.0的详细教程 概述 在升级Zabbix监控系统时,需要保障监控的稳定性和业务的正常运行,否则可能会影响到业务的整体运营。下面将介绍升级Zabbix监控系统的详细步骤和注意事项。 步骤 以下是Zabbix监控系统从4.4升级到5.0的具体步骤: 1. 备份数据 在升级之前一定要备份所有数据,包括数据库数据、配置文件和其他相关数据…

    database 2023年5月22日
    00
  • MySQL解决SQL注入的另类方法详解

    MySQL解决SQL注入的另类方法详解 什么是SQL注入? SQL注入是指黑客通过将非法的SQL命令插入到Web表单提交或输入框提交的数据中,从而利用Web应用程序漏洞进行攻击的一种手段。攻击者通过SQL注入,可以直接获取或修改数据库中的数据,严重危害了数据安全。 常规的SQL注入解决方式 常规的SQL注入解决方式一般包括以下几种: 对用户数据进行过滤、转义…

    database 2023年5月21日
    00
  • MySQL的DATE_FORMAT函数的使用

    MySQL的DATE_FORMAT函数是用于将日期转换为指定格式字符串的函数,它的语法如下: DATE_FORMAT(date,format) 其中,date表示要格式化的日期,format表示要格式化的格式,返回一个字符串类型值。 下面是几个常用的format格式: %Y: 表示年份,例如: 2021 %m: 表示月份,例如:01、02、03等 %d: 表…

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