web-dev-qa-db-fra.com

Supprimer l'utilisateur de la base de données SQL Server?

Comment supprimer un utilisateur d'une base de données sans supprimer sa journalisation?

Le script doit vérifier si l'utilisateur existe dans la base de données, s'il le fait, puis supprimer l'utilisateur.

26
sanjeev40084

C'est ce que vous essayez de faire ??

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

Si vous utilisez SQL Server Management Studio, vous pouvez rechercher l'utilisateur et cliquer avec le bouton droit de la souris sur Supprimer.

48
doug_w

Vous devez probablement simplement avoir un indicateur Dropped/Deleted sur la table utilisateur que vous définissez, maintenant ainsi l'intégrité référentielle si vous souhaitez conserver les informations de journalisation pour cet utilisateur.

Sinon, il semble que vous deviez supprimer une contrainte de clé étrangère qui empêche la suppression actuellement, mais je ne recommanderais pas cela.

2
jamesaharvey

La réponse acceptée fonctionne assez bien. De plus, il est bon de savoir que SQL Server a ajouté IF EXIST à certaines commandes DROP de la version 2016 (13.x), y compris ' DROP USER 'command.

IF EXISTS

S'applique à : SQL Server (SQL Server 2016 (13.x) via la version actuelle, SQL Database).

Supprime conditionnellement l'utilisateur uniquement s'il existe déjà.

Vous pouvez donc simplement supprimer l'utilisateur comme ci-dessous:

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

Voir la description complète dans ce lien: DROP USER (Transact-SQL)

J'espère que cette aide.

1
QMaster