En SQL Server 2005, ¿hay alguna manera de encontrar usuarios que no existan a nivel de servidor (una cuenta que se eliminó a nivel de servidor pero que no se desasoció de las bases de datos antes de eliminarse) o cuentas que no están vinculadas (es posible que se haya eliminado una cuenta en el nivel del servidor pero no en el nivel de base de datos, luego se haya vuelto a leer, pero el nivel de base de datos nunca se limpió).
Tengo un servidor muy desordenado y sería increíble si hubiera una consulta para encontrarlos.
sql-server
sql-server-2005
users
DForck42
fuente
fuente
Respuestas:
El siguiente script del sitio Brent Ozar Unlimited recorre en iteración todas las bases de datos y enumera a los usuarios huérfanos por base de datos, junto con el comando soltar para eliminarlos. Puede haber una forma más ordenada / nueva de manejar esto, pero parece funcionar correctamente en 2005-2012.
fuente
Primero quería agradecer a Mark por publicar el guión. Me ahorró un montón de tiempo escribirlo desde cero. Lo modifiqué un poco ya que me encontré con el problema en el que recibí un error que indica que el "principal de la base de datos posee un esquema en la base de datos y no se puede descartar". Modifiqué el script para generar los comandos para el error SCHEMA y también para el error Role si usted también debe obtener ese.
Espero que esto ayude a alguien por ahí ...
fuente
Este sp_change_users_login se deprecia a partir de SQL 2008, pero aún funciona bien. Si pasa la opción 'informe', se enumerará a todos los usuarios que no tienen un inicio de sesión asociado.
Si desea ejecutarlo para todas sus bases de datos, puede hacerlo así.
Si lo busca en BOL, también encontrará opciones para reparar usuarios "huérfanos".
fuente