Afficher les fonctions définies par l’utilisateur

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Vous pouvez obtenir des informations sur la définition ou les propriétés d’une fonction définie par l’utilisateur dans SQL Server à l’aide de SQL Server Management Studio ou de Transact-SQL. Vous devrez peut-être examiner la définition de la fonction pour comprendre comment les données de celle-ci sont issues des tables source ou pour connaître les données définies par la fonction.

Si vous modifiez le nom d'un objet auquel une fonction fait référence, vous devez modifier la fonction pour que son texte reflète le nouveau nom de l'objet. Par conséquent, avant de renommer un objet, affichez les dépendances de l'objet pour savoir si des fonctions peuvent être concernées par la modification projetée.

Autorisations

L’utilisation sys.sql_expression_dependencies de toutes les dépendances sur une fonction nécessite l’autorisation VIEW DEFINITION sur la base de données et l’autorisation SELECT sur sys.sql_expression_dependencies la base de données. Les définitions d'objets système, telles que celles retournées dans OBJECT_DEFINITION, sont visibles publiquement.

Utiliser SQL Server Management Studio

Afficher les propriétés d’une fonction définie par l’utilisateur

  1. Dans l’Explorateur d’objets, sélectionnez le signe plus en regard de la base de données contenant la fonction à laquelle vous souhaitez afficher les propriétés, puis sélectionnez le signe plus pour développer le dossier Programmability .

  2. Sélectionnez le signe plus pour développer le dossier Functions .

  3. Sélectionnez le signe plus pour développer le dossier contenant la fonction à laquelle vous souhaitez afficher les propriétés :

    • Table-valued Function
    • Fonction scalaire
    • Fonction d'agrégation
  4. Cliquez avec le bouton droit sur la fonction dont vous voulez afficher les propriétés, puis sélectionnez Propriétés.

    Les propriétés suivantes s’affichent dans la boîte de dialogue Propriétés de la fonction -nom_fonction.

    Nom de la fonction Description
    Base de données Nom de la base de données contenant cette fonction.
    Serveur Nom de l'instance actuelle du serveur.
    Utilisateur Nom de l'utilisateur de cette connexion.
    Date de création Affiche la date à laquelle la fonction a été créée.
    Exécuter en tant que Contexte d'exécution de la fonction.
    Nom  Nom de la fonction actuelle.
    Schéma Affiche le schéma auquel appartient la fonction.
    Objet système Indique si la fonction est un objet système. Les valeurs sont True et False.
    Valeurs ANSI NULL Indique si l'objet a été créé avec l'option Valeurs ANSI NULL.
    Encrypted Indique si la fonction est chiffrée. Les valeurs sont True et False.
    Type de fonction Type de la fonction définie par l'utilisateur.
    Identificateur entre guillemets Indique si l'objet a été créé avec l'option Identificateurs entre guillemets.
    Lié(e) au schéma Indique si la fonction est liée au schéma. Les valeurs sont True et False. Pour plus d’informations sur les fonctions liées au schéma, consultez la section SCHEMABINDING de CREATE FUNCTION (Transact-SQL).

Utiliser Transact-SQL

Obtenir la définition et les propriétés d’une fonction

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’un des exemples suivants dans la fenêtre de requête, puis sélectionnez Exécuter.

    L’exemple de code suivant obtient le nom de la fonction, la définition et les propriétés 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
    

    L’exemple de code suivant obtient la définition de l’exemple de fonction dbo.ufnGetProductDealerPrice.

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

Pour plus d’informations, consultez sys.sql_modules (Transact-SQL) et OBJECT_DEFINITION (Transact-SQL).

Obtenir les dépendances d’une fonction

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter.

    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
    

Pour plus d’informations, consultez sys.sql_expression_dependencies (Transact-SQL) et sys.objects (Transact-SQL).