SQL Server DROP ПОЛЬЗОВАТЕЛЬ

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

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

Оператор DROP USER позволяет удалить пользователя из текущей базы данных. Вот синтаксис оператора DROP USER:

DROP USER [IF EXISTS] user_name;

В этом синтаксисе вы указываете имя пользователя, которого хотите удалить, после ключевого слова DROP USER. Если пользователь не существует в текущей базе данных, оператор DROP USER не будет выполнен.

Чтобы избежать этого, можно использовать опцию IF EXISTS. Опция IF EXISTS условно удаляет пользователя, если он уже существует.

Оператор DROP USER не может удалить пользователя, владеющего защищаемыми объектами. Чтобы удалить пользователя, владеющего защищаемыми объектами, вам необходимо:

  • Удалить защищаемые объекты или передать право собственности на эти защищаемые объекты другому пользователю.
  • Удалите пользователя.

Оператор DROP USER также не может удалить гостевого пользователя. Однако вы можете отключить гостевого пользователя, отозвав разрешение CONNECT. Следующий оператор отменяет разрешение CONNECT у гостевого пользователя:

REVOKE CONNECT FROM GUEST;

Обратите внимание, что приведенный выше оператор выполняется в любых базах данных, кроме master или tempdb:

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

Мы будем использовать образец базы данных BikeStores для следующего примера оператора DROP USER.

1) Использование DROP USER для удаления пользователя в текущем примере базы данных

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

CREATE LOGIN jin
WITH PASSWORD ='uJIKng12.';

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

CREATE USER jin
FOR LOGIN jin;

В-третьих, удалите пользователя jin из текущей базы данных:

DROP USER IF EXISTS jin;

2) Удалить пользователя, которому принадлежит защищаемый пример

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

CREATE LOGIN anthony
WITH PASSWORD ='uNMng78!';

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

CREATE USER tony
FOR LOGIN anthony;

В-третьих, создайте схему с именем report и предоставьте полномочия пользователю tony:

CREATE SCHEMA report 
AUTHORIZATION tony;

В-четвертых, подключитесь к SQL Server, используя логин anthony, и создайте таблицу с именем daily_sales в отчете схемы:

USE BikeStores;
CREATE TABLE report.daily_sales(
 Id INT IDENTITY PRIMARY KEY,
 Day DATE NOT NULL,
 Amount DECIMAL(10,2) NOT NULL DEFAULT 0
)

В-пятых, переключите подключение на учетную запись системного администратора(sa) и удалите пользователя tony:

DROP USER tony;

SQL Server выдал следующую ошибку:

The database principal owns a schema in the database, and cannot be dropped.

Поскольку пользователем tony является владелец отчета схемы, оператор DROP USER не может его удалить.

Чтобы удалить пользователя tony, вам необходимо сначала передать авторизацию отчета схемы другому пользователю. Например, следующий оператор изменяет авторизацию отчета схемы на пользователя dbo:

ALTER AUTHORIZATION 
ON SCHEMA::report 
TO dbo;

Если вы выполните оператор DROP USER для удаления пользователя tony, вы увидите, что он выполняется успешно:

DROP USER tony;

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

  • Используйте оператор DROP USER для удаления пользователя в текущей базе данных.
  • Если пользователь владеет одним или несколькими защищаемыми объектами, перед удалением пользователя необходимо передать право собственности на защищаемые объекты другому пользователю.
Мирослав С.

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