実行している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を指定する)が値Uuser 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';GOSQL 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