数据库的安全是大多数数据库管理者的重大问题之一。数据库管理者经常恢复或备份数据库,这是一个很常见的场景,但事实是,成功地恢复你的数据库的新版本后,你要删除当前用户。 也许你以为只是扩大用户节点和删除的欲望用户,在这个意义上说,你是有点正确。 但是,如果你面对这样的错误:

Msg 15421, Level 16, State 1, Line 1
The database principal owns a database role and cannot be dropped.

这个时候你会怎么做?

Microsoft SQL Server提供了很多相当多的方式来维护数据库的安全。 这篇文章是不是微软SQL服务器的安全。

在这篇文章中,我将试图解释如何解决好以下几个问题:

  1. 数据库主体拥有数据库的作用,不能被丢弃。
  2. 数据库主体拥有一个模式,不能删除。

解决方案

我尝试分为两节,节;我们将讨论,找出其中存在的用户和部分乙角色的列表,我们将讨论如何解决它。

第 一
在本节中,我们的首要目标是要找出我们的目标数据库中现有的角色列表。 为此,我们用一个简单的Transact - SQL的SQL Server的SYS.DATABASE_PRINCIPALS SYS.DATABASE_PRINCIPALS表。 下面列出了一个示例SQL脚本和所需的步骤(S):

打开SQL Server Management Studio中,作为一个管理员用户登录。
选择数据库,设置用户名和获取数据库角色和用户详细的执行以下Transact - SQL

示例SQL脚本

SELECT     DBPRINCIPAL_1.NAME AS ROLE, DBPRINCIPAL_1.NAME AS OWNER
FROM         SYS.DATABASE_PRINCIPALS AS DBPRINCIPAL_1 INNER JOINSYS.DATABASE_PRINCIPALS AS DBPRINCIPAL_2 ON DBPRINCIPAL_1.PRINCIPAL_ID = DBPRINCIPAL_2.OWNING_PRINCIPAL_ID
WHERE     (DBPRINCIPAL_1.NAME = 'User Name To Remove')  

在SYS.DATABASE_PRINCIPALS “表可以发现在这个环节

第二:

我认为这不是一个非常复杂的任务,让我们开始的,您的SQL Server Management Studio中是开放的,你作为一个管理员用户,即“SA”登录。

从第一个我们已经得到的清单,现在的任务是清除所需的用户。 要做到这一点,我们需要按照下面列出的步骤(S):

  1. 现在展开“数据库”对象资源管理器的节点。

    1. 选择目标数据库>>--->安全>>-->角色>>-->数据库角色。
    2. 现在双击上面的SQL命令的输出中列出的条目。
    3. 改变“所有者”的一些临时用户名。
    4. 如果你要删除的用户名出现在对话框中,选择并删除它从那里也。 
      (所有的角色,在上面的SQL查询。)
  2. 导航到数据库>>--> >>-->目标数据库的安全>>-->架构。
    1. 双击打开“的db_owner”和改变架构的所有者为dbo。
  3. 现在去:数据库>>-->目标数据库>>-->安全>>-->用户。
  4. 右键单击要删除的用户名,点击“删除”,然后在新出现的对话框中单击“确定”。

 :在完成上述步骤(S)- B节第4步除外后,您也可以尝试在sp_dropuser过程sp_dropuser。

例子:

EXEC sp_dropuser'用户名' 

原文http://www.codeproject.com/KB/database/DropDBUser.aspx

作者:qq283868910 发表于2011-12-13 8:51:52 原文链接
阅读:35 评论:0 查看评论

转载于:https://www.cnblogs.com/SpeakHero/archive/2011/12/13/2431303.html

[译]几个步骤来删除SQL Server数据库用户相关推荐

  1. 删除SQL Server数据库

    删除SQL Server数据库 如果用户不再需要某一数据库时,只要满足一定的条件即可将其删除,删除之后,相应的数据库文件及其数据都会被删除,并且不可恢复. 1.以界面方式删除数据库 下面介绍如何删除数 ...

  2. 六、SQL Server数据库用户管理

    目录 1 SQL Server数据库--登录名 1.1 创建登录名(使用视图) 1.1.1 新建登录名:选择"Windows身份验证" 1.1.2 新建登录名:选择"SQ ...

  3. 清空SQL Server数据库中所有表数据的方法(转)

    清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...

  4. 如何使用损坏或删除SQL Server事务日志文件重建数据库

    This is the last article, but not the least one, in the SQL Server Transaction Log series. In this s ...

  5. SQL SERVER数据库置疑后恢复步骤

    --SQL SERVER数据库置疑后恢复步骤    --1. 恢复步骤:    --a.将smlog_log.ldf文件备份到其它目录下:    --b.将源目录下的smlog_log.ldf文件改名 ...

  6. 如何彻底删除Sql server 2008数据库

    很多人在面对SQL Server出现的一些无法解决的问题时,会选择卸载重装,但是SQL Server卸载不干净的话,后续安装过程会出现很多问题,因此安全干净的卸载软件是很重要的步骤. 1.在运行中输入 ...

  7. 删除 SQL Server 的默认实例

    在网上找到下面几种方法,本人使用的是第一种,很实用. 1.删除 SQL Server 的特定实例 若要删除 SQL Server 的某个特定实例,请按照以下步骤操作:  找到并删除%drive%:\\ ...

  8. 解决方案:请删除SQL Server的“WinCC“实例,因为在卸载“WinCC Professional“或“WinCC Runtime Professional“之后及其他问题解决方案!!!

    作者:嵌入式历练者 ID : Eterlove 记下相关笔记,记录我的学习生活!站在巨人的肩上Standing on Shoulders of Giants! 该文章为原创,转载请注明出处和作者:ht ...

  9. SQL Server数据库中使用sql脚本删除指定表的列

    在SQL Server数据库中删除某一列,使用数据库管理工具直接可视化操作是很简单的,但是如果要用sql脚本呢?可能你会说很简单,直接用 ALTER TABLE [要删除的字段所在的表名] DROP ...

最新文章

  1. android 开启一个定时线程_Android中定时执行任务的3种实现方法
  2. 第三届广东省强网杯网络安全大赛WEB题writeup
  3. python算术运算_Python 的二元算术运算详解
  4. boost::gil::num_channels用法的测试程序
  5. python网络编程库_python网络编程学习笔记(9):数据库客户端
  6. CC++刚開始学习的人编程教程(9) Windows8.1安装VS2013并捆绑QT与编程助手
  7. Triangle Leetcode
  8. Win10 IIS本地部署网站运行时图片和样式不正常?
  9. C++ 学习笔记---善良的算法讲解
  10. .net 宏定义_C语言基础知识:几种特殊的函数宏封装方式
  11. 当spark遇见hbase
  12. C#如何获取物理网卡,虚拟网卡,以及无线网卡
  13. matlab画森林图,R语言meta分析(4)网状Meta 分析
  14. 发现了个神奇的图片压缩工具
  15. [SL] Silverlight + WCF Demo项目
  16. CentOS7.2安装配置scylladb
  17. 一种自动化生产测试流水线
  18. 【报名有奖】相约2020 RT-Thread 开发者大会RDC
  19. SCons教程(7) 文件操作
  20. CList POSITION

热门文章

  1. 设置crontab用vi打开编辑
  2. 批量增加域用户并设置为漫游用户
  3. java的继承和访问_Java基础篇:如何解决成员的访问和继承?
  4. 1053. 住房空置率 (20)-PAT乙级真题
  5. 实验1 201521410028
  6. 对元素组按关键字字典序排序
  7. RabbitMQ集群和失败处理
  8. [Android Pro] app_process command in Android
  9. Android项目实战(二):安卓应用程序退出的三种方法
  10. Extjs 4.x 得到form CheckBox的值