Ver definiciones de objetos

Las reglas para ver el código fuente Transact-SQL de los objetos de base de datos son más estrictas que para ver metadatos. Para ver la definición Transact-SQL de un objeto, éste debe pertenecer al usuario, o bien el usuario debe disponer de uno de los siguientes permisos en el objeto:

  • CONTROL

  • ALTER

  • TAKE OWNERSHIP

  • VIEW DEFINITION

A continuación se ofrecen algunos ejemplos de cómo funcionan estas reglas:

  • Si un usuario dispone del permiso ALTER en una tabla myTable, puede ver la definición Transact-SQL de los subcomponentes relacionados con la tabla en la columna definition de las vistas de catálogo incluidas en la tabla siguiente. Si el usuario no dispone de uno de los permisos anteriores ni le pertenece el objeto, la definición Transact-SQL en la columna definition de la vista de catálogo es NULL.

  • Si el usuario no es el propietario de la tabla myTable y sólo dispone del permiso SELECT en la tabla, cuando obtiene acceso a las siguientes vistas de catálogo, las columnas definition son NULL.

    Nombre de la vista de catálogo

    Definiciones Transact-SQL para

    sys.sql_modules

    Todos los desencadenadores de myTable

    sys.computed_columns

    Todas las columnas calculadas de myTable

    sys.check_constraints

    Todas las restricciones CHECK de myTable

    sys.default_constraints

    Todas las restricciones DEFAULT de myTable

  • Imagine que un usuario dispone del permiso EXECUTE en el procedimiento myProcedure. Cuando intenta ver la definición Transact-SQL del procedimiento desde la vista de catálogo sys.sql_modules, la columna definition muestra un valor NULL. Por el contrario, si el usuario dispone del permiso TAKE OWNERSHIP en myProcedure, verá la definición Transact-SQL del procedimiento en la columna definition de sys.sql_modules.