Exibindo definições de objeto

As regras para exibição do código-fonte Transact-SQL de objetos de banco de dados são mais rígidos do que para a exibição de metadados. Para consultar a definição Transact-SQL de um objeto, um usuário deve possuir o objeto ou ter uma das seguintes permissões no objeto:

  • CONTROL

  • ALTER

  • TAKE OWNERSHIP

  • VIEW DEFINITION

Os itens seguintes são exemplos de como essas regras funcionam:

  • Se for concedido permissão ALTER a um usuário na tabela myTable, o usuário poderá ver a definição Transact-SQL dos subcomponentes relacionados à tabela na coluna definição em cada uma das exibições do catálogo listadas na tabela a seguir. Se um usuário não tiver uma das permissões anteriores ou não possuir o objeto, a definição Transact-SQL na coluna definição da exibição de catálogo será NULL.

  • Se o usuário não for o proprietário da tabela myTable e tiver apenas permissão SELECT na tabela, quando ele acessar as exibições seguintes do catálogo, as colunas definição serão NULL.

    Nome de exibição de catálogo

    Definições Transact-SQL para

    sys.sql_modules

    Todos os gatilhos em mytable

    sys.computed_columns

    Toda a coluna computada em myTable

    sys.check_constraints

    Todas as restrições CHECK em myTable

    sys.default_constraints

    Todas as restrições DEFAULT em myTable

  • Pressuponha que seja concedido a um usuário permissão EXECUTE no procedimento myProcedure. Quando o usuário tenta ver a definição Transact-SQL do procedimento acessando o catálogo de exibiçãosys.sql_modules, a coluna definição tem um valor nulo. Inversamente, se foi concedido ao usuário permissão TAKE OWNERSHIP em myProcedure, o usuário verá a definição Transact-SQL do procedimento na coluna definição de sys.sql_modules.