共用方式為


sp_data_source_table_columns (Transact-SQL)

適用於:SQL Server 2019 (15.x)

傳回外部資料來源資料表中的資料行清單。

注意

此程序在 SQL 2019 CU5 中引入。

Transact-SQL 語法慣例

語法

sp_data_source_table_columns
         [ @data_source = ] 'data_source'
       , [ @table_location = ] 'table_location'
[ ; ]

引數

[ @data_source = ] 'data_source'

要從中取得中繼資料的外部資料來源名稱。 類型為 sysname

[ @table_location = ] 'table_location'

識別資料表的資料表位置字串。 table_location 類型為 nvarchar(max)

結果集

此預存程序會傳回下列訊息:

資料行名稱 資料類型 描述
name nvarchar(max) 資料行名稱。
type nvarchar(200) SQL Server 類型名稱。
length int 資料行的長度。
precision int 資料行的精確度。
scale int 資料行的縮放比例。
collation nvarchar(200) 資料行的 SQL Server 定序。
is_nullable bit 1 = 可為 Null,0 = 不可為 Null。
source_type_name nvarchar(max) 後端特定的類型名稱。 大部分用於偵錯。 對於 ODBC 來源,source_type_name 會對應至 SQLColumns()TYPE_NAME 結果資料行。
remarks nvarchar(max) 資料行的一般註解或描述。 目前一律為 NULL

權限

需要 ALTER ANY EXTERNAL DATA SOURCE 權限。

備註

SQL Server 執行個體必須已安裝 PolyBase 功能。

此預存程式支援下列的連接器:

  • SQL Server
  • Oracle
  • Teradata
  • MongoDB
  • Azure Cosmos DB

此預存程式不支援一般 ODBC 資料來源或 Hadoop 連接器。

空白與非空白的概念與 ODBC 驅動程式和 SQLTables函式的行為有關。 非空白表示物件包含資料表,而非資料列。 例如,空白的結構描述不包含 SQL Server 中的資料表。 空白的資料庫表示 Teradata 內沒有資料表。 結果是後端結構描述的 SQL Server 表示法 (如後端的 PolyBase 連接器所解譯)。 此處的差別在於,結果不是僅僅將 ODBC 呼叫的結果傳遞給後端,而是基於 PolyBase 類型對應程式碼的結果。

使用 sp_data_source_objectssp_data_source_table_columns 來探索外部物件。 這些系統預存程式會傳回可供虛擬化的資料表結構描述。 Azure Data Studio 會使用這兩個預存程式來支援資料虛擬化。 使用 sp_data_source_table_columns 來探索 SQL Server 資料類型中所表示的外部資料表結構描述。

由於 Hadoop 來源資料中的定序與 SQL Server 2019 (15.x) 中支援的定序之間的差異,因此外部資料表中 Varchar 資料類型資料行的建議資料類型長度可能會比預期大很多。 這是原廠設定。

搭配使用 PolyBase 時,不支援 Oracle 同義字。

範例

下列範例會傳回 SQL Server 中名為 server 的外部資料表的資料表資料行,屬於名為 schema 的結構描述。

DECLARE @data_source SYSNAME = N'ExternalDataSourceName';
DECLARE @table_location NVARCHAR(400) = N'[database].[schema].[table]';

EXEC sp_data_source_table_columns
    @data_source,
    @table_location;