sys.sql_modules (Transact-SQL)

Aplica-se a: SQL Server (todas as versões com suporte) SQL do Azure Banco de Dados Instância Gerenciada de SQL do Azure Azure Synapse PDW (Analytics Analytics Platform System)

Retorna uma linha para cada objeto que é um módulo definido pela linguagem SQL em SQL Server, incluindo a função escalar definida pelo usuário compilada nativamente. Objetos de tipo P, RF, V, TR, FN, IF, TF e R têm um módulo SQL associado. Padrões autônomos, objetos de tipo D, também têm uma definição de módulo SQL nessa exibição. Para obter uma descrição desses tipos, consulte a type coluna na exibição do catálogo sys.objects .

Para obter mais informações, consulte Funções escalares definidas pelo usuário para OLTP in-memory.

Nome da coluna Tipo de dados Descrição
object_id int ID do objeto contentor. É exclusivo em um banco de dados.
Definição nvarchar(max) Texto SQL que define esse módulo. Esse valor também pode ser obtido usando a função interna OBJECT_DEFINITION .

NULL = Criptografado.
uses_ansi_nulls bit O módulo foi criado com SET ANSI_NULLS ON.

Sempre será = 0 para regras e padrões.
uses_quoted_identifier bit O módulo foi criado com SET QUOTED_IDENTIFIER ON.
is_schema_bound bit O módulo foi criado com a opção SCHEMABINDING.

Sempre contém um valor de 1 para procedimentos armazenados compilados nativamente.
uses_database_collation bit 1 = A definição de módulo associada a esquema depende do agrupamento padrão do banco de dados para avaliação correta; caso contrário, 0. Essa dependência impede a alteração da ordenação padrão do banco de dados.
is_recompiled bit O procedimento foi criado com a opção WITH RECOMPILE.
null_on_null_input bit O módulo foi declarado para produzir uma NULL saída em qualquer NULL entrada.
execute_as_principal_id Int A identificação do principal de banco de dados EXECUTE AS.

NULL por padrão ou se EXECUTAR COMO CHAMADOR.

ID da entidade de segurança especificada se EXECUTE AS SELF ou EXECUTE AS <principal>.

-2 = EXECUTE AS OWNER.
uses_native_compilation bit Aplica-se a: SQL Server 2014 (12.x) até SQL Server 2014 (12.x).

0 = não compilado originalmente

1 = é compilado originalmente

O valor padrão é 0.
is_inlineable bit Aplica-se a: SQL Server 2019 (15.x) e posterior.

Indica se o módulo é embutido ou não. A inlineability baseia-se nas condições especificadas aqui.

0 = não embutido

1 = é embutido.

Para UDFs (funções escalares definidas pelo usuário), o valor será 1 se o UDF estiver embutido e 0 de outra forma. Ele sempre contém um valor de 1 para TVFs (funções com valor de tabela) embutidos e 0 para todos os outros tipos de módulo.
inline_type bit Aplica-se a: SQL Server 2019 (15.x) e posterior.

Indica se a inlining está ativada para o módulo no momento.

0 = a inlining está desativada

1 = o encanamento está ativado.

Para UDFs (funções escalares definidas pelo usuário), o valor será 1 se o sublinhado estiver ativado (explicitamente ou implicitamente). O valor sempre será 1 para TVFs (funções com valor de tabela) embutidos e 0 para outros tipos de módulo.

Comentários

A expressão SQL para uma restrição DEFAULT, objeto do tipo D, é encontrada na exibição de catálogo sys.default_constraints . A expressão SQL de uma restrição CHECK, objeto do tipo C, é encontrada na exibição de catálogo sys.check_constraints .

Essas informações também são descritas em sys.dm_db_uncontained_entities (Transact-SQL).

Renomear um procedimento armazenado, função, exibição ou gatilho não alterará o nome do objeto correspondente na coluna de definição da exibição de sys.sql_modules catálogo ou a definição retornada pelo OBJECT_DEFINITION função interna. Por esse motivo, recomendamos que sp_rename não seja usado para renomear esses tipos de objeto. Em vez disso, cancele e recrie o objeto com o nome novo. Saiba mais em sp_rename (Transact-SQL).

Permissões

A visibilidade dos metadados em exibições do catálogo está limitada aos protegíveis que pertencem a um usuário ou para os quais o usuário recebeu permissão. Para obter mais informações, consulte Metadata Visibility Configuration.

Exemplos

O exemplo a seguir retorna o object_id, o nome do esquema, o nome do objeto, o tipo de objeto e a definição de cada módulo no banco de dados atual.

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];  

Consulte Também

Exibições do Catálogo (Transact-SQL)
Exibições do catálogo de objeto (Transact-SQL)
Consultando as perguntas frequentes do catálogo do sistema do SQL Server
OLTP na memória (otimização na memória)