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