• Imprimir

Talvez você decida apagar um usuário e receba esta mensagem   :

 

The database principal owns a schema in the database, and cannot be dropped.

 

Isto ocorrei porque este usuário é dono de um schema.

Neste caso a maneira mais simples e transferi este usuário de schema e depois deletá-lo.

 

 tipo assim :

 

GO
ALTER AUTHORIZATION ON SCHEMA::SCHEMA_NOME TO USUÁRIO;
go dropuser USUÁRIO
go

 

Como geralmente este tipo de erro acontece referenciando usuários do domínio que acabam recebendo um schema com seu nome vai a dica :

 

alter authorization

on schema::[dominio\usuario]

to dbo

go

 

drop user [dominio\usuario]

go

 

 

Agora Se o usuário chato demais não morre....

1.) Descubra o schema problemático com a seguinte consulta : 

USE << SEU BANQUINHO >> ;

SELECT s.name FROM sys.schemas s WHERE s.principal_id = USER_ID('<< usuário chato demais >>');

 

2.) Em seguida altere a autorização do schema que apareceu no resultado da consulta do passo 1.

-- Assim :

ALTER AUTHORIZATION ON SCHEMA::nome do schema do usuário TO dbo; -- o usuário acaba de ser o cara.  

Exs :

ALTER AUTHORIZATION ON SCHEMA::db_ddladmin TO dbo;

ALTER AUTHORIZATION ON SCHEMA::db_datareader TO dbo;

ALTER AUTHORIZATION ON SCHEMA::db_datawriter TO dbo;

ALTER AUTHORIZATION ON SCHEMA::db_accessadmin TO dbo;

 

3.) Mate sem do o << usuário chato demais >>

 

drop USER  << usuário chato demais >>

 

 

 


OUTRA DICA  CASO VOCÊ ESTEJA RECEBENDO O CÓDIGO DE ERRO 

 

SELECT session_id FROM sys.dm_exec_sessions WHERE login_name = '<<<< NOME DO USUÁRIO CHATO >>>>>'

 

Sera listado os processos do usuario chato e ai é só matar o processo com kill exemplo

kill numero do processo(s) do usuario chato 

 

Depois 

DROP LOGIN <<<< NOME DO USUÁRIO CHATO >>>>>

 

 


 

Maiores informações :

Ref : https://msdn.microsoft.com/pt-br/library/ms187359.aspx