이 페이지에서는 PolyBase 및 SQL Server용 Cloud SQL 인스턴스와 함께 사용할 외부 데이터 소스를 구성하고 관리하는 방법을 보여줍니다.
외부 객체에 대한 액세스 관리
Cloud SQL은 PolyBase를 사용 설정 및 사용 중지하는 작업만 지원합니다. 사용자는 T-SQL 문을 사용하여 SQL Server 엔티티를 수동으로 관리해야 합니다.
SQL 서버 엔티티를 수동으로 관리하기 전에 다음 Microsoft 리소스를 검토하세요.
외부 데이터 소스 만들기
다음 단계에서는 SQL Server용 Cloud SQL 인스턴스에 외부 데이터 소스를 만드는 방법을 보여줍니다.
SQL Server는 외부 데이터 소스를 서버 이름, 데이터베이스 이름, 연결 문자열과 같은 연결 정보가 있는 리소스로 정의합니다.
SQL Server는 외부 테이블을 외부 데이터 소스의 데이터를 가리키는 SQL Server 내의 메타데이터 객체로 정의합니다. SQL Server 내에 표시될 외부 데이터의 스키마를 정의합니다.
이 절차에서는 외부 데이터 소스에 데이터베이스 범위 사용자 인증 정보 (DSC)를 만들어야 합니다.
DSC는 외부 데이터 소스에 연결하는 데 필요한 인증 정보를 저장합니다. 이러한 사용자 인증 정보는 데이터베이스 마스터 키 (DMK)로 암호화됩니다.
DMK는 데이터베이스 내 암호화 계층 구조의 루트 역할을 하며 데이터베이스 범위 사용자 인증 정보의 보안 비밀을 보호합니다. 이 대칭 키는 서비스 마스터 키 (SMK)와 사용자가 제공한 비밀번호로 암호화됩니다. DMK는 자동으로 생성되지 않으며 사용자가 T-SQL을 사용하여 명시적으로 관리해야 합니다.
SMK는 SQL Server의 특정 인스턴스에 대한 암호화 계층 구조의 루트 역할을 합니다. 이 대칭 키는 SQL Server가 처음 시작될 때 자동으로 생성되며 DMK 및 로그인 비밀번호와 같은 다른 보안 객체를 보호하는 데 사용됩니다.
Oracle
SQL Server에서 다음 단계를 완료합니다.
Oracle용 데이터베이스 범위 사용자 인증 정보 (DSC)를 만듭니다.
아직 없는 경우 사용자 데이터베이스로 전환하여 마스터 키를 만듭니다.
USE USER_DB; CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';다음을 바꿉니다.
- USER_DB: 마스터 키를 만드는 데 사용할 사용자 데이터베이스입니다.
예를 들면
polybasedb입니다. - MK_PASSWORD: 사용할 마스터 키의 비밀번호입니다. 나중에 사용할 수 있도록 마스터 키의 비밀번호를 저장해야 합니다.
- USER_DB: 마스터 키를 만드는 데 사용할 사용자 데이터베이스입니다.
예를 들면
Oracle 데이터 소스의 데이터베이스 범위 사용자 인증 정보를 만듭니다.
CREATE DATABASE SCOPED CREDENTIAL DB_CREDENTIAL_NAME WITH IDENTITY = 'EXTERNAL_DATABASE_USERNAME', SECRET = 'EXTERNAL_DATABASE_PASSWORD';다음을 바꿉니다.
- DB_CREDENTIAL_NAME: 외부 데이터베이스에 사용할 사용자 인증 정보 이름입니다.
- EXTERNAL_DATABASE_USERNAME: 외부 데이터베이스에 액세스하는 데 사용할 사용자 이름입니다.
- EXTERNAL_DATABASE_PASSWORD: 외부 데이터베이스의 비밀번호입니다. 외부 데이터 소스 사용자 인증 정보는 순환될 때 업데이트해야 하며 사용자가 수동으로 관리해야 합니다.
Oracle의 외부 데이터 소스를 만듭니다.
CREATE EXTERNAL DATA SOURCE DATA_SOURCE_NAME WITH ( LOCATION = 'oracle://SERVER_IP:PORT', PUSHDOWN = PUSHDOWN, CREDENTIAL = DB_CREDENTIAL_NAME );다음을 바꿉니다.
- DATA_SOURCE_NAME: 외부 데이터베이스에 사용할 이름입니다.
- SERVER_IP: 서버의 IP 또는 호스트 이름입니다.
- PORT: 사용할 포트입니다.
- PUSHDOWN: (필수사항) 푸시다운은 SQL Server에서 제공되는 기능이며 구성해야 합니다. 사용 사례에 따라 값을
ON또는OFF로 설정합니다. - DB_CREDENTIAL_NAME: 방금 만든 사용자 인증 정보
외부 테이블을 만듭니다.
외부 데이터의 스키마와 구조를 정의합니다.
- 외부 테이블 정의를 만듭니다. 스키마는 원격 테이블과 일치해야 합니다.
- 적절한 SQL Server 데이터 유형과 콜레이션으로 열을 정의합니다.
- 위치는 원격 테이블 경로입니다.
CREATE EXTERNAL TABLE EXTERNAL_TABLE_NAME( COLUMN_NAME_1 DATA_TYPE_1 COLLATE COLLATION_1, COLUMN_NAME_2 DATA_TYPE_2 COLLATE COLLATION_2, ... ) WITH( LOCATION = 'REMOTE_DATABASE.REMOTE_USERNAME.REMOTE_TABLE_NAME', DATA_SOURCE = DB_DATA_SOURCE_NAME );다음을 바꿉니다.
- EXTERNAL_TABLE_NAME: 만들려는 외부 테이블의 이름입니다.
- COLUMN_NAME_1: 테이블의 첫 번째 열 이름입니다.
- DATA_TYPE_1: 첫 번째 열의 데이터 유형입니다.
- COLLATION_1: 첫 번째 열에 사용할 콜레이션입니다.
- COLUMN_NAME_2: 테이블의 두 번째 열 이름입니다.
- DATA_TYPE_2: 두 번째 열의 데이터 유형입니다.
- COLLATION_2: 두 번째 열에 사용할 콜레이션입니다.
- REMOTE_DATABASE: 원격 데이터베이스의 이름입니다.
- REMOTE_USERNAME: 원격 사용자의 사용자 이름입니다.
- REMOTE_TABLE_NAME: 원격 테이블의 이름입니다.
- DB_DATA_SOURCE_NAME: 외부 데이터 소스의 이름입니다.
생성한 외부 Oracle 테이블을 쿼리합니다.
SELECT TOP 10 * FROM EXTERNAL_TABLE_NAME;다음을 바꿉니다.
- EXTERNAL_TABLE_NAME: 쿼리할 외부 테이블의 이름입니다.
Cloud Storage
SQL Server에서 다음 단계를 완료합니다.
Cloud Storage용 데이터베이스 범위 사용자 인증 정보를 만듭니다.
아직 없는 경우 사용자 데이터베이스로 전환하여 마스터 키를 만듭니다.
USE USER_DB; CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';다음을 바꿉니다.
- USER_DB: 마스터 키를 만드는 데 사용할 사용자 데이터베이스입니다.
예를 들면
polybasedb입니다. - MK_PASSWORD: 마스터 키에 사용할 비밀번호입니다. 나중에 사용할 수 있도록 마스터 키의 비밀번호를 저장해야 합니다.
- USER_DB: 마스터 키를 만드는 데 사용할 사용자 데이터베이스입니다.
예를 들면
Cloud Storage에는 액세스 키 ID와 보안 비밀 키 ID가 필요합니다.
CREATE DATABASE SCOPED CREDENTIAL STORAGE_CREDENTIAL_NAME WITH IDENTITY = 'S3 Access Key', SECRET = 'ACCESS_KEY_ID:SECRET_KEY_ID';다음을 바꿉니다.
- STORAGE_CREDENTIAL_NAME: 사용할 Cloud Storage 사용자 인증 정보의 이름입니다.
- ACCESS_KEY_ID: 액세스 키 ID입니다.
- SECRET_KEY_ID: 보안 비밀 키 ID입니다.
기본 인증만 지원됩니다.
외부 데이터 소스를 만듭니다.
CREATE EXTERNAL DATA SOURCE STORAGE_DATA_SOURCE_NAME WITH ( LOCATION = 's3://storage.googleapis.com/', CREDENTIAL = STORAGE_CREDENTIAL_NAME );다음을 바꿉니다.
- STORAGE_DATA_SOURCE_NAME: Cloud Storage의 외부 데이터 소스 이름입니다.
- STORAGE_CREDENTIAL_NAME: 외부 스토리지 리소스의 사용자 인증 정보 이름입니다.
Cloud Storage용 외부 테이블을 만듭니다.
외부 데이터의 형식과 구조를 정의합니다.
- 외부 파일을 만듭니다. 스키마는 파일 구조와 일치해야 합니다.
- 적절한 SQL Server 데이터 유형과 콜레이션으로 열을 정의합니다.
- 위치는 데이터 소스 내의 경로입니다.
CREATE EXTERNAL FILE FORMAT FILE_FORMAT_NAME WITH ( FORMAT_TYPE = FORMAT_TYPE, FORMAT_OPTIONS ( FIELD_TERMINATOR = 'FIELD_TERMINATOR', STRING_DELIMITER = 'DELIMITER', FIRST_ROW = FIRST_ROW ) ); CREATE EXTERNAL TABLE FILE_EXTERNAL_TABLE_NAME ( COLUMN_NAME_1 DATA_TYPE_1, COLUMN_NAME_2 DATA_TYPE_2, ... ) WITH ( LOCATION = 'PATH_TO_BUCKET/FILENAME', DATA_SOURCE = STORAGE_DATA_SOURCE_NAME, FILE_FORMAT = FILE_FORMAT_NAME );다음을 바꿉니다.
- FILE_FORMAT_NAME: 만들려는 외부 파일 형식의 이름입니다.
- FORMAT_TYPE: 사용할 형식 유형입니다(예:
DELIMITEDTEXT). 지원되는 값 목록은 지원되는 파일 형식을 참고하세요. - FIELD_TERMINATOR: 사용할 필드 구분 기호입니다.
- DELIMITER: 사용할 문자열 구분 기호입니다.
- FIRST_ROW: 읽기를 시작할 행입니다.
- FILE_EXTERNAL_TABLE_NAME: 만들려는 외부 테이블의 이름입니다.
- COLUMN_NAME_1: 테이블의 첫 번째 열 이름입니다.
- DATA_TYPE_1: 첫 번째 열의 데이터 유형입니다.
- COLUMN_NAME_2: 테이블의 두 번째 열 이름입니다.
- DATA_TYPE_2: 두 번째 열의 데이터 유형입니다.
- PATH_TO_BUCKET: Cloud Storage 버킷의 전체 경로입니다.
- FILENAME: Cloud Storage 버킷 내에 있는 파일 이름입니다.
- STORAGE_DATA_SOURCE_NAME: Cloud Storage의 외부 데이터 소스 이름입니다.
- FILE_FORMAT_NAME: 외부 파일 형식의 이름입니다.
생성한 외부 Cloud Storage 테이블을 쿼리합니다.
SELECT * FROM FILE_EXTERNAL_TABLE_NAME;다음을 바꿉니다.
- FILE_EXTERNAL_TABLE_NAME: 쿼리할 외부 테이블의 이름입니다.
데이터베이스 복원 작업 후 데이터베이스 마스터 키 관리
외부 데이터 소스에 액세스하는 데 사용되는 데이터베이스 범위 사용자 인증 정보는 데이터베이스 마스터 키 (DMK)를 사용하여 암호화됩니다.
DMK는 소스 인스턴스의 서비스 마스터 키 (SMK)와 사용자가 제공한 DMK 비밀번호로 암호화됩니다. 소스 인스턴스에서 SQL Server는 SMK를 사용하여 DMK를 자동으로 엽니다.
SQL Server용 Cloud SQL 인스턴스를 복원하면 SMK가 변경되어 새 인스턴스에서 DMK가 자동으로 열리지 않습니다.
따라서 먼저 생성 중에 설정된 사용자 비밀번호를 사용하여 DMK를 복호화하고 타겟 인스턴스 SMK로 다시 암호화해야 합니다.
자세한 내용은 다음 Microsoft 리소스를 참고하세요.
로그
로그 탐색기에서 다음 PolyBase 로그를 사용할 수 있습니다.
Polybase_Dms_errors.logPolybase_Dms_movement.logPolybase_DWEngine_errors.logPolybase_DWEngine_movement.logPolybase_DWEngine_server.log
자세한 내용은 PolyBase 문제 해결에 관한 Microsoft 문서를 참고하세요.