Estou tentando excluir um principal do banco de dados, mas não consigo porque ele possui um esquema. Quando vou editar o usuário, porém, a caixa para desmarcar esquemas fica azul e irremovível. Como posso remover o principal desses esquemas?
relate perguntas
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Quanto "Padding" coloco em meus índices?
-
Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?
-
Como determinar se um Índice é necessário ou necessário
-
Downgrade do SQL Server 2008 para 2005
Tente o T-SQL para fazer isso:
Você não pode descartar um principal que é um proprietário de esquema, portanto,
ALTER AUTHORZATION
altera o esquema de propriedade (eu useiYourSchemaName
, mas obviamente substitui-o pelo esquema de propriedade em seu banco de dados) paradbo
(da mesma forma, você pode alterar a propriedade para qualquer principal necessário em seu meio Ambiente). Isso permitirá que você elimine o usuário proprietário do esquema anterior (por exemplo, para fins que useiTheUserYouWantToDelete
, mas esse será o agora não proprietário que você deseja descartar).A maneira T-SQL funciona. Graças a http://zarez.net/?p=179 encontrei a maneira SSMS de fazer isso (UI).
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 qual(is) esquema(s) 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, você pode "Procurar" por um.
e você pode alterar o proprietário do esquema para dbo (ou quem for mais apropriado).
Já foi mostrado antes que, antes de descartar um usuário, você precisa reatribuir qualquer esquema ao qual ele possa possuir
dbo
conforme o exemplo abaixo:No entanto, às vezes, o usuário que você deseja excluir tem mais de um esquema atribuído a ele. Você pode encontrar todos os esquemas pertencentes a um usuário específico usando este script:
Apenas uma observação: No exemplo acima, o usuário
mathura\radhe
tem vários esquemas, incluindodb_owner
embora esse usuário NÃO seja o proprietário do banco de dados desse banco de dados em particular.Abaixo está uma visão parcial do script que uso para me preparar para soltar um usuário em um banco de dados.
Há outras coisas a serem consideradas - pois elas não estão incluídas neste script:
Sempre verifique se você está no servidor correto e no banco de dados correto antes de executar este script
então copio o script gerado na coluna RESET_SCHEMA:
e as outras colunas também contêm informações significativas. espero que isto ajude