No SQL Server 2005, existe uma maneira de encontrar usuários que não existem no nível do servidor (uma conta que foi excluída no nível do servidor, mas não foi desassociada dos bancos de dados antes de ser excluída) ou contas que não estão vinculadas (uma conta pode ter sido excluída no nível do servidor, mas não no nível do banco de dados, e depois lida, mas o nível do banco de dados nunca foi limpo).
Eu tenho um servidor muito confuso e seria incrível se houvesse uma consulta para executar para encontrá-los.
sql-server
sql-server-2005
users
DForck42
fonte
fonte
Respostas:
O script a seguir do site Brent Ozar Unlimited repete todos os bancos de dados e lista os usuários órfãos por banco de dados, junto com o comando drop para removê-los. Pode haver uma maneira mais clara / mais recente de lidar com isso, mas isso parece funcionar corretamente em 2005-2012.
fonte
Eu queria agradecer primeiro a Mark por postar o script. Isso me salvou muito tempo escrevendo do zero. Eu o modifiquei um pouco desde que me deparei com o problema em que recebi um erro informando o erro "o principal do banco de dados possui um esquema no banco de dados e não pode ser descartado". Modifiquei o script para gerar os comandos para o erro SCHEMA e também para o erro de função, se você também receber esse.
Espero que isto seja útil a alguém..
fonte
Esse sp_change_users_login está depreciado a partir do SQL 2008, mas ainda funciona bem. Se você passar a opção 'report', ela listará todos os usuários que não têm um login associado.
Se você deseja executá-lo para todos os seus bancos de dados, pode fazê-lo assim.
Se você procurar na BOL, também encontrará opções para corrigir usuários "órfãos".
fonte