Share via


sp_data_source_table_columns (Transact-SQL)

Aplica-se a: SQL Server 2019 (15.x)

Retorna a lista de colunas na tabela da fonte de dados externa.

Observação

Esse procedimento foi introduzido no SQL 2019 CU5.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

[ @data_source = ] 'data_source'

O nome da fonte de dados externa da qual se obtêm os metadados. O tipo é sysname.

[ @table_location = ] 'table_location'

A cadeia de caracteres de localização da tabela que identifica a tabela. O tipo de table_location é nvarchar(max).

Conjunto de resultados

O procedimento armazenado retorna as seguintes informações:

Nome da coluna Tipo de dados Descrição
name nvarchar(max) O nome da coluna.
type nvarchar(200) Nome do tipo do SQL Server.
length int Comprimento da coluna.
precision int Precisão da coluna.
scale int Escala da coluna.
collation nvarchar(200) Ordenação de colunas do SQL Server.
is_nullable bit 1 = anulável, 0 = não anulável.
source_type_name nvarchar(max) Nome do tipo específico do back-end. Usado principalmente para depuração. Para fontes ODBC, source_type_name corresponde à coluna de resultados TYPE_NAME para SQLColumns().
remarks nvarchar(max) Comentários gerais ou descrição da coluna. Atualmente, sempre NULL.

Permissões

Requer a permissão ALTER ANY EXTERNAL DATA SOURCE.

Comentários

A instância do SQL Server deve ter o recurso PolyBase instalado.

Esse procedimento armazenado oferece suporte a conectores para:

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

O procedimento armazenado não é compatível com fontes de dados ODBC genéricas ou conectores Hadoop.

A noção de vazio x não vazio está relacionada ao comportamento do driver ODBC e da funçãoSQLTables. Não vazio indica que um objeto contém tabelas, e não linhas. Por exemplo, um esquema vazio não contém tabelas no SQL Server. Um banco de dados vazio não contém tabelas dentro do Teradata. Os resultados são uma representação do SQL Server do esquema do back-end, conforme interpretado pelo conector PolyBase para o back-end. A diferença aqui é que, em vez de simplesmente passar os resultados da chamada ODBC para o back-end, os resultados são baseados no resultado do código de mapeamento de tipo do PolyBase.

Use sp_data_source_objects e sp_data_source_table_columns para descobrir objetos externos. Esses procedimentos armazenados no sistema retornam o esquema das tabelas que estão disponíveis para serem virtualizadas. O Azure Data Studio usa esses dois procedimentos armazenados para dar suporte à virtualização de dados. Use sp_data_source_table_columns para descobrir esquemas de tabelas externas representadas em tipos de dados do SQL Server.

Devido às diferenças entre os agrupamentos nos dados de origem do Hadoop e os agrupamentos compatíveis no SQL Server 2019, os comprimentos de tipo de dados recomendados para colunas de tipo de dados varchar em tabelas externas podem ser muito maiores do que o esperado. Isso ocorre por design.

Os sinônimos Oracle não são suportados para uso com o PolyBase.

Exemplos

O exemplo a seguir retorna as colunas da tabela para uma tabela externa em um SQL Server chamado server, pertencente a um esquema chamado 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