O principal do banco de dados possui um esquema no banco de dados e não pode ser descartado.
28
Estou tentando excluir uma entidade do banco de dados, mas não pode porque ela possui um esquema. Quando vou editar o usuário, no entanto, a caixa para desmarcar os esquemas é azul e irremovível. Como posso remover o principal desses esquemas?
alterauthorizationonschema::YourSchemaName
to dbo
go
dropuser TheUserYouWantToDelete
go
Você não pode descartar um principal que seja o proprietário do esquema; portanto, isso ALTER AUTHORZATIONaltera o esquema de propriedade (eu usei YourSchemaName, mas obviamente substituo pelo esquema de propriedade do banco de dados) para dbo(da mesma forma, você pode alterar a propriedade para qualquer objeto de que precise meio Ambiente). Isso permitirá que você descarte o usuário que possui o esquema anteriormente (por exemplo, fins que eu usei TheUserYouWantToDelete, mas esse será o agora não proprietário que você deseja excluir).
Ok, então isso funcionou. Estou um pouco confuso sobre o porquê, no entanto. Por que preciso autorizar o esquema para outro esquema? Talvez eu necessidade de rever esquemas ...
rsteckly
11
@rsteckly Simplificado, autorização = propriedade. Se você pudesse excluir o usuário que possui o esquema, o esquema não seria válido, porque o proprietário não existe mais. Imagine que você pode excluir um cliente que fez um pedido. O que significa a Identificação do Cliente na tabela Pedidos, se não houver mais um Cliente para o qual aponte? Para onde devo enviar o pedido?
Aaron Bertrand
Desculpe, meu exemplo não foi bem explicado. Não estamos alterando a autorização para o dboesquema, estamos alterando a autorização para o dboprincipal. Isso poderia ter sido qualquer objeto de banco de dados.
Thomas Stringer
30
A maneira T-SQL funciona. Graças a
http://zarez.net/?p=179
, encontrei a maneira SSMS de fazer isso (interface do usuário).
Para alterar o proprietário do esquema do Sql Server Management Studio:
Expand your database-> Security -> Schemas
Nos Detalhes do Pesquisador de Objetos, você pode ver uma lista dos esquemas e dos proprietários:
Se você não souber quais esquemas o Usuário possui, verifique as propriedades do Usuário.
Abra as propriedades do esquema que o Usuário possui e clique em "Pesquisar" para encontrar um novo proprietário. Se você não conhece o novo proprietário, pode "Procurar" por um.
Properites -> Search ->Browse
e você pode alterar o proprietário do esquema para dbo (ou quem for mais apropriado).
dbo
esquema, estamos alterando a autorização para odbo
principal. Isso poderia ter sido qualquer objeto de banco de dados.A maneira T-SQL funciona. Graças a http://zarez.net/?p=179 , encontrei a maneira SSMS de fazer isso (interface do usuário).
Para alterar o proprietário do esquema do Sql Server Management Studio:
Nos Detalhes do Pesquisador de Objetos, você pode ver uma lista dos esquemas e dos proprietários:
Se você não souber quais esquemas o Usuário possui, verifique as propriedades do Usuário.
Abra as propriedades do esquema que o Usuário possui e clique em "Pesquisar" para encontrar um novo proprietário. Se você não conhece o novo proprietário, pode "Procurar" por um.
e você pode alterar o proprietário do esquema para dbo (ou quem for mais apropriado).
fonte