次の方法で共有


sys.objects (Transact-SQL)

データベース内で作成されるユーザー定義のスキーマ スコープ オブジェクトごとに 1 行のデータを格納します。

注意

DDL トリガーはスキーマ スコープではないため、sys.objects では表示されません。 DML と DDL の両方を含むすべてのトリガーは、sys.triggers に格納されます。 sys.triggers には、さまざまな種類のトリガーの名前スコープ ルールを混在させて格納できます。

列名

データ型

説明

name

sysname

オブジェクト名。

object_id

int

オブジェクト ID 番号。 データベース内で一意です。

principal_id

int

スキーマの所有者と異なる場合の所有者の ID。 既定では、スキーマに含まれるオブジェクトは、スキーマの所有者によって所有されます。 ただし、ALTER AUTHORIZATION ステートメントを使用して所有権を変更することにより、別の所有者を指定できます。

別の所有者がいない場合は NULL になります。

オブジェクトの型が次のいずれかの場合は NULL になります。

C = CHECK 制約

D = DEFAULT (制約またはスタンドアロン)

F = FOREIGN KEY 制約

PK = PRIMARY KEY 制約

R = ルール (旧形式、スタンドアロン)

TA = アセンブリ (CLR 統合) トリガー

TR = SQL トリガー

UQ = UNIQUE 制約

schema_id

int

オブジェクトが含まれているスキーマの ID。

スキーマ スコープ システム オブジェクトは、常に sys スキーマまたは INFORMATION_SCHEMA スキーマに含まれています。

parent_object_id

int

このオブジェクトが所属するオブジェクトの ID です。

0 = 子オブジェクトではありません。

type

char(2)

オブジェクトの種類です。

AF = 集計関数 (CLR)

C = CHECK 制約

D = DEFAULT (制約またはスタンドアロン)

F = FOREIGN KEY 制約

FN = SQL スカラー関数

FS = アセンブリ (CLR) スカラー関数

FT = アセンブリ (CLR) テーブル値関数

IF = SQL インライン テーブル値関数

IT = 内部テーブル

P = SQL ストアド プロシージャ

PC = アセンブリ (CLR) ストアド プロシージャ

PG = プラン ガイド

PK = PRIMARY KEY 制約

R = ルール (旧形式、スタンドアロン)

RF = レプリケーション フィルター プロシージャ

S = システム ベース テーブル

SN = シノニム

SO = シーケンス オブジェクト

SQ = サービス キュー

TA = アセンブリ (CLR) DML トリガー

TF = SQL テーブル値関数

TR = SQL DML トリガー

TT = テーブルの種類

U = テーブル (ユーザー定義)

UQ = UNIQUE 制約

V = ビュー

X = 拡張ストアド プロシージャ

type_desc

nvarchar(60)

オブジェクトの種類の説明です。

AGGREGATE_FUNCTION

CHECK_CONSTRAINT

CLR_SCALAR_FUNCTION

CLR_STORED_PROCEDURE

CLR_TABLE_VALUED_FUNCTION

CLR_TRIGGER

DEFAULT_CONSTRAINT

EXTENDED_STORED_PROCEDURE

FOREIGN_KEY_CONSTRAINT

INTERNAL_TABLE

PLAN_GUIDE

PRIMARY_KEY_CONSTRAINT

REPLICATION_FILTER_PROCEDURE

RULE

SEQUENCE_OBJECT

SERVICE_QUEUE

SQL_INLINE_TABLE_VALUED_FUNCTION

SQL_SCALAR_FUNCTION

SQL_STORED_PROCEDURE

SQL_TABLE_VALUED_FUNCTION

SQL_TRIGGER

SYNONYM

SYSTEM_TABLE

TABLE_TYPE

UNIQUE_CONSTRAINT

USER_TABLE

VIEW

create_date

datetime

オブジェクトが作成された日付です。

modify_date

datetime

ALTER ステートメントを使用して最後にオブジェクトが変更された日付です。 オブジェクトがテーブルまたはビューの場合は、そのテーブルやビューのインデックスが作成または変更されると、modify_date も変更されます。

is_ms_shipped

bit

オブジェクトが内部 SQL Server コンポーネントによって作成されることを示します。

is_published

bit

オブジェクトがパブリッシュされることを示します。

is_schema_published

bit

オブジェクトのスキーマのみがパブリッシュされることを示します。

説明

sys.objects に表示されるオブジェクトには、OBJECT_IDOBJECT_NAME、および OBJECTPROPERTY() 組み込み関数を適用できます。

このビューと同じスキーマを使用する別のビューとして、システム オブジェクトを表示する sys.system_objects というビューがあります。 また、システム オブジェクトとユーザー オブジェクトの両方を表示する sys.all_objects というビューもあります。 3 つのカタログ ビューは、すべて同じ構造です。

このバージョンの SQL Server では、XML インデックスや空間インデックスなどの拡張インデックスは、sys.objects の内部テーブルと見なされます (type = IT および type_desc = INTERNAL_TABLE)。 拡張インデックスの場合は次のようになります。

  • name はインデックス テーブルの内部名です。

  • parent_object_id はベース テーブルの object_id です。

  • is_ms_shipped 列、is_published 列、および is_schema_published 列は 0 に設定されます。

権限

カタログ ビューでのメタデータの表示が、ユーザーが所有しているかそのユーザーが権限を許可されている、セキュリティ保護可能なメタデータに制限されます。詳細については、「メタデータ表示の構成」を参照してください。

使用例

A. 過去 n 日間に変更されたすべてのオブジェクトを返す

次のクエリの <database_name> と <n_days> を有効な値に置き換えてから、クエリを実行します。

USE <database_name>;
GO
SELECT name AS object_name 
  ,SCHEMA_NAME(schema_id) AS schema_name
  ,type_desc
  ,create_date
  ,modify_date
FROM sys.objects
WHERE modify_date > GETDATE() - <n_days>
ORDER BY modify_date;
GO

B. 指定されたストアド プロシージャまたは関数に対するパラメーターを返す

次のクエリの <database_name> と <schema_name.object_name> を有効な名前に置き換えてから、クエリを実行します。

USE <database_name>;
GO
SELECT SCHEMA_NAME(schema_id) AS schema_name
    ,o.name AS object_name
    ,o.type_desc
    ,p.parameter_id
    ,p.name AS parameter_name
    ,TYPE_NAME(p.user_type_id) AS parameter_type
    ,p.max_length
    ,p.precision
    ,p.scale
    ,p.is_output
FROM sys.objects AS o
INNER JOIN sys.parameters AS p ON o.object_id = p.object_id
WHERE o.object_id = OBJECT_ID('<schema_name.object_name>')
ORDER BY schema_name, o.object_name, p.parameter_id;
GO

C. データベース内のすべてのユーザー定義関数を返す

次のクエリの <database_name> を有効なデータベース名に置き換えてから、クエリを実行します。

USE <database_name>;
GO
SELECT name AS function_name 
  ,SCHEMA_NAME(schema_id) AS schema_name
  ,type_desc
  ,create_date
  ,modify_date
FROM sys.objects
WHERE type_desc LIKE '%FUNCTION%';
GO

D. スキーマ内の各オブジェクトの所有者を返す

次のクエリの <database_name> と <schema_name> をすべて有効な名前に置き換えてから、クエリを実行します。

USE <database_name>;
GO
SELECT 'OBJECT' AS entity_type
    ,USER_NAME(OBJECTPROPERTY(object_id, 'OwnerId')) AS owner_name
    ,name 
FROM sys.objects WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION 
SELECT 'TYPE' AS entity_type
    ,USER_NAME(TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'OwnerId')) AS owner_name
    ,name 
FROM sys.types WHERE SCHEMA_NAME(schema_id) = '<schema_name>' 
UNION
SELECT 'XML SCHEMA COLLECTION' AS entity_type 
    ,COALESCE(USER_NAME(xsc.principal_id),USER_NAME(s.principal_id)) AS owner_name
    ,xsc.name 
FROM sys.xml_schema_collections AS xsc JOIN sys.schemas AS s
    ON s.schema_id = xsc.schema_id
WHERE s.name = '<schema_name>';
GO

関連項目

参照

カタログ ビュー (Transact-SQL)

sys.all_objects (Transact-SQL)

sys.system_objects (Transact-SQL)

sys.triggers (Transact-SQL)

オブジェクト カタログ ビュー (Transact-SQL)

sys.internal_tables (Transact-SQL)

概念

SQL Server システム カタログに対するクエリに関してよく寄せられる質問