sys.sql_modules (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

SQL Server の SQL 言語で定義されたモジュールであるオブジェクトごとに 1 行を返します (ネイティブ コンパイルされたスカラー ユーザー定義関数を含む)。 P、RF、V、TR、FN、IF、TF、R 型のオブジェクトには、SQL モジュールが関連付けられています。 スタンドアロンの既定値である種類 D のオブジェクトにも、このビューで SQL モジュール定義が関連付けられています。 これらの型の説明については、sys.objects カタログ ビューの type 列を参照してください。

詳しくは、「インメモリ OLTP でのユーザー定義のスカラー関数」をご覧ください。

列名 データ型 説明
object_id int このオブジェクトが属するオブジェクトの ID です。 データベース内で一意です。
definition nvarchar(max) このモジュールを定義する SQL テキスト。 この値は、OBJECT_DEFINITION 組み込み関数を使って取得することもできます。

NULL = 暗号化されています。
uses_ansi_nulls bit モジュールは、SET ANSI_NULLS ON で作成されました。

ルールと既定値の場合は常に = 0 です。
uses_quoted_identifier bit モジュールは、SET QUOTED_IDENTIFIER ON の状態で作成されました。
is_schema_bound bit モジュールは、SCHEMABINDING オプションを使って作成されました。

ネイティブ コンパイル ストアド プロシージャの場合は、常に 1 という値が含まれます。
uses_database_collation bit スキーマ バインドのモジュール定義が適切な評価のためにデータベースの既定の照合順序に依存する場合は 1 になります。それ以外の場合は 0 になります。 このような依存関係によって、データベースの既定の照合順序の変更が防がれます。
is_recompiled bit プロシージャは、WITH RECOMPILE オプションを使って作成されました。
null_on_null_input bit モジュールは、NULL 入力に対して NULL 出力を生成するように宣言されました。
execute_as_principal_id Int EXECUTE AS データベース プリンシパルの ID。

既定、または EXECUTE AS CALLER の場合は、NULL です。

EXECUTE AS SELF または EXECUTE AS <principal> の場合は、指定したプリンシパルの ID になります。

-2 = EXECUTE AS OWNER。
uses_native_compilation bit 適用対象: SQL Server 2014 (12.x) から SQL Server 2014 (12.x)。

0 = ネイティブでコンパイルされていない

1 = ネイティブでコンパイルされています

既定値は 0 です。
is_inlineable bit 適用対象: SQL Server 2019 (15.x) 以降。

モジュールがインライン化できるかどうかを示します。 インライン化できるかどうかは、こちらで指定される条件に基づきます。

0 = インライン化できません

1 = インライン化できます。

スカラー ユーザー定義関数 (UDF) については、UDF がインライン化できる場合はこの値は 1、それ以外の場合は 0 になります。 インライン テーブル値関数 (TVF) の場合は常に 1 という値が、その他すべてのモジュール型の場合は 0 が含まれます。
inline_type bit 適用対象: SQL Server 2019 (15.x) 以降。

現在モジュールのインライン化が有効になっているかどうかを示します。

0 = インライン化は無効です

1 = インライン化は有効です。

スカラー ユーザー定義関数 (UDF) については、インライン化が (明示的または暗黙的に) 有効になっている場合、値は 1 になります。 この値は、インライン テーブル値関数 (TVF) の場合は常に 1 に、他のモジュール型の場合は 0 になります。

解説

DEFAULT 制約 (型 D のオブジェクト) の SQL 式は、sys.default_constraints カタログ ビューで確認できます。 CHECK 制約 (型 C のオブジェクト) の SQL 式は、sys.check_constraints カタログ ビューで確認できます。

この情報については、「sys.dm_db_uncontained_entities (Transact-SQL)」でも説明されています。

ストアド プロシージャ、関数、ビュー、またはトリガーの名前を変更しても、sys.sql_modules カタログ ビューの definition 列にある対応するオブジェクトの名前、または OBJECT_DEFINITION 組み込み関数によって返される定義は変更されません。 そのため、これらのオブジェクトの種類の名前を変更する場合は、sp_rename を使わないことをお勧めします。 代わりに、オブジェクトを削除して新しい名前で再作成してください。 詳しくは、「sp_rename (Transact-SQL)」を参照してください。

アクセス許可

カタログ ビューでのメタデータの可視性は、ユーザーが所有しているか、ユーザーに何らかのアクセス許可が付与されたセキュリティ保護可能なリソースに限定されます。 詳細については、「 Metadata Visibility Configuration」を参照してください。

次の例では、現在のデータベースの各モジュールの object_id、スキーマ名、オブジェクト名、オブジェクトの種類、定義が返されます。

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

参照

カタログ ビュー (Transact-SQL)
オブジェクト カタログ ビュー (Transact-SQL)
SQL Server システム カタログに対するクエリに関してよく寄せられる質問
インメモリ OLTP (インメモリ最適化)