sp_tables (Transact-SQL)
Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス
現在の環境でクエリできるオブジェクトの一覧を返します。 これは、シノニム オブジェクトを除くすべてのテーブルまたはビューを意味します。
注意
シノニムのベース オブジェクトの名前を確認するには、sys.synonyms カタログ ビューに対してクエリを実行します。
構文
SQL Server、Azure SQL Database、Azure Synapse Analytics、Analytics Platform System (PDW) の構文:
sp_tables
[ [ @table_name = ] N'table_name' ]
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ , [ @table_type = ] 'table_type' ]
[ , [ @fUsePattern = ] fUsePattern ]
[ ; ]
引数
[ @table_name = ] N'table_name'
カタログ情報を返すために使用されるテーブル。 @table_name は nvarchar(384) で、既定値は NULL
です。 ワイルドカードのパターン マッチングがサポートされています。
[ @table_owner = ] N'table_owner'
カタログ情報を返すために使用されるテーブルのテーブル所有者。 @table_owner は nvarchar(384) で、既定値は NULL
です。 ワイルドカードのパターン マッチングがサポートされています。 所有者が指定されていない場合は、基になる DBMS の既定のテーブル可視性ルールが適用されます。
SQL Server では、指定した名前のテーブルを現在のユーザーが所有している場合、そのテーブルの列が返されます。 所有者が指定されておらず、現在のユーザーが指定した名前のテーブルを所有していない場合、このプロシージャは、データベース所有者が所有する指定した名前のテーブルを検索します。 そのテーブルが存在する場合、そのテーブルの列が返されます。
[ @table_qualifier = ] N'table_qualifier'
テーブル修飾子の名前。 @table_qualifier は sysname で、既定値は NULL
です。 さまざまな DBMS 製品では、テーブルの 3 部構成の名前付け (<qualifier>.<owner>.<name>
) がサポートされています。 SQL Server では、この列はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。
[ @table_type = ] 'table_type'
指定されたテーブル型のすべてのテーブルに関する情報を提供する、コンマで区切られた値のリスト。 これらには、 TABLE
、 SYSTEMTABLE
、および VIEW
が含まれます。 @table_type は varchar(100) で、既定値は NULL
です。
各テーブル型を単一引用符で囲む必要があり、パラメーター全体を二重引用符で囲む必要があります。 テーブル型は大文字である必要があります。 SET QUOTED_IDENTIFIER
がON
の場合は、各単一引用符を 2 倍にし、パラメーター全体を単一引用符で囲む必要があります。
[ @fUsePattern = ] fUsePattern
アンダースコア (_
)、パーセント (%
)、角かっこ ([
または ]
) の文字をワイルドカード文字として解釈するかどうかを指定します。 有効な値は 0
(パターン マッチングがオフ) と 1
(パターン マッチングがオン) です。 @fUsePattern は bit で、既定値は 1
です。
リターン コードの値
なし。
結果セット
列名 | データ型 | 説明 |
---|---|---|
TABLE_QUALIFIER |
sysname | テーブルの修飾子名です。 SQL Server では、この列はデータベース名を表します。 このフィールドは NULL できます。 |
TABLE_OWNER |
sysname | テーブル所有者の名前。 SQL Server では、この列は、テーブルを作成したデータベース ユーザーの名前を表します。 このフィールドには常に値が返されます。 |
TABLE_NAME |
sysname | テーブル名。 このフィールドには常に値が返されます。 |
TABLE_TYPE |
varchar(32) | テーブル、システム テーブル、またはビュー。 |
REMARKS |
varchar(254) | SQL Server は、この列の値を返しません。 |
解説
相互運用性を最大にするため、ゲートウェイ クライアントでは、SQL-92 標準の SQL パターン マッチング (% と _ ワイルドカード文字) のみを想定する必要があります。
特定のテーブルに対する現在のユーザーの読み取りまたは書き込みアクセスに関する特権情報が常にチェックされるわけではありません。 そのため、アクセスは保証されません。 この結果セットには、テーブルとビューだけでなく、これらの型をサポートする DBMS 製品へのゲートウェイのシノニムと別名も含まれます。 sp_server_info
の結果セットのサーバー属性ACCESSIBLE_TABLES
が Y の場合は、現在のユーザーがアクセスできるテーブルのみが返されます。
sp_tables
は ODBC の SQLTables
と同じです。 返される結果は、 TABLE_TYPE
、 TABLE_QUALIFIER
、 TABLE_OWNER
、および TABLE_NAME
順に並べられます。
アクセス許可
カタログ ビューでのメタデータの可視性は、ユーザーが所有しているか、ユーザーに何らかのアクセス許可が付与されているセキュリティ保護可能なリソースに限定されます。 詳細については、「 Metadata Visibility Configuration」を参照してください。
例
A. 現在の環境でクエリを実行できるオブジェクトの一覧を返します
次の例では、現在の環境で照会できるオブジェクトの一覧が返されます。
EXEC sp_tables;
B. 指定したスキーマ内のテーブルに関する情報を返します
次の例では、AdventureWorks2022 データベース内の Person
スキーマに属するテーブルに関する情報が返されます。
USE AdventureWorks2022;
GO
EXEC sp_tables
@table_name = '%',
@table_owner = 'Person',
@table_qualifier = 'AdventureWorks2022';
例: Azure Synapse Analytics、Analytics Platform System (PDW)
C: 現在の環境でクエリを実行できるオブジェクトの一覧を返します
次の例では、現在の環境で照会できるオブジェクトの一覧が返されます。
EXEC sp_tables;
D. 指定したスキーマ内のテーブルに関する情報を返します
次の例では、AdventureWorksPDW2012
データベース内のディメンション テーブルに関する情報が返されます。
-- Uses AdventureWorks
EXEC sp_tables
@table_name = 'Dim%',
@table_owner = 'dbo',
@table_qualifier = 'AdventureWorksPDW2012';