错误试图删除数据库用户帐户架构

问题描述:

我试图从数据库中删除用户的模式,我发现了以下错误:错误试图删除数据库用户帐户架构

TITLE: Microsoft SQL Server Management Studio 
------------------------------ 

Drop failed for Schema 'ext_owner'. (Microsoft.SqlServer.Smo) 

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.4035.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Drop+Schema&LinkId=20476 

------------------------------ 
ADDITIONAL INFORMATION: 

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo) 

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

Cannot drop schema 'ext_owner' because it is being referenced by object 'getroles'. (Microsoft SQL Server, Error: 3729) 

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.4035&EvtSrc=MSSQLServer&EvtID=3729&LinkId=20476 

------------------------------ 
BUTTONS: 

OK 
------------------------------ 

什么是getroles对象?

如何摆脱引用,以便我可以删除旧的用户帐户?

+0

导致此错误的命令是什么?另外,每个用户都有自己的模式?!我当然误解了。 – 2009-12-18 16:56:44

+0

我试图删除用户,并要求我问我是否也想删除架构。我所做的只是点击用户,点击删除。 – Jason 2009-12-18 17:01:28

+1

您应该熟悉用于处理此类操作的DDL命令。所有的图形用户界面都会隐藏你的这些信息,并且使你更难破译出现的问题。 SSMS中的大多数对话框将允许您单击顶部的脚本按钮,这是学习DDL的一种快速方法,可用于您通常可以依赖GUI的事情(并且应该让您更清楚地了解获取这些事件时发生的情况错误消息)。 – 2009-12-18 17:13:12

SELECT * FROM sys.objects 
WHERE name = 'getroles' 
AND schema_id = SCHEMA_ID('ext_owner'); 

然后做:

DROP <object type> ext_owner.getroles; 

--or

ALTER SCHEMA <some other schema> TRANSFER ext_owner.getroles; 

你可能不得不重复这一堆。您不能删除非空的模式。

+0

当我执行这个陈述时什么都没有显示出来。我得到不能删除模式'bob222',因为它正在被对象'LanguagePackImport'引用 – 2014-02-05 15:31:00

您可以查询system table sys.objects以试图找到更多关于哪些getroles可能的信息。

尝试

SELECT * FROM sys.objects WHERE name LIKE '%getroles%' 

这应该给你的对象是什么的一些信息。此时,您可以删除它或决定更改模式,以便不再引用它。

尝试使用:

SELECT * FROM sys.objects WHERE name = 'getroles' 

我的猜测是,它是用户自己的模式下创建的(可能是意外的函数或存储过程丢弃它(如果不是正在使用它),你应该。 。好去