Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Können wir das Löschen aus bestimmten Tabellen verweigern?

Absolut!

DENY DELETE ON (YourTableNameHere) TO YourUserNameHere

Siehe die wunderbaren und umfangreichen MSDN Books Online-Dokumentationen für mehr Details!

Wenn Sie das DELETE verweigern möchten Berechtigung für alle Tabellen in einer Datenbank können Sie verwenden:

DENY DELETE TO YourUserNameHere

Oder wenn Sie Ihre Datenbank so strukturiert haben, dass die Tabellen in Schemata gruppiert sind , dann können Sie einem Benutzer auch ein bestimmtes Schema verweigern.

Wenn Sie Ihre 90 Tabellen nicht in einem separaten Schema (oder zwei, drei Schemata) gruppiert haben, dann gibt es keinen einfachen, magischen Weg um eine Berechtigung auf 90 Tabellen gleichzeitig anzuwenden. Es sind entweder alle Tabellen , ein bestimmtes Schema oder ein bestimmtes Datenbankobjekt (wie eine Tabelle) per DENY Aussage.

Aktualisierung: Sie können immer die Systemkatalogansichten verwenden, um diese DENY zu generieren Anweisungen für Sie, und verwenden Sie dann die, die Sie benötigen:

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

Dies erzeugt als Ausgabe (z. B. in SQL Server Management Studio) eine Liste von Anweisungen, um das DELETE zu verweigern Erlaubnis von Ihrem Benutzer. Kopieren Sie diese Zeilen in einen Texteditor und entfernen Sie die Zeilen, die Sie nicht benötigen – und schon haben Sie Ihre lange Liste von DENY Aussagen!