View a markdown version of this page

SQL Server에서 PostgreSQL로 변환 설정 - AWS 데이터베이스 마이그레이션 서비스

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SQL Server에서 PostgreSQL로 변환 설정

소스가 Microsoft SQL Server이고 대상이 Amazon RDS for PostgreSQL 또는 Amazon Aurora PostgreSQL인 경우 다음 설정이 적용됩니다. AWS Management Console 또는 ModifyConversionConfiguration API 작업을 사용하여 이러한 설정을 구성할 수 있습니다.

이 주제에서는 SQL Server에서 PostgreSQL로의 변환 경로와 관련된 설정을 다룹니다. DMS Schema Conversion은 이러한 설정 외에도 변환된 SQL의 작업 항목 설명에 대한 심각도 수준과 변환에 생성형 AI를 사용하는 옵션 등 모든 소스 및 대상 페어에 적용되는 설정을 제공합니다. 이러한 설정은 단원을 참조하십시오공통 변환 설정.

API 또는 AWS CLI를 사용하는 경우 섹션 이름 , MSSQL_TO_POSTGRESQL MSSQL_TO_POSTGRESQL_14또는 아래에 변환 경로 설정을 지정합니다MSSQL_TO_POSTGRESQL_15. 버전이 지정된 세 섹션 모두 동일한 키를 허용합니다. 프로젝트에서 사용하는 섹션 이름을 찾으려면 DescribeConversionConfiguration 먼저를 호출하고 응답에 있는 섹션만 업데이트합니다.

각 설정은 AWS Management Console 레이블 뒤에 괄호 안에 API 및 AWS CLI 파라미터 이름이 표시됩니다. API 또는 AWS CLI로 설정을 구성할 때 파라미터 이름을 사용합니다.

메타데이터 설정

객체 이름, 스키마 구조 및 인덱스 정의와 같은 소스 SQL Server 메타데이터가 변환 중에 처리되는 방식을 제어하는 설정입니다.

소스 데이터베이스 객체 이름을 대/소문자를 구분하여 처리(CaseSensitivityNames)

변환 중에 객체 이름(테이블, 열, 프로시저 등)이 처리되는 방식을 제어합니다.

  • true - 객체 이름은 원래 대소문자로 유지되며 큰따옴표 식별자(예: "MyTable")로 래핑됩니다. 애플리케이션이 대소문자 혼합 이름을 사용하여 객체를 참조할 때 사용합니다.

  • false - 객체 이름은 따옴표 없이 소문자로 접힙니다(예: mytable). 이는 기본 PostgreSQL 대/소문자 접기 동작과 일치합니다.

유형: 부울(true | false)

기본값: false

인덱스의 고유한 이름 생성(UniqueIndexGeneration)

DMS Schema Conversion이 대상 PostgreSQL 스키마에서 고유한 인덱스 이름을 생성하는지 여부를 제어합니다. SQL Server에서 인덱스는 여러 테이블에서 동일한 이름을 공유할 수 있습니다. PostgreSQL에서 스키마 내의 모든 인덱스 이름은 고유해야 합니다.

  • true - DMS Schema Conversion은 모든 인덱스에 대해 고유한 이름을 생성하여 충돌을 방지하기 위해 필요한 경우 접미사를 추가합니다. 소스 스키마에 다른 테이블에 동일한 이름의 인덱스가 있는 경우이 옵션을 사용합니다.

  • false - 인덱스 이름은 소스에서 그대로 유지됩니다. 여러 테이블에 동일한 인덱스 이름이 있는 경우 PostgreSQL에 대한 배포가 실패하고 중복 이름 오류가 발생할 수 있습니다.

유형: 부울(true | false)

기본값: true

프로시저를 함수로 변환(ConvertProceduresToFunction)

저장 프로시저가 PostgreSQL 함수 또는 프로시저로 변환되는지 여부를 제어합니다.

  • false - 프로시저가 PostgreSQL PROCEDURE 객체로 변환됩니다(PostgreSQL 11 이상 필요).

  • true - 결과 집합을 반환하는 절차는 PostgreSQL FUNCTION 객체로 변환됩니다. 애플리케이션이 프로시저 호출에서 결과 세트를 읽거나 PostgreSQL 10 이하를 대상으로 할 때 사용합니다.

유형: 부울(true | false)

기본값: false

열린 데이터 세트를 처리하기 위한 추가 루틴 생성(OpenDatasetsProcedures)

의 출력을 테이블에 저장하는 프로시EXEC저가 변환되는 방식을 제어합니다.

  • false - 이러한 패턴은 작업 항목으로 남습니다.

  • true - DMS Schema Conversion은 임시 테이블과 대상에서이 패턴을 에뮬레이션하는 추가 절차를 생성합니다.

유형: 부울(true | false)

기본값: false

스키마 이름(SchemaNameTemplate)

SQL Server 2파트 이름 지정 규칙(데이터베이스 + 스키마)에서 대상 PostgreSQL 스키마 이름이 생성되는 방식을 제어합니다.

콘솔 레이블 API/CLI 값 생성된 대상 스키마 이름
DB_SCHEMA DB_SCHEMA database_schema(예: AdventureWorks_dbo). 이름 충돌을 방지하기 위해 여러 데이터베이스를 동일한 PostgreSQL 인스턴스로 마이그레이션할 때를 사용합니다.
DB DB 데이터베이스(예: AdventureWorks).
스키마 SCHEMA 스키마(예: dbo). 단일 데이터베이스를 마이그레이션할 때 데이터베이스 접두사 없이 스키마 이름을 정리하려는 경우를 사용합니다.

유형: 문자열( 열거형)

기본값: DB_SCHEMA

SQL 코드 설정

변환 중에 식별자, 파라미터, 데이터 유형 및 지원되지 않는 함수와 같은 SQL Server 코드가 처리되는 방식을 제어하는 설정입니다.

객체 이름을 동일한 대/소문자로 유지(AvoidCastingToLowerCase)

DMS Schema Conversion이 변환된 코드의 식별자를 중심으로 자동 LOWER() 캐스팅을 추가할지 여부를 제어합니다.

  • false - DMS Schema Conversion은 사례 비교를 정규화하는 데 필요한 경우 LOWER()캐스트를 추가합니다.

  • true - 자동 LOWER()캐스트가 추가되지 않습니다. PostgreSQL 데이터베이스가 citext 확장 또는 대/소문자를 구분하지 않는 데이터 정렬을 사용하여 기본적으로 비교를 처리할 때 사용합니다.

유형: 부울(true | false)

기본값: false

참고

UseCitextForAllStringDatatypes 활성화된 경우이 설정은 영향을 주지 않습니다. 모든 문자열 유형이에 매핑되면 CITEXT대소문자를 구분하지 않는 비교가 기본적으로 유형 자체에 의해 처리되므로이 설정과 관계없이 LOWER()캐스트가 생성되지 않습니다.

원래 파라미터 이름 유지(KeepOriginalParameterManes)

변환된 PostgreSQL 루틴 서명에 T-SQL 루틴의 원래 파라미터 이름이 보존되는지 여부를 제어합니다.

  • false - PostgreSQL 예약어 또는 명명 규칙과 충돌하지 않도록 파라미터의 이름을 바꿀 수 있습니다.

  • true - 원래 파라미터 이름은 그대로 유지됩니다. 애플리케이션이 명명된 파라미터 구문(예: )을 사용하여 루틴을 호출할 때 사용합니다my_proc(param_name => value).

유형: 부울(true | false)

기본값: false

참고

API 파라미터 이름은 KeepOriginalParameterManes (이름이 아닌 으로 끝남)입니다. API 또는 AWS CLI를 호출할 때이 정확한 철자를 사용합니다. KeepOriginalParameterNames를 사용하면 작동하지 않습니다.

모든 문자열 데이터 유형에 CITEXT 사용(UseCitextForAllStringDatatypes)

모든 문자 열 및 파라미터의 대상 데이터 형식을 제어합니다.

  • false - 문자 유형(CHAR, VARCHAR, NCHAR, NVARCHAR)은 해당 PostgreSQL 유형에 매핑됩니다.

  • true - 모든 문자 유형이에 매핑됩니다CITEXT(대소문자를 구분하지 않는 텍스트). 대/소문자를 구분하지 않는 SQL Server 데이터 정렬에서 마이그레이션할 때 쿼리를 수정하지 않고 PostgreSQL에서 해당 동작을 보존하려는 경우이 옵션을 사용합니다.

유형: 부울(true | false)

기본값: false

참고

이 설정이 활성화되면 DMS Schema Conversion은 변환된 스키마 스크립트CREATE EXTENSION IF NOT EXISTS citext;에를 자동으로 추가합니다(대상에 적용할 때와 파일에 저장할 때 모두). 그러나 변환된 스키마를 적용하기 전에 대상 PostgreSQL 데이터베이스에서 citext 모듈을 사용할 수 있어야 합니다.

UseCitextForAllStringDatatypes를 활성화하면가 대/소문자를 구분하지 않는 비교를 기본적으로 CITEXT 처리하므로 동일한 대/소문자()로 객체 이름 유지 설정은 효과가 없습니다.AvoidCastingToLowerCase

지원되지 않는 내장 객체를 스텁 객체로 변환(ConvUnsupportedBuiltinsToStubs)

DMS Schema Conversion이 직접 PostgreSQL 내장 함수를 발견하면 어떻게 되는지 제어합니다.

  • false - 지원되지 않는 함수는 평가 보고서에서 작업 항목으로 남습니다. 변환된 객체는 수동 검토가 필요한 것으로 표시됩니다.

  • true - 지원되지 않는 함수는 서명이 동일하지만 런타임 오류가 발생하는 스텁 함수로 대체됩니다. 변환된 객체는 성공적으로 컴파일되므로 개별 스텁을 처리하기 전에 나머지 스키마를 배포하고 테스트할 수 있습니다. 스텁 함수는 마이그레이션 문제 7822를 생성합니다.

유형: 부울(true | false)

기본값: false

별도의 스키마에서 스텁 객체 생성(CreateStubsInSeparateSchema)

가 활성화될 때 스텁 객체가 배치되는 위치를 제어ConvUnsupportedBuiltinsToStubs합니다.

  • false - 스텁 객체는 호출 객체와 동일한 스키마에 생성됩니다.

  • true - aws_sqlserver_stub 스텁 객체는 대상의 전용 스키마에 배치됩니다. 이를 사용하여 변환된 애플리케이션 객체에서 스텁 코드를 격리합니다.

유형: 부울(true | false)

기본값: false

예: SQL Server를 PostgreSQL로 구성

다음 예제에서는 SchemaNameTemplate, ConvertProceduresToFunction및를 설정합니다UseCitextForAllStringDatatypes. 프로젝트에서 사용하는 각 섹션 이름에 동일한 설정을 적용합니다(DescribeConversionConfiguration먼저의 출력 확인).

{ "MSSQL_TO_POSTGRESQL_15": { "SchemaNameTemplate": "SCHEMA", "ConvertProceduresToFunction": true, "UseCitextForAllStringDatatypes": true }, "MSSQL_TO_POSTGRESQL_14": { "SchemaNameTemplate": "SCHEMA", "ConvertProceduresToFunction": true, "UseCitextForAllStringDatatypes": true }, "MSSQL_TO_POSTGRESQL": { "SchemaNameTemplate": "SCHEMA", "ConvertProceduresToFunction": true, "UseCitextForAllStringDatatypes": true } }