Qual è un ruolo minimo di SQL Server che consente la creazione / eliminazione di trigger?
-
10-07-2019 - |
Domanda
Prerequisiti:
Esiste un'applicazione client / server scritta in Delphi32. RDBMS è SQL Server 2005. Una determinata funzionalità dell'applicazione richiede la creazione / eliminazione di trigger (dall'applicazione mediante istruzioni DDL ad hoc) nel database di destinazione.
Problema:
Se un utente appartiene a ruoli amministratore di sistema, non vi è alcun problema a creare / eliminare i trigger. Tuttavia, questo è considerato un ruolo troppo permissivo per un utente dell'applicazione.
Domande:
- Qual è il ruolo minimo standard (ovvero il più restrittivo) di SQL Server che potrebbe essere utilizzato per la creazione / eliminazione dei trigger?
- La creazione di un ruolo personalizzato, anziché l'utilizzo di ruoli standard, costituirebbe un approccio più fine per risolvere questo problema?
Soluzione
Esistono varie opzioni a seconda dell'ambito della concessione (qualsiasi trigger in un database, uno in uno schema o una tabella specifica).
Generalmente le autorizzazioni richieste per un'operazione SQL sono documentate nel riferimento SQL. Per esempio. per CREATE TRIGGER
su SQL 2008 vedere qui (scorrere fino a " ; Autorizzazioni "), in questo caso:
Il trigger DML richiede la persecuzione ALTER nella tabella o nella vista in cui deve essere creato il trigger
Puoi creare un ruolo concesso solo con le autorizzazioni che desideri e quindi aggiungere utenti / gruppi a quel ruolo, quindi il ruolo minimo è quello che crei con l'accesso specifico che desideri consentire ai suoi membri.