sp_tables (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲
傳回可在目前環境中查詢的物件清單。 這表示任何數據表或檢視表,但同義字物件除外。
注意
若要判斷同義字基底對象的名稱,請查詢 sys.synonyms 目錄檢視。
Syntax
SQL Server、Azure SQL 資料庫、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 產品支援數據表的三部分命名(<qualifier>.<owner>.<name>
)。 在 SQL Server 中,此資料行代表資料庫名稱。 在某些產品中,它代表數據表資料庫環境的伺服器名稱。
[ @table_type = ] 'table_type'
值清單,以逗號分隔,可提供指定之數據表類型之所有數據表的相關信息。 這些包括 TABLE
、 SYSTEMTABLE
與 VIEW
。 @table_type為 varchar(100),預設值為 NULL
。
單引號必須括住每個數據表類型,雙引號必須括住整個參數。 數據表類型必須是大寫。 如果 SET QUOTED_IDENTIFIER
為 ON
,則每個單引號都必須加倍,而且整個參數必須以單引弧括住。
[ @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 產品的閘道同義字和別名。 如果伺服器屬性 ACCESSIBLE_TABLES
在 的結果集中 sp_server_info
是 Y,則只會傳回目前使用者可存取的數據表。
sp_tables
相當於 SQLTables
ODBC 中的 。 傳回的結果會依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';