2009-12-18 8 views
5

silmeye çalışırken ve aşağıdaki hatayı alıyorum:Hata Bir veritabanından bir kullanıcının şema silmeye çalışıyorum veritabanı kullanıcı hesabı şemasını

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 ne nesne edilir?

Referansı nasıl silebilirim eski kullanıcı hesabını kaldırabilirim?

+0

Bu hataya neden olan komut nedir? Ayrıca, her kullanıcının kendi şeması var mı ?! Elbette yanlış anladım. –

+0

Kullanıcıyı silmeye çalışıyorum ve şemayı silmek isteyip istemediğimi bana soruyor. Bunu elde etmek için tek yapmam gereken kullanıcıya sağ tıklamak, silmek için tıkla. – Jason

+1

Bu gibi işlemleri işlemek için kullanılan DDL komutlarına aşina olmalısınız. Tüm GUI, bu bilgiyi sizden saklıyor ve yanlış gidenleri deşifre etmenizi zorlaştırıyor. SSMS'deki çoğu iletişim kutusu, üstte bir komut dosyası düğmesini tıklamanıza olanak tanır ve bu, normalde GUI'ye güvenebileceğiniz şeyler için DDL'yi öğrenmenin hızlı bir yoludur (ve bunları aldığınızda neler olup bittiğine dair daha fazla bilgi vermelidir) hata mesajları). –

cevap

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

Sonra yapın:

DROP <object type> ext_owner.getroles; 

OR

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

Büyük olasılıkla bunu birkaç kez tekrarlamanız gerekecektir. Boş olmayan bir şema bırakamazsınız.

+0

Statüyü çalıştırdığımda hiçbir şey gösterilmiyor. 'LanguagePackImport' nesnesi tarafından başvurulan olduğundan şema 'bob222'yi bırakamıyorum. –

2

Getroles neler olabileceği konusunda daha fazla bilgi edinmek için, system table sys.objects numaralı sorguyu kullanabilirsiniz.

Bu, nesnenin ne bazı bilgiler vermelidir

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

deneyin. Bu noktada ya düşebilir ya da şemayı değiştirmeye karar verebilirsiniz, böylece artık referans alınmayacaktır. kullanılmadığı değilse (Bırak

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

Benim tahminim o kullanıcı muhtemelen yanlışlıkla (kendi şema altında oluşturulan bir işlev veya saklı yordam olmasıdır) ile olmalıdır.

2

kullanmayı deneyin . iyi gitmeye

İlgili konular