Freigeben über


sp_data_source_table_columns (Transact-SQL)

Gilt für: SQL Server 2019 (15.x)

Gibt die Liste der Spalten in der externen Datenquellen-Tabelle zurück.

Hinweis

Dieses Verfahren wird in SQL 2019 CU5 eingeführt.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @data_source = ] 'data_source'

Der Name der externen Datenquelle, aus der die Metadaten abgerufen werden sollen. Typ ist sysname.

[ @table_location = ] 'table_location'

Die Tabellen-Speicherortzeichenkette, die die Tabelle identifiziert. table_location Typ ist nvarchar(max).

Resultset

Die gespeicherte Prozedur gibt die folgenden Informationen zurück:

Spaltenname Datentyp Beschreibung
name nvarchar(max) Der Name der Spalte.
type nvarchar(200) Name des SQL Server-Typs.
length int Länge der Spalte.
precision int Genauigkeit der Spalte.
scale int Skalierung der Spalte.
collation nvarchar(200) SQL Serversortierung der Spalte.
is_nullable bit 1 = Nullwerte zulassend, 0 = Keine Nullwerte zulassend.
source_type_name nvarchar(max) Back-End-spezifischer Typ-Name. Wird hauptsächlich für das Debuggen verwendet. Für ODBC-Quellen entspricht source_type_name der Ergebnisspalte TYPE_NAME für SQLColumns().
remarks nvarchar(max) Allgemeine Kommentare oder Beschreibung der Spalte. Aktuell immer NULL.

Berechtigungen

Erfordert eine ALTER ANY EXTERNAL DATA SOURCE-Berechtigung.

Hinweise

Auf der SQL Server-Instanz muss die PolyBase-Funktion installiert sein.

Diese gespeicherte Prozedur unterstützt Connectors für:

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

Die gespeicherte Prozedur unterstützt keine generische ODBC-Datenquelle oder Hadoop-Connectors.

Der Begriff leer und nicht leer bezieht sich auf das Verhalten des ODBC-Treibers und der SQLTables Funktion. Nicht leer gibt an, dass ein Objekt Tabellen und keine Zeilen enthält. Beispielsweise enthält ein leeres Schema keine Tabellen in SQL Server. Eine leere Datenbank enthält keine Tabellen innerhalb von Teradata. Die Ergebnisse sind eine SQL Server-Darstellung des Back-End-Schemas, die vom PolyBase-Konnektor für das Back-End interpretiert wird. Der Unterschied besteht darin, dass die Ergebnisse des ODBC-Aufrufs an das Back-End nicht nur übergeben werden, sondern auf dem Ergebnis des PolyBase-Typ-Zuordnungs-Codes basieren.

Verwendung von sp_data_source_objects und sp_data_source_table_columns, um externe Objekte zu ermitteln. Diese vom System gespeicherten Prozeduren geben das Schema von Tabellen zurück, die zur Virtualisierung verfügbar stehen. Azure Data Studio verwendet diese beiden gespeicherten Prozeduren zur Unterstützung der Datenvirtualisierung. Verwenden Sie sp_data_source_table_columns, um externe Tabellen-Schemas zu ermitteln, die in SQL Server-Datentypen dargestellt sind.

Aufgrund von Unterschieden zwischen Sortierungen in Hadoop-Quelldaten und unterstützten Sortierungen in SQL Server 2019 sind die empfohlenen Datentyp-Längen für Spalten vom Datentyp varchar in externen Tabellen möglicherweise viel größer als erwartet. Es handelt sich hierbei um ein beabsichtigtes Verhalten.

Oracle-Synonyme werden für die Verwendung mit PolyBase nicht unterstützt.

Beispiele

Im folgenden Beispiel werden die Tabellenspalten für eine externe Tabelle in einem SQL Server-Namen server zurückgegeben, der zu einem Schema namens schema gehört.

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