Я пытаюсь удалить схему пользователя из базы данных, и я получаю следующую ошибку:
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 является объектом?
Как я избавляюсь от ссылки, таким образом, я могу удалить старую учетную запись пользователя?
SELECT * FROM sys.objects
WHERE name = 'getroles'
AND schema_id = SCHEMA_ID('ext_owner');
Затем выполните:
DROP <object type> ext_owner.getroles;
- или
ALTER SCHEMA <some other schema> TRANSFER ext_owner.getroles;
Вероятно, вам придется повторить это несколько раз. Невозможно удалить непустую схему.
Попробуйте использовать:
SELECT * FROM sys.objects WHERE name = 'getroles'
Я предполагаю, что это функция или хранимая процедура, которую этот пользователь создал в своей собственной схеме (возможно, случайно. Отбросьте ее (если она не используется), и вы должно быть хорошо.
Вы можете запросить системную таблицу sys.objects
, чтобы попытаться найти дополнительную информацию о том, какие могут быть роли getroles.
Попробуйте
SELECT * FROM sys.objects WHERE name LIKE '%getroles%'
Это должно дать вам некоторая информация о том, что это за объект. В этот момент вы можете либо отбросить его, либо решить изменить схему, чтобы на нее больше не ссылались.