実行しているSQL Serverのバージョンによっては、ユーザーが作成したすべてのテーブルのリストを照会して返す方法が若干異なる場合があります。 以下では、古いSQL Server2000と新しい2005バージョン以降の両方のテーブルリストを取得するために使用できるTSQLステートメントについて簡単に説明します。,
SQL Server2000のテーブルのリスト
古いバージョンのSQL Server(SQL Server2000など、このメソッドは下位互換性のためにSQL Server2005でもサポートされています)の場合は、SYS.SYSOBJECTS
メタデータビューをクエリする必要があります。 SYS.SYSOBJECTS
データベースに作成されたすべてのオブジェクトの行が含まれています。stored procedures
、views
、user tables
(これはsystem tables
と区別する,)
SYSOBJECTS
テーブルには、時間の経過とともにサーバーに追加された事実上すべての情報を保持する必要があるため、数十列のデータが格納されます。 したがって、ユーザーが作成したテーブルのリストを見つけるには(したがって、system tables
を無視する)、xtype
列(その行のobject type
を指定する)が値U
user table
と等しい結果を見つける必要があります。
。, 結果のTSQLステートメントは次のようになります。
SELECT *FROM SYSOBJECTSWHERE xtype = 'U';GO
注:SYSOBJECTS
はSYS
名前空間の一部であるため、SYSOBJECTS
を照会するときにiv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””
はグローバルなSYS
名前空間の一部であるため、上記の例に示すように省略できます。
これは、すべてのユーザーが作成したテーブルの結果リストを返します。, すべての列を照会するときに返される情報の量が非常に大きいため、name
列とおそらくcrdate
(作成日):
SELECT name, crdateFROM SYSOBJECTSWHERE xtype = 'U';GO
SQL Server2005以降のテーブルをリストする
新しいバージョン(sql2005以降)を使用するときにsql serverのすべてのテーブルをリストすることは、sql serverに自動的に組み込まれるINFORMATION_SCHEMA
ビューを問, これにより、COLUMNS
、ROUTINES
、さらにはTABLES
に関する情報を含む、この特定のSQL Serverインスタンスのさまざまなメタデータを
INFORMATION_SCHEMA.TABLES
ビューを使用すると、四つの列が返されることがありますが、最も重要な列はTABLE_TYPE
であり、その行のテーブルが実際のテーブル(BASE TABLE
)またはビュー(VIEW
)であるかどうかを決定します。,
SELECT *FROM INFORMATION_SCHEMA.TABLES;GO
クエリするデータベースを指定することも賢明です。
SELECT *FROM databaseName.INFORMATION_SCHEMA.TABLES;GO
実際のテーブルとビューのみを取得したい場合は、クエリするデータベースを指定することもできます。
実際のテーブルとビューを取得したい場合は、クエリするデータベースを指定することもできます。結果からビューを除外し、WHERE TABLE_TYPE = 'BASE TABLE'
句を追加します。
SELECT *FROM databaseName.INFORMATION_SCHEMA.TABLESWHERE TABLE_TYPE = 'BASE TABLE';GO