sp_data_source_table_columns (Transact-SQL)

Se aplica a: SQL Server 2019 (15.x)

Devuelve la lista de columnas de la tabla de origen de datos externos.

Nota:

Este procedimiento se presenta en SQL 2019 CU5.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @data_source = ] 'data_source'

Nombre del origen de datos externo del que se van a obtener los metadatos. El tipo es sysname.

[ @table_location = ] 'table_location'

Cadena de ubicación de la tabla que identifica la tabla. El tipo table_location es nvarchar(max).

Conjunto de resultados

El procedimiento almacenado devuelve la información siguiente:

Nombre de la columna Tipo de datos Descripción
name nvarchar(max) El nombre de la columna.
type nvarchar(200) Nombre del tipo de servidor SQL Server.
length int Longitud de la columna.
precision int Precisión de la columna.
scale int Escala de la columna.
collation nvarchar(200) Intercalación del servidor SQL Server de la columna.
is_nullable bit 1 = admite valores NULL, 0 = no admite valores NULL.
source_type_name nvarchar(max) Nombre de tipo específico del back-end. Se usa principalmente para la depuración. Para orígenes ODBC, source_type_name corresponde a la columna de resultado TYPE_NAME de SQLColumns().
remarks nvarchar(max) Comentarios generales o descripción de la columna. Actualmente, siempre es NULL.

Permisos

Requiere el permiso ALTER ANY EXTERNAL DATA SOURCE.

Comentarios

Debe instalarse la característica PolyBase en la instancia de SQL Server.

Este procedimiento almacenado admite conectores para:

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

El procedimiento almacenado no admite el origen de datos ODBC genérico ni los conectores de Hadoop.

La noción de vacío frente a no vacío se relaciona con el comportamiento del controlador ODBC y la función SQLTables. No vacío indica que un objeto contiene tablas, no filas. Por ejemplo, un esquema vacío no contiene tablas en SQL Server. Una base de datos vacía no contiene tablas dentro de Teradata. Los resultados son una representación de SQL Server del esquema de back-end como lo interpreta el conector de PolyBase para el back-end. La distinción aquí es que, en lugar de simplemente pasar los resultados de la llamada ODBC al back-end, los resultados se basan en el resultado del código de asignación de tipos de PolyBase.

Use sp_data_source_objects y sp_data_source_table_columns para detectar objetos externos. Estos procedimientos almacenados del sistema devuelven el esquema de las tablas que están disponibles para virtualizarse. Azure Data Studio usa estos dos procedimientos almacenados para admitir la virtualización de datos. Use sp_data_source_table_columns para detectar esquemas de tablas externas representados en tipos de datos de SQL Server.

Debido a las diferencias entre intercalaciones en los datos de origen de Hadoop y las intercalaciones admitidas en SQL Server 2019, las longitudes de tipo de datos recomendadas para las columnas de tipo de datos varchar en tablas externas pueden ser mucho mayores de lo esperado. es así por diseño.

Los sinónimos de Oracle no se admiten para su uso con PolyBase.

Ejemplos

En el ejemplo siguiente se devuelven las columnas de tabla de una tabla externa de un servidor SQL Server denominado server, que pertenece a un esquema denominado 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