Condividi tramite


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.