Benutzerdefinierte Funktionen anzeigen

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Mithilfe von SQL Server Management Studio oder Transact-SQL können Sie Informationen über die Definition oder Eigenschaften einer benutzerdefinierten Funktion in SQL Server erhalten. Manchmal ist es erforderlich, die Definition einer Funktion anzuzeigen, um zu verstehen, wie die Daten der Funktion aus den Quelltabellen abgeleitet werden, oder um die durch die Funktion definierten Daten anzuzeigen.

Wenn Sie den Namen eines Objekts ändern, auf das eine Funktion verweist, müssen Sie den Text dieser Funktion mit dem neuen Namen aktualisieren. Bevor Sie ein Objekt umbenennen, sollten Sie daher erst die Abhängigkeiten des Objekts anzeigen, um feststellen zu können, ob Funktionen von der beabsichtigten Änderung betroffen sind.

Berechtigungen

Für sys.sql_expression_dependencies die Suche nach allen Abhängigkeiten einer Funktion ist die VIEW DEFINITION-Berechtigung für die Datenbank und die SELECT-Berechtigung sys.sql_expression_dependencies für die Datenbank erforderlich. Systemobjektdefinitionen, wie die in OBJECT_DEFINITION zurückgegebenen Definitionen, sind öffentlich sichtbar.

Verwenden Sie SQL Server Management Studio

Anzeigen der Eigenschaften einer benutzerdefinierten Funktion

  1. Wählen Sie im Objekt-Explorer das Pluszeichen neben der Datenbank aus, das die Funktion enthält, auf die Sie die Eigenschaften anzeigen möchten, und wählen Sie dann das Pluszeichen aus, um den Ordner "Programmierbarkeit " zu erweitern.

  2. Wählen Sie das Pluszeichen aus, um den Ordner "Funktionen" zu erweitern.

  3. Wählen Sie das Pluszeichen aus, um den Ordner zu erweitern, der die Funktion enthält, auf die Sie die Eigenschaften anzeigen möchten:

    • Table-valued Function
    • Skalarwertfunktion
    • Aggregatfunktion
  4. Klicken Sie mit der rechten Maustaste auf die Funktion, deren Eigenschaften Sie anzeigen möchten, und wählen Sie Eigenschaftenaus.

    Die folgenden Eigenschaften werden im Dialogfeld Funktionseigenschaften >Funktionsname angezeigt.

    Funktionsname: Beschreibung
    Datenbank Name der Datenbank, die diese Funktion enthält.
    Server Name der aktuellen Serverinstanz.
    Benutzer Name des Benutzers dieser Verbindung.
    Erstellungsdatum Zeigt das Datum an, an dem die Funktion erstellt wurde.
    Ausführen als Ausführungskontext für die Funktion.
    Name Name der aktuellen Funktion.
    Schema Zeigt das Schema an, zu dem die Funktion gehört.
    Systemobjekt Gibt an, ob es sich bei der Funktion um ein Systemobjekt handelt. Gültige Werte sind True und False.
    ANSI NULLS Gibt an, ob das Objekt mit der Option ANSI NULLS erstellt wurde.
    Verschlüsselt Gibt an, ob die Funktion verschlüsselt ist. Gültige Werte sind True und False.
    Funktionstyp Typ der benutzerdefinierten Funktion.
    Bezeichner in Anführungszeichen Gibt an, ob das Objekt mit der Option Bezeichner in Anführungszeichen erstellt wurde.
    Schema-gebunden Gibt an, ob die Funktion Schema-gebunden ist. Die Werte sind True und False. Informationen zu schemagebundenen Funktionen finden Sie im Abschnitt "SCHEMABINDING" von CREATE FUNCTION (Transact-SQL).

Verwenden von Transact-SQL

Abrufen der Definition und Eigenschaften einer Funktion

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz des Datenbankmoduls her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie eines der folgenden Beispiele, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.

    Im folgenden Codebeispiel werden der Funktionsname, die Definition und die relevanten Eigenschaften abgerufen.

    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
    

    Im folgenden Codebeispiel wird die Definition der Beispielfunktion dbo.ufnGetProductDealerPriceabgerufen.

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

Weitere Informationen finden Sie unter sys.sql_modules (Transact-SQL) und OBJECT_DEFINITION (Transact-SQL).For more information, see sys.sql_modules (Transact-SQL) and OBJECT_DEFINITION.

Abrufen der Abhängigkeiten einer Funktion

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz des Datenbankmoduls her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen.

    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
    

Weitere Informationen finden Sie unter sys.sql_expression_dependencies (Transact-SQL) und sys.objects (Transact-SQL).