Visualizzare funzioni definite dall'utente

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

È possibile acquisire informazioni sulla definizione o le proprietà di una funzione definita dall'utente in SQL Server tramite SQL Server Management Studio o Transact-SQL. Potrebbe essere necessario visualizzare la definizione della funzione per determinare come vengono derivati i dati dalle tabelle di origine o per visualizzare i dati definiti dalla funzione.

Se si cambia il nome di un oggetto a cui viene fatto riferimento da una funzione, è necessario modificare la funzione in modo che per il relativo testo venga fatto riferimento al nuovo nome. Pertanto, prima di rinominare un oggetto, visualizzare le dipendenze dell'oggetto per determinare se la modifica proposta interessa eventuali funzioni.

Autorizzazioni

L'utilizzo di sys.sql_expression_dependencies per individuare tutte le dipendenze in una funzione richiede l'autorizzazione VIEW DEFINITION sul database e l'autorizzazione SELECT su sys.sql_expression_dependencies per il database. Le definizioni dell'oggetto di sistema, come quelle restituite in OBJECT_DEFINITION sono visibili pubblicamente.

Usare SQL Server Management Studio

Mostrare le proprietà di una funzione definita dall'utente

  1. In Esplora oggetti fare clic sul segno più accanto al database contenente la funzione in cui si desidera visualizzare le proprietà, quindi fare di nuovo clic sul segno più per espandere la cartella Programmabilità.

  2. Fare clic sul segno più per espandere la cartella Funzioni.

  3. Fare clic sul segno più per espandere la cartella che contiene la funzione di cui si desidera visualizzare le proprietà:

    • Table-valued Function
    • Funzione a valori scalari
    • Funzione di aggregazione
  4. Fare clic con il pulsante destro del mouse sulla funzione di cui si vogliono visualizzare le proprietà e scegliere Proprietà.

    Le proprietà seguenti vengono visualizzate nella finestra di dialogo Proprietà funzione -nome_funzione.

    Nome della funzione Descrizione
    Database Nome del database che contiene la funzione.
    Server Nome dell'istanza del server corrente.
    User Nome dell'utente della connessione.
    Data creazione Visualizza la data di creazione della funzione.
    Esecuzione come Contesto di esecuzione per la funzione.
    Nome Nome della funzione corrente.
    Schema Visualizza lo schema proprietario della funzione.
    Oggetto di sistema Indica se la funzione è un oggetto di sistema. I valori sono True e False.
    ANSI NULLs Indica se l'oggetto è stato creato con l'opzione ANSI NULLs.
    Encrypted Indica se la funzione è crittografata. I valori sono True e False.
    Tipo di funzione Tipo della funzione definita dall'utente.
    Identificatore delimitato Indica se l'oggetto è stato creato con l'opzione quoted identifier.
    Associata a schema Indica se la funzione è associata allo schema. I valori sono True e False. Per informazioni sulle funzioni associate a schema, vedere la sezione relativa a SCHEMABINDING in CREATE FUNCTION (Transact-SQL).

Usare Transact-SQL

Acquisire la definizione e le proprietà di una funzione

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare uno degli esempi seguenti nella finestra della query, quindi fare clic su Esegui.

    L'esempio di codice seguente ottiene il nome della funzione, la definizione e le proprietà pertinenti.

    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'esempio di codice seguente ottiene la definizione della funzione di esempio dbo.ufnGetProductDealerPrice.

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

Per altre informazioni, vedere sys.sql_modules (Transact-SQL) e OBJECT_DEFINITION (Transact-SQL).

Acquisire le dipendenze di una funzione

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui.

    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
    

Per altre informazioni, vedere sys.sql_expression_dependencies (Transact-SQL) e sys.objects (Transact-SQL).