Pregunta

Estoy tratando de eliminar el esquema de un usuario de una base de datos y recibo el siguiente error:

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
------------------------------

¿Cuál es el objeto GetRoles?

¿Cómo puedo deshacerme de la referencia para poder eliminar la cuenta de usuario anterior?

¿Fue útil?

Solución

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

Entonces hazlo:

DROP <object type> ext_owner.getroles;

--o

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

Es probable que tenga que repetir esto un montón de veces. No puedes soltar un esquema que no esté vacío.

Otros consejos

Puedes consultar el mesa del sistema sys.objects Para tratar de encontrar más información sobre qué podría ser GetRoles.

Probar

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

Esto debería darle información sobre cuál es el objeto. En ese punto, puede soltarlo o decidir cambiar el esquema para que ya no se haga referencia.

Intenta usar:

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

Supongo que es una función o procedimiento almacenado que ese usuario creó bajo su propio esquema (posiblemente accidentalmente. Déjelo (si no se está utilizando) y debería ser bueno para ir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top