sp_data_source_table_columns (Transact-SQL)

S’applique à : SQL Server 2019 (15.x)

Retourne la liste des colonnes de la table de la source de données externe.

Remarque

Cette procédure est introduite dans SQL 2019 CU5.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @data_source = ] 'data_source'

Nom de la source de données externe à partir de laquelle les métadonnées doivent être obtenues. Le type est sysname.

[ @table_location = ] 'table_location'

Chaîne d'emplacement de la table qui identifie la table. Type table_location est nvarchar(max).

Jeu de résultats

La procédure stockée retourne les informations suivantes :

Nom de la colonne Type de données Description
name nvarchar(max) Nom de la colonne.
type nvarchar(200) Nom du serveur SQL Server.
length int Longueur de la colonne.
precision int Précision de la colonne.
scale int Échelle de la colonne.
collation nvarchar(200) Classement de la colonne dans SQL Server.
is_nullable bit 1 = Autorise la valeur Null, 0 =N’accepte pas la valeur Null
source_type_name nvarchar(max) Nom de type spécifique au back-end. Principalement utilisé pour le débogage. Pour les sources ODBC, source_type_name correspond à la colonne de résultats TYPE_NAME de SQLColumns().
remarks nvarchar(max) Commentaires généraux ou description de la colonne. Actuellement, toujours NULL.

autorisations

Nécessite l'autorisation ALTER ANY EXTERNAL DATA SOURCE.

Notes

La fonctionnalité PolyBase doit être installée sur l'instance de SQL Server.

Cette procédure stockée prend en charge les connecteurs pour :

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

La procédure stockée ne prend pas en charge les sources de données ODBC génériques ou les connecteurs Hadoop.

La notion de vide ou de non vide est liée au comportement du pilote ODBC et de la fonction SQLTables. Non vide indique qu’un objet contient des tables, et non des lignes. Par exemple, un schéma vide ne contient aucune table dans SQL Server. Une base de données vide ne contient aucune table dans Teradata. Les résultats sont une représentation SQL Server du schéma du backend tel qu'interprété par le connecteur PolyBase pour le backend. La différence ici est qu'au lieu de simplement transférer les résultats de l'appel ODBC au backend, les résultats sont basés sur le résultat du code de mappage des types PolyBase.

Utilisez sp_data_source_objects et sp_data_source_table_columns pour découvrir des objets externes. Ces procédures stockées système retournent le schéma des tables qui sont disponibles pour être virtualisées. Azure Data Studio utilise ces deux procédures stockées pour prendre en charge la virtualisation des données. Utilisez sp_data_source_table_columns pour découvrir les schémas de tables externes représentés dans les types de données SQL Server.

En raison des différences entre les classements dans les données source Hadoop et les classements pris en charge dans SQL Server 2019 (15.x), les longueurs de type de données recommandées pour les colonnes de type de données varchar dans les tables externes peuvent être beaucoup plus importantes que prévu. C'est la procédure normale.

L’utilisation de synonymes Oracle avec PolyBase n’est pas prise en charge.

Exemples

L'exemple suivant retourne les colonnes d'une table externe dans un SQL Server nommé server, appartenant à un schéma nommé 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;