Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Possiamo negare l'eliminazione da tabelle specifiche?

Assolutamente!

DENY DELETE ON (YourTableNameHere) TO YourUserNameHere

Vedi la meravigliosa ed ampia documentazione di MSDN Books Online per maggiori dettagli!

Se vuoi negare il DELETE autorizzazione su tutti tabelle in un database, puoi usare:

DENY DELETE TO YourUserNameHere

Oppure se hai strutturato il tuo database in modo tale che le tabelle siano raggruppate in schemi , puoi anche negare a un utente uno schema specifico.

Se non hai raggruppato le tue 90 tabelle in uno schema separato (o due, tre schemi), allora non c'è un modo facile e magico per applicare un'autorizzazione a 90 tabelle contemporaneamente. Possono essere tutti i tavoli , uno schema specifico o un oggetto database specifico (come una tabella) per DENY dichiarazione.

Aggiornamento: puoi sempre utilizzare le viste del catalogo di sistema per generare quei DENY dichiarazioni per te, quindi usa quelle di cui hai bisogno:

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

Questo produrrà come output (ad esempio in SQL Server Management Studio) un elenco di istruzioni per negare il DELETE autorizzazione del tuo utente. Copia quelle righe in un editor di testo e rimuovi quelle righe che non ti servono - e lì hai il tuo lungo elenco di DENY dichiarazioni!