sys.sql_modules (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)Endpoint di analisi SQL in Microsoft FabricWarehouse in Microsoft Fabric

Restituisce una riga per ogni oggetto che è un modulo definito dal linguaggio SQL in SQL Server, inclusa la funzione scalare definita dall'utente compilata in modo nativo. Agli oggetti di tipo P, RF, V, TR, FN, IF, TF e R è associato un modulo SQL. In questa vista anche agli oggetti predefiniti autonomi, ovvero gli oggetti di tipo D, sono associati a una definizione di modulo SQL. Per una descrizione di questi tipi, vedere la type colonna nella vista del catalogo sys.objects .

Per altre informazioni, vedere Funzioni scalari definite dall'utente per OLTP in memoria.

Nome colonna Tipo di dati Descrizione
object_id int ID dell'oggetto contenitore. Valore univoco all'interno di un database.
Definizione nvarchar(max) Testo SQL che definisce il modulo. Questo valore può essere ottenuto anche usando la funzione predefinita OBJECT_DEFINITION .

NULL = Crittografato.
uses_ansi_nulls bit Modulo creato con SET ANSI_NULLS ON.

È sempre = 0 per regole e impostazioni predefinite.
uses_quoted_identifier bit Modulo creato con SET QUOTED_IDENTIFIER ON.
is_schema_bound bit Modulo creato con l'opzione SCHEMABINDING.

Contiene sempre il valore 1 per le stored procedure compilate in modo nativo.
uses_database_collation bit 1 = La definizione del modulo associato a uno schema dipende dalle regole di confronto predefinite del database per una corretta valutazione; altrimenti, 0. Tale dipendenza impedisce la modifica delle regole di confronto predefinite del database.
is_recompiled bit Procedura creata con l'opzione WITH RECOMPILE.
null_on_null_input bit Il modulo è stato dichiarato per produrre un NULL output su qualsiasi NULL input.
execute_as_principal_id Int ID dell'entità database EXECUTE AS.

NULL per impostazione predefinita o se EXECUTE AS CALLER.

ID dell'entità specificata se EXECUTE AS edizione Standard LF o EXECUTE AS <principal>.

-2 = EXECUTE AS OWNER.
uses_native_compilation bit Si applica a: SQL Server 2014 (12.x) a SQL Server 2014 (12.x).

0 = non compilata in modo nativo

1 = compilata in modo nativo

Il valore predefinito è 0.
is_inlineable bit Si applica a: SQL Server 2019 (15.x) e versioni successive.

Indica se il modulo è inline o meno. L'inlinebilità si basa sulle condizioni specificate qui.

0 = non inline

1 = è inline.

Per le funzioni definite dall'utente scalari, il valore sarà 1 se la funzione definita dall'utente è inline e 0 in caso contrario. Contiene sempre un valore pari a 1 per le funzioni con valori di tabella inline e 0 per tutti gli altri tipi di modulo.
inline_type bit Si applica a: SQL Server 2019 (15.x) e versioni successive.

Indica se l'inlining è attivato per il modulo attualmente.

0 = l'inlining è disattivato

1 = l'inlining è attivato.

Per le funzioni scalari definite dall'utente (UDF), il valore sarà 1 se l'inlining è attivato (in modo esplicito o implicito). Il valore sarà sempre 1 per le funzioni con valori di tabella inline e 0 per altri tipi di modulo.

Osservazioni:

L'espressione SQL per un vincolo DEFAULT, oggetto di tipo D, è disponibile nella vista del catalogo sys.default_constraints . L'espressione SQL per un vincolo CHECK, oggetto di tipo C, è disponibile nella vista del catalogo sys.check_constraints .

Queste informazioni sono descritte anche in sys.dm_db_uncontained_entities (Transact-SQL).

La ridenominazione di una stored procedure, di una funzione, di una vista o di un trigger non modifica il nome dell'oggetto corrispondente nella colonna di definizione della sys.sql_modules vista del catalogo o la definizione restituita dalla funzione predefinita OBJECT_DEFINITION . Per questo motivo, è consigliabile sp_rename non usare per rinominare questi tipi di oggetto. In alternativa, eliminare e ricreare l'oggetto con il nuovo nome. Altre informazioni sono disponibili in sp_rename (Transact-SQL).

Autorizzazioni

La visibilità dei metadati nelle viste del catalogo è limitata alle entità a protezione diretta di cui un utente è proprietario o a cui l'utente ha concesso alcune autorizzazioni. Per altre informazioni, vedere Metadata Visibility Configuration.

Esempi

Nell'esempio seguente vengono restituiti i object_id, il nome dello schema, il nome dell'oggetto, il tipo di oggetto e la definizione di ogni modulo nel database corrente.

SELECT 
          sm.object_id
        , ss.[name] as [schema]
        , o.[name] as object_name
        , o.[type]
        , o.[type_desc]
        , sm.[definition]  
FROM sys.sql_modules AS sm     
JOIN sys.objects AS o 
    ON sm.object_id = o.object_id  
JOIN sys.schemas AS ss
    ON o.schema_id = ss.schema_id  
ORDER BY 
      o.[type]
    , ss.[name]
    , o.[name];  

Vedi anche

Viste del catalogo (Transact-SQL)
Viste del catalogo oggetti (Transact-SQL)
Domande frequenti sull'esecuzione di query nel catalogo di sistema di SQL Server
OLTP in memoria (ottimizzazione in memoria)