MSSQL中删除用户时数据库主体在该数据库存中拥有架构 无法删除的解决方法

在ms sql2005 下面删除一个数据库的用户的时候提示 "数据库主体在该数据库中拥有架构,无法删除" 的错误解决方案
1、在 安全性 -> 架构 下面看有没有该用户存在,如果有就删除
再试试在用户下面看能不能把该用户删掉,如果不行就用下面的文法
运行下SQL语句
ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo;

--然后手动删除就可以了。
因为选定的用户拥有对象,所以无法除去该用户"解决方法

代码如下:

use 你的库名
go

declare tb cursor local
for
select 'sp_changeobjectowner '
+quotename(
+quotename(user_name(uid))
+'.'+quotename(name),'''')
+',''dbo'''
from sysobjects
where objectproperty(id,N'isusertable')=1
and uid<>user_id('dbo')
declare @s nvarchar(4000)
open tb
fetch tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch tb into @s
end
close tb
deallocate tb

第三

方法一(华夏互联专业技术提示:因为涉及更改数据库存储过程,强制删除法不推荐)
首先你需要做的第一件事
企业管理器-〉选择服务器-〉属性-〉服务器设置-〉挑上允许对系统目录。。。-〉确定
第二步
找到你的数据库找到sysusers表那你以前的用户删除
第三步回去吧属***值改回来
第四部重建用户即可

方法二

对mssql出现选定的用户拥有对象而无法删除的处理

--将下面的代码在查询分析器中执行,修改修改库名

代码如下:

use 你的库名
go

declare tb cursor local
for
select 'sp_changeobjectowner '
+quotename(
+quotename(user_name(uid))
+'.'+quotename(name),'''')
+',''dbo'''
from sysobjects
where objectproperty(id,N'isusertable')=1
and uid<>user_id('dbo')
declare @s nvarchar(4000)
open tb
fetch tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch tb into @s
end
close tb
deallocate tb

MSSQL备份移植到另一服务器还原时容易遇到的问题……
MSSQL备份移植到另一服务器还原时容易遇到的问题,尤其是从虚拟主机备份回来的数据库在本机还原的问题…

会出现用SQL原来的用户名和密码无效的情况
无法删除某一个系统表
用sa连接做Select时提示表名无效
无法删除原备份数据库中的用户名,提示“因为选定的用户拥有对象,所以无法除去该用户。”
主要原因是原来的备份还原时保留了原用户的信息,导致产生孤立用户……

这时候需要用sp_changeobjectowner 将对象的所有关系更改到另一个用户上,既更改数据库对象的所有者。

格式:

sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner'

例子 在查询分析器中录入:

sp_changeobjectowner 'web102101.tablename', 'dbo'
依次将所有的所属用户都改为dbo,然后现在数据库的用户中把孤立用户删除,再到安全中删除登陆信息。

并可以再依次创建新用户了

下面是一些补充:

Microsoft SQL Server错误: 15138删除对于用户失败,数据库主体在该数据库中拥有架构,无法删除。解决方法
删除 对于 用户“*****”失败。 (Microsoft.SqlServer.Smo)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=

9.00.1523.00&EvtSrc=Microsoft.SqlServer.Management.Smo.

ExceptionTemplates.FailedOperationExceptionText&EvtID=删除+User&LinkId=20476

------------------------------
其他信息:

执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)

------------------------------

数据库主体在该数据库中拥有 架构,无法删除。 (Microsoft SQL Server,错误: 15138)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.1399&EvtSrc=MSSQLServer&EvtID=15138&LinkId=20476

解决方法一

先删除此用户对应的架构,然后在删除对应的用户
步骤
1。SQL SERVER MANAGEMENT STUDIO--》数据库--》安全性--》构架,先删除对应的构架
2。SQL SERVER MANAGEMENT STUDIO--》数据库--》安全性--》用户,删除对应的用户

解决方法二

--执行如下SQL语句

ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo;
--然后手动删除就可以了。

(0)

相关推荐

  • MSSQL中删除用户时数据库主体在该数据库存中拥有架构 无法删除的解决方法

    在ms sql2005 下面删除一个数据库的用户的时候提示 "数据库主体在该数据库中拥有架构,无法删除" 的错误解决方案 1.在 安全性 -> 架构 下面看有没有该用户存在,如果有就删除 再试试在用户下面看能不能把该用户删掉,如果不行就用下面的文法 运行下SQL语句 ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo; --然后手动删除就可以了. 因为选定的用户拥有对象,所以无法除去该用户"解决方法 复制代码 代码如下: use

  • Spring中异步注解@Async的使用、原理及使用时可能导致的问题及解决方法

    前言 其实最近都在研究事务相关的内容,之所以写这么一篇文章是因为前面写了一篇关于循环依赖的文章: <Spring循环依赖的解决办法,你真的懂了吗> 然后,很多同学碰到了下面这个问题,添加了Spring提供的一个异步注解@Async循环依赖无法被解决了,下面是一些读者的留言跟群里同学碰到的问题: 本着讲一个知识点就要讲明白.讲透彻的原则,我决定单独写一篇这样的文章对@Async这个注解做一下详细的介绍,这个注解带来的问题远远不止循环依赖这么简单,如果对它不够熟悉的话建议慎用. 文章要点 @Asy

  • 复杂系统中的用户权限数据库设计解决方案

    B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个"非法用户"很可能就能通过浏览器轻易访问到B/S系统中的所有功能.因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的"非法用户"将会将他们彻底的"拒之门外&

  • SQL Server中参数化SQL写法遇到parameter sniff ,导致不合理执行计划重用的快速解决方法

    parameter sniff问题是重用其他参数生成的执行计划,导致当前参数采用该执行计划非最优化的现象.想必熟悉数据的同学都应该知道,产生parameter sniff最典型的问题就是使用了参数化的SQL(或者存储过程中使用了参数化)写法,如果存在数据分布不均匀的情况下,正常情况下生成的执行计划,在传入在分布数据较多的参数的情况下,重用了正常参数生成的执行计划,而这种缓存的执行计划并非适合当前参数的一种情况. 这种情况,在实际业务中,出现的频率还是比较高的,因为存储过程一般都是采用参数化的写法

  • 卸载VS2011 Developer Preview后Sql Server2008 R2建立数据库关系图报“找不到指定的模块”错误的解决方法

    可怜我的C盘本来只有8.XG,所以不得不卸载掉它. 卸载掉本身没啥问题,只是昨晚突然发现 Sql Server 2008 R2 Management Studio 突然不能新建数据库关系图了,一建立就会报"找不到指定的模块(MS Visual Database Tools)"的错误: 为了这个错误我甚至认真评估了重新配置数据库的可能性.无奈这个R2的SQL2008打过SP1了,无论是修复还是重装都是很花时间的事情,所以不甘心,在Google上找了一圈.终于找到个类似的主题反应了这个问题

  • php中让上传的文件大小在上传前就受限制的两种解决方法

    虽然你可以使用一个类似的技术以拒绝过大的文件(通过检查$uploadedfile_size变量),但是通常这不是一个好主意.在得到这个变量之前,这个文件已经被上载并保存在temp目录中.如果你试图因为磁盘容量或者是带宽的原因拒绝文件的上载,事实上那个大文件还是被上载了(尽管它们立即又被删除了),这对于你来说也许是个问题. 更好的方法是,你可以提前告诉php你希望可以接受的文件的大小的上限.有两个方法.第一个是调整你的php.ini文件中的upload_max_filesize设置.默认值是2mb

  • Win2003 MSSQL以普通用户运行安全设置篇

    什么要将MS SQL SERVER数据库必须运行在"普通用户"的状态下呢?因为如果使用了"超级管理员"或者"本地系统用户"来运行"SQL2000数据库",就会被黑客利用,利用SYSTEM用户权限入侵服务器.因此,为了服务器安全,务必将MS SQL SERVER运行在"普通用户"的状态下.同时,要对硬盘的权限做好对应的权限设置MS SQL SERVER才能正常运行. 将MS SQL SERVER运行于普通用户

  • sql server 2005因架构无法删除用户错误15138的解决方法

    Microsoft SQL Server错误: 15138删除对于用户失败,数据库主体在该数据库中拥有架构,无法删除 解决方法一 先删除此用户对应的架构,然后在删除对应的用户 步骤 1.SQL SERVER MANAGEMENT STUDIO>数据库>安全性>构架,先删除对应的构架 2.SQL SERVER MANAGEMENT STUDIO>数据库>安全性>用户,删除对应的用户 解决方法二 执行如下SQL语句 ALTER AUTHORIZATION ON SCHEMA

  • MySql安装与配置方法(MySQL添加用户、删除用户与授权)

    1.安装MySql 目前MySQL有两种形式的文件,一个是msi格式,一个是zip格式的.msi格式的直接点击setup.exe就好,按照步骤进行.但是很多人下了zip格式的解压发现没有setup.exe,本人下载的也是这样的,不知道怎么安装,点哪里都没有反应.只能寻求度娘帮助,然后才了解到,这种文件的安装方式. 1)将文件解压到自己认为合适的位置. 2)在目录下新建一个my.ini(文件中已经有一个mydefault.ini文件),新建后会将原来文件的作用覆盖掉.在文件中粘贴一下代码: [my

  • 详解VueJS应用中管理用户权限

    在需要身份验证的前端应用里,我们经常想通过用户角色来决定哪些内容可见.比如,游客身份可以阅读文章,但注册用户或管理员才能看到编辑按钮. 在前端中管理权限可能会有点麻烦.你之前可能写过这样的代码: if (user.type === ADMIN || user.auth && post.owner === user.id ) { ... } 作为代替方案,一个简洁轻量的库--CASL--可以让管理用户权限变得非常简单.只要你用CASL定义了权限,并设置了当前用户,就可以把上面的代码改为这样:

随机推荐