

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

# SQL Server에서 PostgreSQL로 변환 설정 이해
<a name="schema-conversion-sql-server-postgresql"></a>

DMS Schema Conversion의 경우, SQL Server에서 PostgreSQL로의 변환 설정에는 다음이 포함됩니다.
+ 생성형 AI를 사용하여 해당 데이터베이스 객체를 변환하려면 **생성형 AI** 설정을 활성화합니다. 생성형 AI를 사용하여 성공적으로 변환된 객체는 "이 변환은 데이터의 패턴을 기반으로 예측을 생성하는 기계 학습 모델을 사용합니다"라는 **작업 항목 7744**로 명확하게 식별됩니다. 자세한 내용은 [생성형 AI를 사용하여 데이터베이스 객체 변환](schema-conversion-convert.databaseobjects.md) 단원을 참조하십시오.
+ SQL Server에서는 서로 다른 테이블에서 같은 이름의 인덱스를 사용할 수 있습니다. 하지만 PostgreSQL에서는 스키마에서 사용하는 모든 인덱스 이름이 고유해야 합니다. DMS Schema Conversion이 모든 인덱스에 대해 고유한 이름을 생성하도록 하려면 **인덱스에 고유한 이름 생성**을 선택합니다.
+ PostgreSQL 버전 10 및 이전 버전은 프로시저를 지원하지 않습니다. PostgreSQL에서 프로시저를 사용하는 데 익숙하지 않은 경우는 SQL Server 프로시저를 PostgreSQL 함수로 변환할 AWS DMS 수 있습니다. 이렇게 하려면 **프로시저를 함수로 변환**을 선택합니다.
+ 소스 SQL Server 데이터베이스는 `EXEC`의 출력을 테이블에 저장할 수 있습니다. DMS Schema Conversion은 이 기능을 에뮬레이션하기 위한 임시 테이블과 추가 프로시저를 생성합니다. 이 에뮬레이션을 사용하려면 **열린 데이터세트를 처리할 추가 루틴 생성**을 선택합니다.
+ 변환된 코드의 스키마 이름에 사용할 템플릿을 정의할 수 있습니다. **스키마 이름**에서 다음 옵션 중 하나를 선택합니다.
  + **DB** – PostgreSQL에서 SQL Server 데이터베이스 이름을 스키마 이름으로 사용합니다.
  + **SCHEMA** – PostgreSQL에서 SQL Server 스키마 이름을 스키마 이름으로 사용합니다.
  + **DB\$1SCHEMA** – PostgreSQL에서 SQL Server 데이터베이스와 스키마 이름의 조합을 스키마 이름으로 사용합니다.
+ 소스 피연산자의 이름에 문자 대소문자를 유지할 수 있습니다. 피연산자 이름을 소문자로 변환되는 것을 방지하려면 **대소문자를 구분하는 연산에서는 소문자로 변환하지 마세요**를 선택합니다. 이 옵션은 소스 데이터베이스에서 대소문자 구분 기능이 활성화된 경우에만 적용됩니다.
+ 소스 데이터베이스의 파라미터 이름을 유지할 수 있습니다. DMS Schema Conversion은 변환된 코드의 파라미터 이름에 큰따옴표를 추가할 수 있습니다. 이렇게 하려면 **원래 파라미터 이름 유지**를 선택합니다.
+ 소스 데이터베이스에서 루틴 파라미터 길이를 유지할 수 있습니다. DMS Schema Conversion은 도메인을 생성하고 이를 사용하여 루틴 파라미터 길이를 지정합니다. 이렇게 하려면 **파라미터 길이 유지**를 선택합니다.
+ 지원되지 않는 기본 제공 객체를 스텁 객체로 변환하려면 **지원되지 않는 기본 제공 객체를 스텁 객체로 변환** 설정을 활성화합니다.
  +  활성화되면 DMS SC는 지원되지 않는 기본 제공 객체를 대상 데이터베이스의 해당 스텁 객체로 바꿉니다. 이 기능은 일반적으로 마이그레이션 문제 7811 또는 7904로 묶이는 코드 섹션을 변환합니다. 프로시저의 경우 소스 기본 제공 객체 `PROCEDURE`를, 뷰나 테이블의 경우 `VIEW`를 기준으로 스텁 객체를 생성합니다.

    지원되지 않는 객체를 직접 호출하여 소스 데이터베이스 객체를 변환하면 스텁 객체 및 마이그레이션 문제 7822가 호출됩니다.

    별도의 스키마에서 스텁 객체 생성 옵션을 활성화하여 **별도의 스키마에서 스텁 객체를 생성**하도록 선택할 수 있습니다. 선택하면 스텁 객체가 대상 데이터베이스에 `aws_sqlserver_stub` 이름이 지정된 특수 스키마에 생성됩니다. 선택하지 않으면 직접 호출 객체와 동일한 스키마에 생성됩니다.
  + 스텁 루틴은 원래 기본 제공의 정규화된 이름을 기반으로 이름이 지정됩니다. 스텁 보기의 경우 `system_schema_name$builtin_view_name` 이름 지정 규칙에 시스템 스키마 이름이 포함됩니다.

    다시 변환하는 동안 DMS SC는 대상 데이터베이스의 기존 스텁 루틴을 확인합니다. 동일한 이름과 입력 파라미터를 가진 루틴이 이미 존재하는 경우 덮어쓰지 않습니다.

    변환 후 필요에 따라 스텁 루틴에 대한 사용자 지정 코드를 검토하고 구현합니다.
+ `CITEXT` DMS Schema Conversion의 모든 문자열 데이터 형식 설정에 대한 데이터 형식에는 다음이 포함됩니다.
  + SQL Server에서 PostgreSQL로 변환할 때 대소문자를 구분하지 않는 문자열 작업에 `CITEXT` 데이터 유형을 사용하려면 **모든 문자열 데이터 유형에 CITEXT 사용** 설정을 활성화합니다. 이 옵션은 대소문자를 구분하지 않는 SQL Server에서 대소문자를 구분하는 PostgreSQL 환경으로 마이그레이션할 때 일관된 동작을 유지하는 데 도움이 됩니다.
  + 활성화되면 DMS SC는 소스 SQL Server 데이터베이스의 모든 관련 문자열 데이터 유형을 PostgreSQL의 `CITEXT`로 변환합니다. 따라서 조건에서 명시적 LOWER() 함수 호출이 필요하지 않으며 조건부 작업에서 문자열 표현식을 `CITEXT`로 자동 캐스팅합니다.
  + SQL Server 인스턴스가 대/소문자를 구분하는지 확인하려면 다음 쿼리를 실행합니다.

    ```
    SELECT SERVERPROPERTY('COLLATION');
    ```

    'CI'가 포함된 결과는 대소문자를 구분하지 않고 'CS'는 대소문자를 구분합니다.
  + 서버, 데이터베이스 또는 열 수준에서 명시적으로 대/소문자를 구분하는 데이터 정렬 설정이 사용되는 시나리오에서는 `CITEXT` 변환이 적용되지 않을 수 있습니다.

    이 기능을 사용하려면 `CITEXT` 모듈이 대상 PostgreSQL 데이터베이스에 설치되어 있고 사용 가능한지 확인합니다.
  + `CITEXT` 데이터 유형 변환을 사용할 때는 다음 모범 사례를 고려하세요.
    + PostgreSQL에서 일관된 동작을 유지하기 위해 대/소문자를 구분하지 않는 SQL Server에서 마이그레이션할 때이 기능을 활성화합니다.
    + 애플리케이션 코드를 검토하여 대소문자를 구분하는 문자열 작업에 의존하지 않는지 확인합니다.
    + 마이그레이션 후 애플리케이션을 철저히 테스트하여 대소문자를 구분하지 않는 동작이 예상대로 유지되는지 확인합니다.