SQL Server 커넥터
SQL Server 커넥터 (SQL Server connector)
SQL Server 커넥터는 Trino 쿼리에서 외부 Microsoft SQL Server 데이터베이스의 데이터를 조회하고 테이블을 만들 수 있게 해줍니다. 커넥터를 활용하면 SQL Server와 Hive처럼 서로 다른 시스템, 또는 두 SQL Server 인스턴스의 데이터를 조인할 수 있어요.
출처: 문서
본문
요구 사항 (Requirements)
SQL Server에 연결하려면 다음이 필요합니다:
- SQL Server 2019 이상, 또는 Azure SQL Database.
- Trino 코디네이터와 워커에서 SQL Server로의 네트워크 접근. 기본 포트는 1433.
설정 (Configuration)
주어진 SQL Server 인스턴스의 단일 데이터베이스를 조회할 수 있습니다. connector.name을 sqlserver로 설정해 SQL Server 커넥터를 지정하는 카탈로그 속성 파일을 만드세요.
예를 들어 데이터베이스에 example로 접근하려면 etc/catalog/example.properties 파일을 만들고, 자신의 설정에 맞게 연결 속성을 바꿔주세요:
connector.name=sqlserver
connection-url=jdbc:sqlserver://<host>:<port>;databaseName=<databaseName>;encrypt=false
connection-user=root
connection-password=secret
connection-url은 SQL Server JDBC 드라이버에 전달할 연결 정보와 파라미터를 정의합니다. URL의 지원 파라미터는 SQL Server JDBC 드라이버 문서에서 확인할 수 있습니다.
connection-user와 connection-password는 일반적으로 필수이며 연결 자격 증명(보통 서비스 사용자)을 결정합니다. 시크릿 (secrets)을 사용하면 카탈로그 속성 파일에 실제 값을 넣지 않고도 관리할 수 있습니다.
연결 보안 (Connection security)
JDBC 드라이버, 따라서 커넥터는 자동으로 TLS 암호화와 인증서 검증을 사용합니다. 이를 위해서는 SQL Server 데이터베이스 호스트에 적절한 TLS 인증서가 설정되어 있어야 합니다.
필요한 설정이 없다면 연결 문자열의 encrypt 속성으로 암호화를 비활성화할 수 있습니다:
connection-url=jdbc:sqlserver://<host>:<port>;databaseName=<databaseName>;encrypt=false
trustServerCertificate, hostNameInCertificate, trustStore, trustStorePassword 같은 추가 파라미터는 SQL Server JDBC 드라이버 문서의 TLS 섹션에 자세히 나와 있습니다.
데이터 소스 인증 (Data source authentication)
커넥터는 데이터 소스 연결용 자격 증명을 여러 방법으로 제공할 수 있습니다:
- 커넥터 설정 파일에 inline으로
- 별도의 properties 파일로
- 키 스토어 파일로
- Trino에 연결할 때 추가 자격 증명 (extra credentials)으로
시크릿 (secrets)을 활용하면 카탈로그 속성 파일에 민감한 값을 저장하지 않을 수 있어요.
| 속성 이름 | 설명 |
|---|---|
credential-provider.type |
자격 증명 공급자 유형. INLINE, FILE, KEYSTORE 중 하나여야 하며 기본값은 INLINE. |
connection-user |
연결 사용자 이름. |
connection-password |
연결 비밀번호. |
user-credential-name |
사용자 이름으로 사용할 추가 자격 증명 속성 이름. |
password-credential-name |
비밀번호로 사용할 추가 자격 증명 속성 이름. |
connection-credential-file |
자격 증명이 있는 properties 파일 위치. connection-user와 connection-password 속성을 포함해야 합니다. |
keystore-file-path |
자격 증명을 읽을 Java Keystore 파일 위치. |
keystore-type |
키 스토어 파일 형식(예: JKS 또는 PEM). |
keystore-password |
키 스토어 비밀번호. |
keystore-user-credential-name |
사용자 이름으로 사용할 키 스토어 엔티티 이름. |
keystore-user-credential-password |
사용자 이름 키 스토어 엔티티의 비밀번호. |
keystore-password-credential-name |
비밀번호로 사용할 키 스토어 엔티티 이름. |
keystore-password-credential-password |
비밀번호 키 스토어 엔티티의 비밀번호. |
여러 SQL Server 데이터베이스 또는 서버 (Multiple SQL Server databases or servers)
SQL Server 커넥터는 단일 카탈로그 안의 단일 SQL Server 데이터베이스에만 접근할 수 있습니다. 따라서 여러 SQL Server 데이터베이스나 여러 인스턴스에 연결하려면 SQL Server 커넥터를 여러 개 설정해야 합니다.
다른 카탈로그를 추가하려면 etc/catalog에 다른 이름의 properties 파일을 추가하면 됩니다. 예를 들어 sales.properties라는 파일을 만들면 Trino가 sales라는 카탈로그를 생성합니다.
일반 설정 속성 (General configuration properties)
| 속성 이름 | 설명 | 기본값 |
|---|---|---|
case-insensitive-name-matching |
대소문자 구분 없는 스키마/테이블 이름 지원 여부. | false |
case-insensitive-name-matching.cache-ttl |
대소문자 구분 없는 이름이 캐시되는 기간. | 1m |
case-insensitive-name-matching.config-file |
이름 매핑 설정 파일(JSON) 경로. | null |
case-insensitive-name-matching.config-file.refresh-period |
이름 매핑 파일 변경 확인 주기. | 0s |
metadata.cache-ttl |
테이블/컬럼 통계를 포함한 메타데이터 캐시 기간. | 0s |
metadata.cache-missing |
메타데이터가 없음을 캐시할지 여부. | false |
metadata.schemas.cache-ttl |
스키마 메타데이터 캐시 기간. | metadata.cache-ttl 값 |
metadata.tables.cache-ttl |
테이블 메타데이터 캐시 기간. | metadata.cache-ttl 값 |
metadata.statistics.cache-ttl |
테이블 통계 캐시 기간. | metadata.cache-ttl 값 |
metadata.cache-maximum-size |
메타데이터 캐시에 저장되는 최대 객체 수. | 10000 |
write.batch-size |
배치 실행에서의 최대 명령문 수. 기본값에서 바꾸지 마세요. | 1000 |
dynamic-filtering.enabled |
동적 필터를 JDBC 쿼리로 푸시다운. | true |
dynamic-filtering.wait-timeout |
JDBC 쿼리 시작 전에 조인의 빌드 측에서 동적 필터가 모이기를 기다리는 최대 시간. 큰 타임아웃은 더 상세한 동적 필터를 만들 수 있지만 일부 쿼리 대기 시간을 늘릴 수 있습니다. | 20s |
쿼리 메타데이터 추가 (Appending query metadata)
query.comment-format 선택 파라미터로 각 쿼리와 함께 데이터 소스에 전송되는 SQL 주석을 설정할 수 있습니다. 이 주석의 형식은 어떤 문자든 포함할 수 있으며 다음 메타데이터를 지원합니다:
$QUERY_ID: 쿼리 식별자.$USER: 쿼리를 Trino에 제출한 사용자 이름.$SOURCE: 쿼리를 제출하는 데 사용된 클라이언트 도구 식별자 (예:trino-cli).$TRACE_TOKEN: 클라이언트 도구로 설정된 추적 토큰.
주석은 쿼리에 더 많은 맥락을 제공할 수 있으며, 이 정보는 데이터 소스의 로그에서 확인할 수 있습니다. Trino 클러스터의 환경 변수를 주석에 포함하려면 ${ENV:VARIABLE-NAME} 문법을 사용하세요.
다음 예제는 Trino가 보내는 각 쿼리를 식별하는 간단한 주석을 설정합니다:
query.comment-format=Query sent by Trino.
이 설정에서 SELECT * FROM example_table; 같은 쿼리는 주석이 덧붙여져 데이터 소스로 전송됩니다:
SELECT * FROM example_table; /*Query sent by Trino.*/
다음 예제는 메타데이터를 사용해 앞선 예제를 개선합니다:
query.comment-format=Query $QUERY_ID sent by user $USER from Trino.
Jane이 쿼리 식별자 20230622_180528_00000_bkizg로 쿼리를 보냈다면 다음 주석 문자열이 데이터 소스로 전송됩니다:
SELECT * FROM example_table; /*Query 20230622_180528_00000_bkizg sent by user Jane from Trino.*/
일부 JDBC 드라이버 설정과 로깅 구성은 주석이 제거되게 할 수 있습니다.
도메인 압축 임계값 (Domain compaction threshold)
큰 조건 목록을 데이터 소스로 푸시다운하면 성능이 저하될 수 있습니다. Trino는 기본적으로 큰 조건을 더 단순한 범위 조건으로 압축해 성능과 조건 푸시다운 사이의 균형을 맞춥니다. domain-compaction-threshold 카탈로그 설정 속성 또는 domain_compaction_threshold 카탈로그 세션 속성으로 이 임계값의 기본값인 256을 조정할 수 있습니다.
특정 설정 속성 (Specific configuration properties)
SQL Server 커넥터는 커넥터 동작과 데이터베이스에 발행하는 쿼리를 구성하는 추가 카탈로그 속성을 지원합니다.
| 속성 이름 | 설명 |
|---|---|
sqlserver.snapshot-isolation.disabled |
SQL Server에서 Trino가 발행하는 트랜잭션의 스냅샷 격리 자동 사용을 제어. 기본값 false로 스냅샷 격리가 활성화됨. |
대소문자 구분 없는 매칭 (Case insensitive matching)
case-insensitive-name-matching을 true로 설정하면 Trino는 소문자 이름을 원격 시스템의 실제 이름에 매핑해 비소문자 스키마와 테이블을 조회할 수 있습니다. 다만 이름이 대소문자만 다른 두 스키마/테이블("customers"와 "Customers")이 있으면 모호성 때문에 조회가 실패합니다.
이런 경우 case-insensitive-name-matching.config-file 카탈로그 설정 속성으로 원격 스키마/테이블을 각각의 Trino 스키마/테이블에 매핑하는 설정 파일을 지정하세요. JSON 파일은 빈 배열이라도 schemas와 tables 속성을 모두 포함해야 합니다.
{
"schemas": [
{
"remoteSchema": "CaseSensitiveName",
"mapping": "case_insensitive_1"
},
{
"remoteSchema": "cASEsENSITIVEnAME",
"mapping": "case_insensitive_2"
}],
"tables": [
{
"remoteSchema": "CaseSensitiveName",
"remoteTable": "tablex",
"mapping": "table_1"
},
{
"remoteSchema": "CaseSensitiveName",
"remoteTable": "TABLEX",
"mapping": "table_2"
}]
}
mapping 속성에 정의된 테이블/스키마 중 하나를 대상으로 한 쿼리는 해당 원격 엔티티에 대해 실행됩니다. 매핑 설정 파일이 변경되면 기본적으로 Trino를 재시작해야 변경 사항이 로드됩니다. case-insensitive-name-matching.config-file.refresh-period를 설정하면 재시작 없이 속성을 갱신할 수 있습니다:
case-insensitive-name-matching.config-file.refresh-period=30s
장애 허용 실행 지원 (Fault-tolerant execution support)
커넥터는 쿼리 처리의 장애 허용 실행을 지원합니다. 어떤 재시도 정책으로든 읽기와 쓰기 연산 모두 지원됩니다.
SQL Server 조회 (Querying SQL Server)
SQL Server 커넥터는 설정된 데이터베이스에서 지정된 사용자에게 보이는 모든 스키마에 대한 접근을 제공합니다. 다음 예제에서는 SQL Server 카탈로그가 example이라고 가정합니다.
SHOW SCHEMAS로 사용 가능한 스키마를 확인할 수 있습니다:
SHOW SCHEMAS FROM example;
web이라는 스키마가 있으면 SHOW TABLES로 이 스키마의 테이블을 볼 수 있습니다:
SHOW TABLES FROM example.web;
web 스키마의 clicks 테이블 컬럼 목록은 다음 중 하나로 확인할 수 있습니다:
DESCRIBE example.web.clicks;
SHOW COLUMNS FROM example.web.clicks;
마지막으로 web 스키마의 clicks 테이블을 조회할 수 있습니다:
SELECT * FROM example.web.clicks;
데이터 유형 매핑 (Type mapping)
Trino와 SQL Server는 서로 지원하지 않는 유형이 있으므로, 이 커넥터는 데이터를 읽거나 쓸 때 일부 유형을 변환합니다. 각 방향의 매핑은 아래 표를 참고하세요.
SQL Server 유형에서 Trino 유형으로의 매핑:
| SQL Server 유형 | Trino 유형 | 비고 |
|---|---|---|
BIT |
BOOLEAN |
|
TINYINT |
SMALLINT |
SQL Server TINYINT는 실제로 unsigned TINYINT |
SMALLINT |
SMALLINT |
|
INTEGER |
INTEGER |
|
BIGINT |
BIGINT |
|
DOUBLE PRECISION |
DOUBLE |
|
FLOAT[(n)] |
REAL 또는 DOUBLE |
숫자 유형 매핑 참고 |
REAL |
REAL |
|
DECIMAL[(p[, s])], NUMERIC[(p[, s])] |
DECIMAL(p, s) |
|
CHAR[(n)] |
CHAR(n) |
Trino 유형에서 SQL Server 유형으로의 매핑:
| Trino 유형 | SQL Server 유형 | 비고 |
|---|---|---|
BOOLEAN |
BIT |
|
TINYINT |
TINYINT |
Trino는 [0, 127] 범위의 값만 쓰기 지원 |
SMALLINT |
SMALLINT |
|
INTEGER |
INTEGER |
|
BIGINT |
BIGINT |
|
REAL |
REAL |
|
DOUBLE |
DOUBLE PRECISION |
|
DECIMAL(p, s) |
DECIMAL(p, s) |
|
CHAR(n) |
NCHAR(n) 또는 NVARCHAR(max) |
character 유형 매핑 참고 |
VARCHAR(n) |
NVARCHAR(n) 또는 NVARCHAR(max) |
character 유형 매핑 참고 |
VARBINARY |
VARBINARY(max) |
|
DATE |
DATE |
|
TIME(n) |
TIME(n) |
숫자 유형 매핑 (Numeric type mapping)
SQL Server FLOAT[(n)]의 경우:
n이 지정되지 않으면 TrinoDouble로 매핑.n이 124이면 Trino53이면Real로, 25Double로 매핑.
character 유형 매핑 (Character type mapping)
Trino CHAR(n)의 경우:
n이 1~4000이면 SQL ServerNCHAR(n)으로 매핑.n이 4000보다 크면 SQL ServerNVARCHAR(max)로 매핑.
Trino VARCHAR(n)의 경우:
n이 1~4000이면 SQL ServerNVARCHAR(n)으로 매핑.n이 4000보다 크면 SQL ServerNVARCHAR(max)로 매핑.
유형 매핑 설정 속성 (Type mapping configuration properties)
| 속성 이름 | 설명 | 기본값 |
|---|---|---|
unsupported-type-handling |
지원되지 않는 컬럼 유형 처리 방식: IGNORE(컬럼 접근 불가) 또는 CONVERT_TO_VARCHAR(무제한 VARCHAR로 변환). 해당 카탈로그 세션 속성은 unsupported_type_handling. |
IGNORE |
jdbc-types-mapped-to-varchar |
무제한 VARCHAR로 변환할 유형의 쉼표 구분 목록을 강제 매핑. |
— |
SQL 지원 (SQL support)
커넥터는 SQL Server의 데이터와 메타데이터에 대해 읽기/쓰기 접근을 제공합니다. 전역 사용 가능 명령문과 읽기 연산 명령문에 더해 다음 기능을 지원합니다:
- INSERT — 비트랜잭션 INSERT 참고
- UPDATE — UPDATE 제한 참고
- DELETE — DELETE 제한 참고
- TRUNCATE
- 스키마/테이블 관리 — ALTER TABLE RENAME TO 제한 참고
- 프로시저
- 테이블 함수
비트랜잭션 INSERT (Non-transactional INSERT)
커넥터는 INSERT 문으로 행 추가를 지원합니다. 기본적으로 데이터는 임시 테이블에 먼저 기록됩니다. insert.non-transactional-insert.enabled 카탈로그 속성 또는 해당 non_transactional_insert 카탈로그 세션 속성을 true로 설정하면 이 단계를 건너뛰고 대상 테이블에 직접 기록해 성능을 높일 수 있습니다.
이 속성을 켜면 드물게 insert 작업 중 예외가 발생할 때 데이터가 손상될 수 있습니다. 트랜잭션이 비활성화되므로 롤백이 불가능합니다.
UPDATE 제한 (UPDATE limitation)
상수 할당과 상수 조건을 가진 UPDATE 문만 지원합니다. 예를 들어:
UPDATE table SET col1 = 1 WHERE col3 = 1
산술 표현식, 함수 호출 등 비상수 UPDATE 문은 지원되지 않습니다. 예를 들어:
UPDATE table SET col1 = col2 + 2 WHERE col3 = 1
한 행의 모든 컬럼 값을 동시에 갱신할 수는 없습니다:
UPDATE table SET col1 = 1, col2 = 2, col3 = 3 WHERE col3 = 1
DELETE 제한 (DELETE limitation)
WHERE 절이 지정되면 해당 절의 조건을 데이터 소스에 완전히 푸시다운할 수 있을 때만 DELETE가 동작합니다.
ALTER TABLE RENAME TO 제한 (ALTER TABLE RENAME TO limitation)
여러 스키마에 걸친 테이블 이름 변경은 지원하지 않습니다:
ALTER TABLE example.schema_one.table_one RENAME TO example.schema_one.table_two
다음 문은 스키마를 넘어 이름을 바꾸려 하므로 지원되지 않습니다:
ALTER TABLE example.schema_one.table_one RENAME TO example.schema_two.table_two
프로시저 (Procedures)
system.flush_metadata_cache()
JDBC 메타데이터 캐시를 비웁니다:
USE example.example_schema;
CALL system.flush_metadata_cache();
system.execute('query')
execute 프로시저는 연결된 데이터 소스에서 쿼리를 직접 실행하게 해줍니다. 쿼리는 연결된 데이터 소스의 지원 문법을 사용해야 합니다. Trino에 없는 기능에 접근하거나, 결과 집합을 반환하지 않아 query나 raw_query 패스스루 테이블 함수로 사용할 수 없는 쿼리를 실행할 때 유용합니다.
쿼리 텍스트는 Trino가 파싱하지 않고 그대로 전달하므로, 연결된 데이터 소스의 보안/접근 제어만 적용됩니다.
USE example.example_schema;
CALL system.execute(query => 'ALTER TABLE your_table ALTER COLUMN your_column DROP DEFAULT');
테이블 함수 (Table functions)
커넥터는 SQL Server에 접근하기 위한 특정 테이블 함수를 제공합니다.
query(varchar) -> table
query 함수는 연결된 데이터베이스를 직접 조회하게 해줍니다. 전체 쿼리가 푸시다운되어 SQL Server에서 처리되므로 SQL Server 고유 문법이 필요합니다.
연결된 데이터 소스에 전달되는 네이티브 쿼리는 결과 집합으로 테이블을 반환해야 합니다. 검증과 보안 검사는 오직 데이터 소스가 자체 설정으로 수행합니다. 패스스루 쿼리는 데이터 읽기에만 사용하세요.
예를 들어 example 카탈로그를 조회해 인구 기준 상위 10% 국가를 선택합니다:
SELECT
*
FROM
TABLE(
example.system.query(
query => 'SELECT
TOP(10) PERCENT *
FROM
tpch.nation
ORDER BY
population DESC'
)
);
procedure(varchar) -> table
procedure 함수는 연결된 데이터베이스에서 저장 프로시저를 직접 실행하게 해줍니다. 전체 쿼리가 푸시다운되어 SQL Server에서 처리되므로 SQL Server 고유 문법이 필요합니다. 이 테이블 함수를 사용하려면 sqlserver.stored-procedure-table-function-enabled을 true로 설정하세요.
procedure 함수는 여러 명령문을 반환하거나, select가 아닌 명령문을 사용하거나, 출력 파라미터를 사용하거나, 조건문을 사용하는 StoredProcedure 실행을 지원하지 않습니다.
이 기능은 실험적입니다. 보안 영향이 있으며 문법이 변경되고 하위 호환되지 않을 수 있습니다.
다음 예제는 example 카탈로그와 example_schema 스키마에서 저장 프로시저 employee_sp를 실행합니다:
SELECT
*
FROM
TABLE(
example.system.procedure(
query => 'EXECUTE example_schema.employee_sp'
)
);
저장 프로시저 employee_sp에 입력이 필요하면 프로시저 명령문에 파라미터 값을 덧붙이세요:
SELECT
*
FROM
TABLE(
example.system.procedure(
query => 'EXECUTE example_schema.employee_sp 0'
)
);
쿼리 엔진은 이 함수의 결과 순서를 보존하지 않습니다. 전달한 쿼리에 ORDER BY 절이 있으면 함수 결과 순서가 예상과 다를 수 있습니다.
성능 (Performance)
커넥터는 다음 섹션에 설명된 여러 성능 개선을 포함합니다.
테이블 통계 (Table statistics)
SQL Server 커넥터는 비용 기반 최적화를 위해 테이블/컬럼 통계를 사용해 실제 데이터에 기반한 쿼리 처리 성능을 높일 수 있습니다.
통계는 SQL Server가 수집하고 커넥터가 가져옵니다. 커넥터는 단일 컬럼 통계에 저장된 정보를 사용할 수 있습니다. SQL Server 데이터베이스는 특정 컬럼에 대해 컬럼 통계를 자동으로 만들 수 있습니다. 특정 컬럼에 대해 자동으로 통계가 만들어지지 않으면 다음 문으로 만들 수 있습니다:
CREATE STATISTICS example_statistics_name ON table_schema.table_name (column_name);
SQL Server 데이터베이스는 통계를 정기적으로 갱신합니다. 어떤 경우에는 통계 갱신을 강제하고 싶을 수 있습니다 (예: 새 컬럼 통계 정의 후, 또는 테이블 데이터 변경 후):
UPDATE STATISTICS table_schema.table_name;
푸시다운 (Pushdown)
커넥터는 다음 연산에 대해 푸시다운을 지원합니다:
- 조인 푸시다운
- LIMIT 푸시다운
- Top-N 푸시다운
- 다음 함수에 대한 집계 푸시다운:
avg(),count(),max(),min(),sum(),stddev(),stddev_pop(),stddev_samp(),variance(),var_pop(),var_samp()
커넥터는 성능이 향상될 수 있는 곳에서 푸시다운을 수행하지만, 정확성을 지키기 위해 일부 연산은 푸시다운되지 않을 수 있습니다.
비용 기반 조인 푸시다운 (Cost-based join pushdown)
커넥터는 조인 연산을 데이터 소스로 푸시다운할지 여부를 지능적으로 결정하는 비용 기반 조인 푸시다운을 지원합니다. 활성화되면 사용 가능한 테이블 통계가 성능을 개선한다고 시사할 때만 조인 연산을 푸시다운합니다.
| 속성 이름 | 설명 | 기본값 |
|---|---|---|
join-pushdown.enabled |
조인 푸시다운 활성화. 해당 카탈로그 세션 속성은 join_pushdown_enabled. |
true |
join-pushdown.strategy |
조인 푸시다운 여부를 평가하는 전략. AUTOMATIC이면 비용 기반 조인 푸시다운, EAGER이면 가능할 때마다 조인 푸시다운. EAGER는 테이블 통계가 없어도 푸시다운하므로 쿼리 성능 저하가 생길 수 있어 테스트/트러블슈팅 용도로만 권장. |
AUTOMATIC |
조건 푸시다운 지원 (Predicate pushdown support)
SQL Server의 기본 컬럼이 대소문자 구분 콜레이션을 사용하면 커넥터는 VARCHAR와 NVARCHAR 컬럼의 조건 푸시다운을 지원합니다.
다음 연산자가 푸시다운됩니다: =, <>, IN, NOT IN. 정확한 결과를 보장하기 위해 대소문자 구분 없는 콜레이션을 사용하는 컬럼에는 연산자가 푸시다운되지 않습니다.
벌크 삽입 (Bulk insert)
선택적으로 벌크 복사 API를 사용해 쓰기 연산을 크게 빠르게 할 수 있습니다.
벌크 복사를 활성화하고 대상 테이블 잠금을 설정해 최소 로깅 요구 사항을 충족하세요.
| 속성 이름 | 설명 | 기본값 |
|---|---|---|
sqlserver.bulk-copy-for-write.enabled |
쓰기에 SQL Server 벌크 복사 API 사용. 해당 카탈로그 세션 속성은 bulk_copy_for_write. |
false |
sqlserver.bulk-copy-for-write.lock-destination-table |
쓰기 연산 시 대상 테이블에 벌크 업데이트 잠금 획득. 해당 카탈로그 세션 속성은 bulk_copy_for_write_lock_destination_table. bulk-copy-for-write.enabled=true일 때만 사용. |
false |
제한 사항:
- 앞뒤 공백이 있는 컬럼 이름은 지원되지 않습니다.
데이터 압축 (Data compression)
data_compression 테이블 속성으로 SQL Server 테이블의 데이터 압축 정책을 지정할 수 있습니다. 유효한 정책은 NONE, ROW, PAGE입니다.
예제:
CREATE TABLE example_schema.scientists (
recordkey VARCHAR,
name VARCHAR,
age BIGINT,
birthday DATE
)
WITH (
data_compression = 'ROW'
);
더 알아보기 (Learn more)
SQL Server 커넥터로 다른 데이터 소스와 데이터를 조합해보세요. 커넥터의 일반적인 개념은 커넥터 개요 문서에서 확인할 수 있어요.