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 die 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“ (statt „nicht leer“) bezieht sich auf das Verhalten des ODBC-Treibers und der Funktion SQLTables. 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.
Verwenden Sie 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 (15.x) 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;