В этом руководстве вы узнаете, как использовать оператор 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.
- Удаление логина, который сопоставляется с пользователями базы данных, сделает этих пользователей базы данных «сиротами».