Sdílet prostřednictvím


Zobrazení uživatelem definovaných funkcí

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed Instance

Informace o definici nebo vlastnostech uživatelem definované funkce v SQL Serveru můžete získat pomocí aplikace SQL Server Management Studio nebo jazyka Transact-SQL. Možná budete muset vidět definici funkce, abyste pochopili, jak se její data odvozují ze zdrojových tabulek, nebo abyste viděli data definovaná funkcí.

Pokud změníte název objektu odkazovaného funkcí, musíte tuto funkci upravit tak, aby jeho text odrážel nový název. Proto před přejmenováním objektu nejprve zobrazte závislosti objektu, abyste zjistili, zda jsou navrhované změny ovlivněny nějaké funkce.

Dovolení

Použití sys.sql_expression_dependencies k vyhledání všech závislostí funkce vyžaduje oprávnění VIEW DEFINITION k databázi a oprávnění SELECT pro sys.sql_expression_dependencies pro databázi. Definice systémových objektů, jako jsou ty vrácené v OBJECT_DEFINITION, jsou veřejně viditelné.

Použití aplikace SQL Server Management Studio

Zobrazení vlastností uživatelem definované funkce

  1. V Průzkumník objektůvyberte znaménko plus vedle databáze, která obsahuje funkci, do které chcete zobrazit vlastnosti, a potom výběrem znaménka plus rozbalte složku Programovatelnost.

  2. Výběrem znaménka plus rozbalte složku Functions.

  3. Vyberte znaménko plus a rozbalte složku obsahující funkci, do které chcete zobrazit vlastnosti:

    • Tabulková funkce
    • Skalárně hodnotová funkce
    • Agregační funkce
  4. Klikněte pravým tlačítkem myši na funkci, u které chcete zobrazit vlastnosti, a vyberte Vlastnosti.

    V dialogovém okně Vlastnosti funkce –function_name se zobrazí následující vlastnosti.

    Název funkce Popis
    Databáze Název databáze obsahující tuto funkci.
    Server Název aktuální instance serveru.
    Uživatel Jméno uživatele tohoto připojení.
    Datum vytvoření Zobrazí datum vytvoření funkce.
    Spustit jako Kontext spuštění funkce.
    Jméno Název aktuální funkce.
    Schéma Zobrazí schéma, které funkci vlastní.
    Systémový objekt Určuje, zda je funkce systémovým objektem. Hodnoty jsou True a False.
    Null hodnoty ANSI Označuje, zda byl objekt vytvořen pomocí možnosti NULL ANSI.
    Zakódovaný Určuje, jestli je funkce zašifrovaná. Hodnoty jsou True a False.
    Typ funkce Typ uživatelem definované funkce.
    Identifikátor uvozových hodnot Značí, zda byl objekt vytvořen s volbou citovaného identifikátoru.
    Vázané schéma Určuje, jestli je funkce svázaná se schématem. Hodnoty jsou True a False. Informace o funkcích vázaných schématem naleznete v části SCHEMABINDING CREATE FUNCTION (Transact-SQL).

Použití Transact-SQL

Získání definice a vlastností funkce

  1. V Průzkumník objektůse připojte k instanci databázového stroje.

  2. Na panelu Standard vyberte Nový dotaz.

  3. Zkopírujte a vložte jeden z následujících příkladů do okna dotazu a vyberte Spustit.

    Následující ukázka kódu získá název funkce, definici a relevantní vlastnosti.

    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
    

    Následující ukázka kódu získá definici ukázkové funkce dbo.ufnGetProductDealerPrice.

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

Další informace naleznete v tématu sys.sql_modules (Transact-SQL) a OBJECT_DEFINITION (Transact-SQL).

Získání závislostí funkce

  1. V Průzkumník objektůse připojte k instanci databázového stroje.

  2. Na panelu Standard vyberte Nový dotaz.

  3. Zkopírujte a vložte následující příklad do okna dotazu a vyberte Spustit.

    USE AdventureWorks2022;
    GO
    -- Get all of the dependency information
    SELECT OBJECT_NAME(sed.referencing_id) AS referencing_entity_name,
        o.type_desc AS referencing_description,
        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
    

Další informace naleznete v tématech sys.sql_expression_dependencies (Transact-SQL) a sys.objects (Transact-SQL).