다음을 통해 공유


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 = null 허용, 0 = null 허용 안 함.
source_type_name nvarchar(max) 백엔드별 형식 이름입니다. 주로 디버깅에 사용됩니다. ODBC 소스의 경우 source_type_name은(는) TYPE_NAME에 대한 SQLColumns() 결과 열에 해당합니다.
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_objectssp_data_source_table_columns를 사용합니다. 이러한 시스템 저장 프로시저는 가상화할 수 있는 테이블의 스키마를 반환합니다. Azure Data Studio는 이 두 저장 프로시저를 사용하여 데이터 가상화를 지원합니다. SQL Server 데이터 형식으로 표현되는 외부 테이블 스키마를 검색하려면 sp_data_source_table_columns를 사용합니다.

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

Oracle 동의어는 PolyBase와 함께 사용할 수 없습니다.

예시

다음 예에서는 server(이)라는 스키마에 속하는 schema(이)라는 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;