El principal de la base de datos posee un esquema en la base de datos y no se puede descartar el mensaje

28

Estoy tratando de eliminar un principal de la base de datos pero no puedo porque posee un esquema. Sin embargo, cuando voy a editar el usuario, la casilla para desmarcar los esquemas es azul e inamovible. ¿Cómo puedo eliminar el principal de estos esquemas?

rsteckly
fuente

Respuestas:

31

Pruebe el T-SQL para hacer esto:

alter authorization
on schema::YourSchemaName
to dbo
go

drop user TheUserYouWantToDelete
go

No puede descartar un principal que es propietario de un esquema, por lo que ALTER AUTHORZATIONcambia el esquema propio (que usé YourSchemaName, pero obviamente lo sustituyo con el esquema propio en su base de datos) a dbo(del mismo modo, puede cambiar la propiedad a cualquier principal que necesite en su medio ambiente). Eso le permitirá descartar al usuario que poseía el esquema anteriormente (por ejemplo, los propósitos que usé TheUserYouWantToDelete, pero ese será el ahora no propietario que desea descartar).

Thomas Stringer
fuente
Bien, entonces esto funcionó. Sin embargo, estoy un poco confundido sobre por qué. ¿Por qué necesito autorizar el esquema a otro esquema? Tal vez yo necesidad de revisar los esquemas ...
rsteckly
1
@rsteckly Simplified, autorización = propiedad. Si pudiera eliminar el usuario que posee el esquema, el esquema no sería válido porque el propietario ya no existe. Imagine que puede eliminar un cliente que ha realizado un pedido. ¿Qué significa el CustomerID en la tabla de pedidos si ya no hay un cliente al que señala? ¿Dónde debo enviar el pedido?
Aaron Bertrand
Lo siento, mi ejemplo no fue bien explicado. No estamos cambiando la autorización al dboesquema, estamos cambiando la autorización al dbodirector. Eso podría haber sido cualquier base de datos principal.
Thomas Stringer
30

La forma T-SQL funciona. Gracias a http://zarez.net/?p=179 encontré la forma SSMS de hacer esto (UI).

Para cambiar el propietario del esquema de Sql Server Management Studio:

Expand your database -> Security -> Schemas

En los Detalles del Explorador de objetos puede ver una lista de los esquemas y los propietarios:

ingrese la descripción de la imagen aquí

Si no sabe qué esquema (s) posee el Usuario, verifique las propiedades del Usuario.

ingrese la descripción de la imagen aquí

Abra las propiedades del esquema que posee el usuario y haga clic en "Buscar" para encontrar un nuevo propietario. Si no conoce al nuevo propietario, puede "Buscar" uno.

Properites -> Search -> Browse

y puede cambiar el propietario del esquema a dbo (o el que sea más apropiado).

ingrese la descripción de la imagen aquí

Woodvi
fuente
1
La forma T-SQL es mucho mejor y flexible. ¡Hacerlo a través de GUI siempre ha sido un dolor!
Kin Shah
Estoy totalmente a favor de la forma T-SQL, también porque puede usarse en scripts.
woodvi
2
Nota: F7 es el acceso directo para mostrar detalles si no aparece
Simon_Weaver