Visualización de funciones definidas por el usuario

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Puede obtener información sobre la definición o las propiedades de una función definida por el usuario en SQL Server mediante SQL Server Management Studio o Transact-SQL. Es posible que necesite ver la definición de la función para entender cómo se derivan sus datos de las tablas de origen o para ver los datos que ella misma define.

Si cambia el nombre de un objeto al que hace referencia una función, deberá modificar esa función para que el texto refleje el nuevo nombre. Por tanto, antes de cambiar el nombre de un objeto, muestre primero las dependencias del objeto para determinar si alguna función va a verse afectada por el cambio propuesto.

Permisos

El uso de sys.sql_expression_dependencies de para buscar todas las dependencias de una función requiere el permiso VIEW DEFINITION en la base de datos y el permiso SELECT en sys.sql_expression_dependencies para la base de datos. Las definiciones de objetos del sistema, como las que se devuelven en OBJECT_DEFINITION, son visibles de forma pública.

Use SQL Server Management Studio

Mostrar las propiedades de una función definida por el usuario

  1. En Explorador de objetos, seleccione el signo más junto a la base de datos que contiene la función de la que desea ver las propiedades y, a continuación, seleccione el signo más para expandir la carpeta Programabilidad.

  2. Seleccione el signo más para expandir la carpeta Functions.

  3. Seleccione el signo más para expandir la carpeta que contiene la función de la que desea ver las propiedades:

    • Table-valued Function
    • Función con valor escalar
    • Función de agregado
  4. Haga clic con el botón derecho en la función cuyas propiedades quiere ver y seleccione Propiedades.

    Las propiedades siguientes aparecen en el cuadro de diálogo Propiedades de la función:nombre_función.

    Nombre de función Descripción
    Base de datos Nombre de la base de datos que contiene esta función.
    Servidor Nombre de la instancia de servidor actual.
    User Nombre del usuario de esta conexión.
    Fecha de creación Muestra la fecha de creación de la función.
    Ejecutar como Contexto de ejecución para la función.
    Nombre Nombre de la función actual.
    Esquema Muestra el esquema al que pertenece la función.
    Objeto de sistema Indica si la función es un objeto de sistema. Los valores son True y False.
    Valores NULL ANSI Indica si el objeto se ha creado con la opción Valores NULL ANSI.
    Cifrados Indica si la función está cifrada. Los valores son True y False.
    Tipo de función Tipo de la función definida por el usuario.
    Identificador entre comillas Indica si el objeto se ha creado con la opción Identificador entre comillas.
    Enlazada a un esquema Indica si la función está enlazada a un esquema. Los valores son True y False. Para obtener información sobre las funciones enlazadas al esquema, consulte la sección SCHEMABINDING de CREATE FUNCTION (Transact-SQL).

Uso de Transact-SQL

Obtención de la definición y las propiedades de una función

  1. En Explorador de objetos, conéctese a una instancia del motor de base de datos.

  2. En la barra Estándar, seleccione Nueva consulta.

  3. Copie y pegue uno de los ejemplos siguientes en la ventana de consulta y seleccione Ejecutar.

    El ejemplo de código siguiente obtiene el nombre de la función, la definición y las propiedades pertinentes.

    USE AdventureWorks2022;
    GO
    -- Get the function name, definition, and relevant properties
    SELECT sm.object_id,
       OBJECT_NAME(sm.object_id) AS object_name,
       o.type,
       o.type_desc,
       sm.definition,
       sm.uses_ansi_nulls,
       sm.uses_quoted_identifier,
       sm.is_schema_bound,
       sm.execute_as_principal_id
    -- using the two system tables sys.sql_modules and sys.objects
    FROM sys.sql_modules AS sm
    JOIN sys.objects AS o ON sm.object_id = o.object_id
    -- from the function 'dbo.ufnGetProductDealerPrice'
    WHERE sm.object_id = OBJECT_ID('dbo.ufnGetProductDealerPrice')
    ORDER BY o.type;
    GO
    

    El ejemplo de código siguiente obtiene la definición de la función de ejemplo dbo.ufnGetProductDealerPrice.

    USE AdventureWorks2022;
    GO
    -- Get the definition of the function dbo.ufnGetProductDealerPrice
    SELECT OBJECT_DEFINITION (OBJECT_ID('dbo.ufnGetProductDealerPrice')) AS ObjectDefinition;
    GO
    

Para obtener más información, consulte sys.sql_modules (Transact-SQL) y OBJECT_DEFINITION (Transact-SQL).

Obtención de las dependencias de una función

  1. En Explorador de objetos, conéctese a una instancia del motor de base de datos.

  2. En la barra Estándar, seleccione Nueva consulta.

  3. Copie y pegue el ejemplo siguiente en la ventana de consulta y seleccione Ejecutar.

    USE AdventureWorks2022;
    GO
    -- Get all of the dependency information
    SELECT OBJECT_NAME(sed.referencing_id) AS referencing_entity_name,
        o.type_desc AS referencing_desciption,
        COALESCE(COL_NAME(sed.referencing_id, sed.referencing_minor_id), '(n/a)') AS referencing_minor_id,
        sed.referencing_class_desc, sed.referenced_class_desc,
        sed.referenced_server_name, sed.referenced_database_name, sed.referenced_schema_name,
        sed.referenced_entity_name,
        COALESCE(COL_NAME(sed.referenced_id, sed.referenced_minor_id), '(n/a)') AS referenced_column_name,
        sed.is_caller_dependent, sed.is_ambiguous
    -- from the two system tables sys.sql_expression_dependencies and sys.object
    FROM sys.sql_expression_dependencies AS sed
    INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id
    -- on the function dbo.ufnGetProductDealerPrice
    WHERE sed.referencing_id = OBJECT_ID('dbo.ufnGetProductDealerPrice');
    GO
    

Para obtener más información, consulte sys.sql_expression_dependencies (Transact-SQL) y sys.objects (Transact-SQL).