В SQL Server 2005 есть способ найти пользователей, которые либо не существуют на уровне сервера (учетная запись, которая была удалена на уровне сервера, но не была отсоединена от баз данных до ее удаления), либо учетные записи, которые не связаны (учетная запись могла быть удалена на уровне сервера, но не на уровне базы данных, а затем прочитана, но уровень базы данных никогда не очищался).
У меня очень грязный сервер, и было бы здорово, если бы был запрос, чтобы найти их.
sql-server
sql-server-2005
users
DForck42
источник
источник
Ответы:
Следующий скрипт с сайта Brent Ozar Безлимитный перебирает все базы данных и списки пользователей , утратившие по базе данных, вместе с командой капли , чтобы удалить их. Может быть более аккуратный / более новый способ справиться с этим, но это, кажется, работает правильно на 2005-2012.
источник
Я хотел сначала СПАСИБО Марку за публикацию сценария. Это сэкономило мне кучу времени, написав это с нуля. Я немного изменил его, так как столкнулся с проблемой, когда я получил сообщение об ошибке «участник базы данных владеет схемой в базе данных и не может быть удален». Я изменил скрипт, чтобы сгенерировать команды для ошибки SCHEMA, а также для ошибки Role, если вы также должны ее получить.
Надеюсь, это поможет кому-то там ..
источник
Это sp_change_users_login устарело с SQL 2008, но все еще работает хорошо. Если вы передадите опцию «report», то в ней будут перечислены все пользователи, у которых нет связанных логинов.
Если вы хотите запустить его для всех своих баз данных, вы можете сделать это следующим образом.
Если вы посмотрите на BOL, вы также найдете варианты исправления «осиротевших» пользователей.
источник