sys.sql_modules (Transact-SQL)
Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス
ネイティブ コンパイル スカラー ユーザー定義関数を含む、SQL Server の SQL 言語定義モジュールである各オブジェクトの行を返します。 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 (インメモリ最適化)