다음을 통해 공유


sp_data_source_table_columns(Transact-SQL)

적용 대상: SQL Server 2019(15.x)

외부 데이터 원본 테이블의 열 목록을 반환합니다.

참고 항목

이 절차는 SQL 2019 CU5에서 도입되었습니다.

Transact-SQL 구문 표기 규칙

구문

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

인수

[ @data_source = ] 'data_source'

메타데이터를 가져올 외부 데이터 원본의 이름입니다. 형식은 .입니다 sysname.

[ @table_location = ] 'table_location'

테이블을 식별하는 테이블 위치 문자열입니다. table_location 형식은 .입니다 nvarchar(max).

결과 집합

저장 프로시저는 다음 정보를 반환합니다.

열 이름 데이터 형식 설명
name nvarchar(max) 열의 이름입니다.
type nvarchar(200) SQL Server 유형 이름입니다.
length int 열의 길이입니다.
precision int 열의 전체 자릿수입니다.
scale int 열의 배율입니다.
collation nvarchar(200) 열의 SQL Server 데이터 정렬입니다.
is_nullable bit 1 = nullable, 0 = nullable이 아닙니다.
source_type_name nvarchar(max) 백 엔드별 형식 이름입니다. 디버깅에 주로 사용됩니다. ODBC 원본의 source_type_name 경우 .에 대한 결과 열에 TYPE_NAMESQLColumns()해당합니다.
remarks nvarchar(max) 열에 대한 일반적인 주석 또는 설명입니다. 현재는 항상 NULL.

사용 권한

ALTER ANY EXTERNAL DATA SOURCE 권한이 필요합니다.

설명

SQL Server 인스턴스에는 PolyBase 기능이 설치되어 있어야 합니다.

이 저장 프로시저는 다음을 위한 커넥터를 지원합니다.

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

저장 프로시저는 일반 ODBC 데이터 원본 또는 Hadoop 커넥터를 지원하지 않습니다.

비어 있거나 비어있지 않은 개념이 ODBC 드라이버 및 함수의 동작과 SQLTables 관련이 있습니다. 비어 있지 않음은 개체에 행이 아닌 테이블이 포함되어 있음을 나타냅니다. 예를 들어 빈 스키마에는 SQL Server에 테이블이 없습니다. 빈 데이터베이스에는 Teradata 내에 테이블이 없습니다. 결과는 백 엔드에 대한 PolyBase 커넥터에서 해석한 백 엔드 스키마의 SQL Server 표현입니다. 여기서 차이점은 ODBC 호출 결과를 백 엔드에 전달하는 대신 PolyBase 형식 매핑 코드의 결과를 기반으로 한다는 것입니다.

sp_data_source_table_columns 외부 개체를 사용하고 sp_data_source_objects 검색합니다. 이러한 시스템 저장 프로시저는 가상화할 수 있는 테이블의 스키마를 반환합니다. Azure Data Studio는 이러한 두 저장 프로시저를 사용하여 데이터 가상화를 지원합니다. SQL Server 데이터 형식에 표시되는 외부 테이블 스키마를 검색하는 데 사용합니다 sp_data_source_table_columns .

Hadoop 원본 데이터의 데이터 정렬과 SQL Server 2019의 지원되는 데이터 정렬 간의 차이로 인해 외부 테이블의 varchar 데이터 형식 열에 권장되는 데이터 형식 길이가 예상보다 훨씬 클 수 있습니다. 이것은 의도적인 것입니다.

Oracle 동의어는 PolyBase 사용에서 지원되지 않습니다.

예제

다음 예제에서는 명명serverschema된 스키마에 속하는 SQL Server의 외부 테이블에 대한 테이블 열을 반환합니다.

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