Visualizzazione delle definizioni degli oggetti
Le regole per la visualizzazione del codice sorgente Transact-SQL degli oggetti del database sono più severe di quelle per la visualizzazione dei metadati. Per visualizzare la definizione Transact-SQL di un oggetto, l'utente deve essere il proprietario dell'oggetto oppure disporre di una delle autorizzazioni seguenti per l'oggetto:
CONTROL
ALTER
TAKE OWNERSHIP
VIEW DEFINITION
Di seguito vengono riportati alcuni esempi di funzionamento di tali regole:
Se all'utente viene concessa l'autorizzazione ALTER per una tabella myTable, l'utente può visualizzare la definizione Transact-SQL dei sottocomponenti correlati alla tabella nella colonna definition di tutte le viste del catalogo incluse nella tabella seguente. Se l'utente non dispone di alcuna delle autorizzazioni indicate sopra o non è il proprietario dell'oggetto, la definizione Transact-SQL nella colonna definition della vista del catalogo ha un valore Null.
Se l'utente non è il proprietario della tabella myTable e dispone solo dell'autorizzazione SELECT per tale tabella, quando l'utente accede alle viste del catalogo seguenti, le colonne definition hanno valori NULL.
Nome della vista del catalogo
Definizioni Transact-SQL per
sys.sql_modules
Tutti i trigger in mytable
sys.computed_columns
Tutte le colonne calcolate in myTable
sys.check_constraints
Tutti i vincoli CHECK in myTable
sys.default_constraints
Tutti i vincoli DEFAULT in myTable
Se ad esempio all'utente viene concessa l'autorizzazione EXECUTE per la procedura myProcedure, quando l'utente tenta di visualizzare la definizione Transact-SQL della procedura accedendo alla vista del catalogo sys.sql_modules, la colonna definition contiene un valore Null. L'utente a cui invece è stata concessa l'autorizzazione TAKE OWNERSHIP per la procedura myProcedure può visualizzare la definizione Transact-SQL della procedura nella colonna definition di sys.sql_modules.