Удалить пользователя из базы данных SQL Server? - PullRequest
24 голосов
/ 07 января 2010

Как я могу удалить пользователя из базы данных, не удаляя его логирование?

Скрипт должен проверить, существует ли пользователь в базе данных, если он есть, затем удалить пользователя.

Ответы [ 3 ]

45 голосов
/ 07 января 2010

Это то, что вы пытаетесь сделать ??

IF  EXISTS (SELECT * FROM sys.database_principals WHERE name = N'username')
DROP USER [username]

Если вы используете SQL Server Management Studio, вы можете перейти к пользователю и щелкнуть правой кнопкой мыши, выбрав delete.

1 голос
/ 07 января 2010

Вероятно, у вас должен быть просто флаг Dropped / Deleted в пользовательской таблице, которую вы установили, таким образом, сохраняя ссылочную целостность, если вы хотите сохранить информацию для этого пользователя

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

0 голосов
/ 02 марта 2019

Принятый ответ работает достаточно хорошо. Кроме того, полезно знать, что SQL Server добавил IF EXIST в некоторые команды DROP версии 2016 (13.x), включая команду * DROP USER .

ЕСЛИ СУЩЕСТВУЕТ

Применяется к : SQL Server (SQL Server 2016 (13.x) до текущей версии, база данных SQL).

Условно удаляет пользователя, только если он уже существует.

Так что вы можете просто удалить пользователя, как показано ниже:

-- Syntax for SQL Server and Azure SQL Database  
DROP USER IF EXISTS user_name  

См. Полное описание по этой ссылке: DROP USER (Transact-SQL)

Надеюсь, эта помощь.

...