OBJECTPROPERTY()
SQL Serverの関数を使用すると、オブジェクトの特定のプロパティを確認できます。
この関数を使用して、オブジェクトがシステムテーブルであるかどうかを確認できます。これを行うには、最初の引数としてオブジェクトIDを渡し、IsSystemTable
2番目の引数として。この関数は1
を返します または0
システムテーブルかどうかによって異なります(1
であることを意味します システムテーブル、および0
そうではないことを意味します。
例1-基本的な使用法
簡単な例を次に示します。
SELECT OBJECTPROPERTY(3, 'IsSystemTable') AS [IsSystemTable];
結果:
+-----------------+ | IsSystemTable | |-----------------| | 1 | +-----------------+
この場合、オブジェクトは システムテーブル。
例2–オブジェクトはシステムテーブルではありません
オブジェクトがシステムテーブルでない場合は、次のようになります。
SELECT OBJECTPROPERTY(1013578649, 'IsSystemTable') AS [IsSystemTable];
結果:
+-----------------+ | IsSystemTable | |-----------------| | 0 | +-----------------+
この場合、データベースはします 実際にはそのIDのオブジェクトがありますが、オブジェクトは実際にはユーザー定義のテーブルであるため、否定的な結果が得られます。
ここでもOBJECT_ID()
を使用しています オブジェクトの名前からIDを取得します。
SELECT OBJECT_ID('Dimension.City') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsSystemTable') AS [IsSystemTable], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsUserTable') AS [IsUserTable];
結果:
+-------------+-----------------+---------------+ | Object ID | IsSystemTable | IsUserTable | |-------------+-----------------+---------------| | 1013578649 | 0 | 1 | +-------------+-----------------+---------------+
また、オブジェクトがユーザー定義のテーブルであり、結果が正であるかどうかを確認しました。
例3–オブジェクトが存在しない
SQL Serverは、オブジェクトIDが現在のデータベースコンテキストにあると想定します。別のデータベースからオブジェクトIDを渡すと、NULLの結果が得られるか、誤った結果が得られます。
SELECT OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'IsSystemTable') AS [InvalidObject], OBJECTPROPERTY(12345678, 'IsSystemTable') AS [12345678];
結果:
+-----------------+------------+ | InvalidObject | 12345678 | |-----------------+------------| | NULL | NULL | +-----------------+------------+
この場合、データベースにはその名前またはIDのオブジェクトが含まれていないため、結果はNULLになります。
エラーが発生した場合、またはオブジェクトを表示する権限がない場合にもNULLが発生します。