Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Pouvons-nous refuser la suppression de tables spécifiques ?

Absolument !

DENY DELETE ON (YourTableNameHere) TO YourUserNameHere

Voir la merveilleuse et complète documentation MSDN Books Online pour plus de détails !

Si vous souhaitez refuser la DELETE autorisation sur tous tables dans une base de données, vous pouvez utiliser :

DENY DELETE TO YourUserNameHere

Ou si vous avez structuré votre base de données de manière à ce que les tables soient regroupées en schémas , vous pouvez également refuser un utilisateur d'un schéma spécifique.

Si vous n'avez pas regroupé vos 90 tables dans un schéma séparé (ou deux, trois schémas), alors il n'y a pas de moyen simple et magique pour appliquer une permission à 90 tables à la fois. C'est soit toutes les tables , un schéma spécifique ou un objet de base de données spécifique (comme une table) par DENY déclaration.

Mise à jour : vous pouvez toujours utiliser les vues du catalogue système pour générer ces DENY déclarations pour vous, puis utilisez celles dont vous avez besoin :

SELECT 
    'DENY DELETE ON ' + t.NAME + ' TO (youruser)'
FROM sys.tables t

Cela produira en sortie (par exemple dans SQL Server Management Studio) une liste d'instructions pour refuser le DELETE l'autorisation de votre utilisateur. Copiez ces lignes dans un éditeur de texte et supprimez les lignes dont vous n'avez pas besoin - et vous avez là votre longue liste de DENY déclarations !