SQL Server ОТМЕНА ВХОДА

В этом руководстве вы узнаете, как использовать оператор SQL Server DROP LOGIN для удаления имени входа с сервера базы данных.

Введение в оператор SQL Server DROP LOGIN

Оператор DROP LOGIN позволяет удалить учетную запись входа SQL Server. Вот синтаксис оператора DROP LOGIN:

DROP LOGIN login_name;

В этом синтаксисе вы указываете имя пользователя, которое хотите удалить, после ключевых слов DROP LOGIN.

Обратите внимание, что вы не можете удалить логин, пока вы вошли в систему. А если логин владеет защищаемым объектом уровня сервера или заданием агента SQL Server, вы также не можете удалить этот логин.

Если учетная запись сопоставлена с пользователями базы данных и вы удалите логин, эти пользователи базы данных станут потерянными пользователями.

Пример оператора SQL Server DROP LOGIN

В следующих примерах оператора DROP LOGIN мы будем использовать базу данных BikeStores.

1) Простой пример оператора DROP LOGIN

Сначала создайте новый логин с именем jack и паролем:

CREATE LOGIN jack
WITH PASSWORD = 'iOvT84xn.';

Во-вторых, удалите логин с помощью оператора DROP LOGIN:

DROP LOGIN jack;

Выражение было успешно завершено, поскольку у логина нет зависимости. Обычно вы используете этот сценарий, когда создаете логин с неправильным предполагаемым именем.

2) Использование оператора DROP LOGIN для удаления логина, сопоставленного с пользователем базы данных.

Сначала создайте новый логин с именем joe и паролем:

CREATE LOGIN joe
WITH PASSWORD = 'NBgs23we$';

Во-вторых, создайте нового пользователя для входа joe:

CREATE USER joe
FOR LOGIN joe;

В-третьих, удалите логин joe с помощью оператора DROP LOGIN:

DROP LOGIN joe;

Пользователь joe становится сиротой.

Чтобы получить всех потерянных пользователей на текущем сервере базы данных, используйте следующий запрос:

SELECT
  dp.type_desc,
  dp.sid,
  dp.name AS user_name
FROM sys.database_principals AS dp
LEFT JOIN sys.server_principals AS sp
  ON dp.sid = sp.sid
WHERE sp.sid IS NULL
AND dp.authentication_type_desc = 'INSTANCE';

Выход:

3) Решить проблему потерянного пользователя

Чтобы разрешить проблему сиротского пользователя, вы можете воссоздать отсутствующий логин с SID пользователя базы данных. Например, следующий оператор создает новый логин ocean с SID пользователя joe:

CREATE LOGIN ocean
WITH PASSWORD = 'bNHXUYT321#',
  SID = 0xC48461C284AE024EB42149BFDBCD18A8;

Теперь пользователь joe может войти на сервер базы данных.

Если у вас уже есть логин и вы хотите сопоставить его с потерянным пользователем, вы можете использовать оператор ALTER USER. Например:

ALTER USER orphaned_user 
WITH LOGIN = login_name;

Краткое содержание

  • Используйте оператор DROP LOGIN для удаления учетной записи входа с SQL Server.
  • DROP LOGIN не может удалить учетную запись, которая вошла в систему или владеет защищаемым объектом уровня сервера или заданием агента SQL Server.
  • Удаление логина, который сопоставляется с пользователями базы данных, сделает этих пользователей базы данных «сиротами».
Мирослав С.

Автор статей, ИБ-специалист