

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

# SQL Server를 MySQL로 변환
<a name="CHAP_Source.SQLServer.ToMySQL"></a>

변환된 MySQL 코드에서 Microsoft SQL Server 데이터베이스 함수를 에뮬레이션하려면 AWS SCT에서 SQL Server-MySQL 확장 팩을 사용합니다. 확장 팩에 대한 자세한 내용은 [에서 확장 팩 사용 AWS Schema Conversion Tool](CHAP_ExtensionPack.md) 섹션을 참조하세요.

**Topics**
+ [MySQL을 대상 데이터베이스로 사용하기 위한 권한](#CHAP_Source.SQLServer.ToMySQL.ConfigureTarget)
+ [SQL Server에서 MySQL로의 변환 설정](#CHAP_Source.SQLServer.ToMySQL.ConversionSettings)
+ [마이그레이션 고려 사항](#CHAP_Source.SQLServer.ToMySQL.MigrationConsiderations)

## MySQL을 대상 데이터베이스로 사용하기 위한 권한
<a name="CHAP_Source.SQLServer.ToMySQL.ConfigureTarget"></a>

MySQL을 대상으로 사용하기 위해 필요한 권한은 다음과 같습니다.
+ CREATE ON \$1.\$1
+ ALTER ON \$1.\$1
+ DROP ON \$1.\$1
+ INDEX ON \$1.\$1
+ REFERENCES ON \$1.\$1
+ SELECT ON \$1.\$1
+ CREATE VIEW ON \$1.\$1
+ SHOW VIEW ON \$1.\$1
+ TRIGGER ON \$1.\$1
+ CREATE ROUTINE ON \$1.\$1
+ ALTER ROUTINE ON \$1.\$1
+ EXECUTE ON \$1.\$1
+ INSERT, UPDATE ON AWS\$1SQLSERVER\$1EXT.\$1
+ INSERT, UPDATE, DELETE ON AWS\$1SQLSERVER\$1EXT\$1DATA.\$1
+ CREATE TEMPORARY TABLES ON AWS\$1SQLSERVER\$1EXT\$1DATA.\$1

다음 코드 예제를 사용하여 데이터베이스 사용자를 생성하고 권한을 부여할 수 있습니다.

```
CREATE USER 'user_name' IDENTIFIED BY 'your_password';
GRANT CREATE ON *.* TO 'user_name';
GRANT ALTER ON *.* TO 'user_name';
GRANT DROP ON *.* TO 'user_name';
GRANT INDEX ON *.* TO 'user_name';
GRANT REFERENCES ON *.* TO 'user_name';
GRANT SELECT ON *.* TO 'user_name';
GRANT CREATE VIEW ON *.* TO 'user_name';
GRANT SHOW VIEW ON *.* TO 'user_name';
GRANT TRIGGER ON *.* TO 'user_name';
GRANT CREATE ROUTINE ON *.* TO 'user_name';
GRANT ALTER ROUTINE ON *.* TO 'user_name';
GRANT EXECUTE ON *.* TO 'user_name';
GRANT INSERT, UPDATE ON AWS_SQLSERVER_EXT.* TO 'user_name';
GRANT INSERT, UPDATE, DELETE ON AWS_SQLSERVER_EXT_DATA.* TO 'user_name';
GRANT CREATE TEMPORARY TABLES ON AWS_SQLSERVER_EXT_DATA.* TO 'user_name';
```

이전 예제에서 *user\$1name*을 사용자 이름으로 바꿉니다. 그런 다음 *your\$1password*를 안전한 암호로 바꿉니다.

MySQL 데이터베이스 버전 5.7 이하를 대상으로 사용하는 경우 다음 명령을 실행합니다. MySQL 데이터베이스 버전 8.0 이상에서는 이 명령이 더 이상 사용되지 않습니다.

```
GRANT SELECT ON mysql.proc TO 'user_name';
```

Amazon RDS for MySQL 또는 Amazon RDS for Aurora MySQL을 대상으로 사용하려면 `lower_case_table_names` 파라미터를 `1`로 설정합니다. 이 값은 MySQL 서버가 테이블, 인덱스, 트리거 및 데이터베이스와 같은 객체 이름의 식별자를 대소문자 구분 없이 처리한다는 것을 의미합니다. 대상 인스턴스에서 이진 로깅을 활성화했다면 `log_bin_trust_function_creators` 파라미터를 `1`로 설정합니다. 이 경우 저장된 함수를 생성하기 위해 `DETERMINISTIC`, `READS SQL DATA` 또는 `NO SQL` 특성을 사용할 필요가 없습니다. 이들 파라미터를 구성하려면 새 DB 파라미터 그룹을 생성하거나 기존 DB 파라미터 그룹을 수정해야 합니다.

## SQL Server에서 MySQL로의 변환 설정
<a name="CHAP_Source.SQLServer.ToMySQL.ConversionSettings"></a>

SQL Server에서 MySQL로의 변환 설정을 편집하려면에서 **설정을** AWS SCT 선택한 다음 **변환 설정을** 선택합니다. 상단 목록에서 **SQL Server**를 선택한 다음 **SQL Server – MySQL**을 선택합니다. AWS SCT 는 SQL Server에서 MySQL로의 변환에 사용할 수 있는 모든 설정을 표시합니다.

의 SQL Server에서 MySQL로의 변환 설정에는 다음에 대한 옵션이 AWS SCT 포함됩니다.
+ 변환된 코드에서 작업 항목이 포함된 설명의 수를 제한합니다.

  **선택한 심각도 이상의 작업 항목에 대해 변환된 코드에 주석 추가에서** 작업 항목의 심각도를 선택합니다.는 선택한 심각도 이상의 작업 항목에 대해 변환된 코드에 주석을 AWS SCT 추가합니다.

  예를 들어, 변환된 코드의 설명 수를 최소화하려면 **오류만**을 선택하세요. 변환된 코드의 모든 작업 항목에 대한 설명을 포함하려면 **모든 메시지**를 선택합니다.
+ 소스 SQL Server 데이터베이스가의 출력을 table. AWS SCT create`EXEC`s 임시 테이블과이 기능을 에뮬레이션하는 추가 프로시저에 저장할 수 있도록 합니다. 이 에뮬레이션을 사용하려면 **Create additional routines for handling open datasets**를 선택합니다.

## 마이그레이션 고려 사항
<a name="CHAP_Source.SQLServer.ToMySQL.MigrationConsiderations"></a>

SQL Server 스키마를 MySQL로 마이그레이션할 때는 다음 사항을 고려합니다.
+ MySQL은 `MERGE` 문을 지원하지 않습니다. 그러나 AWS SCT 는 변환 중에 `INSERT ON DUPLICATE KEY` 절과 `MERGE` 문을 사용하여 `UPDATE FROM and DELETE FROM` 문을 에뮬레이션할 수 있습니다.

  `INSERT ON DUPLICATE KEY`를 사용하여 올바르게 에뮬레이션하기 위해서는 대상 MySQL 데이터베이스에 고유한 제약 조건 또는 프라이머리 키가 있어야 합니다.
+ `GOTO` 문과 레이블을 사용하여 명령문 실행 순서를 변경할 수 있습니다. `GOTO` 문 뒤에 오는 Transact-SQL 문은 건너뛰며 프로세스는 레이블에서 계속됩니다. `GOTO` 문과 레이블은 프로시저, 배치(batch), 명령문 블록 내 어디든 사용할 수 있습니다. `GOTO` 문을 중첩할 수도 있습니다.

  MySQL은 `GOTO` 문을 사용하지 않습니다. 는 `GOTO` 문이 포함된 코드를 AWS SCT 변환할 때 `BEGIN…END` 또는 문을 사용하도록 `LOOP…END LOOP` 문을 변환합니다. 다음 표에서가 `GOTO` 문을 AWS SCT 변환하는 방법의 예를 찾을 수 있습니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/SchemaConversionTool/latest/userguide/CHAP_Source.SQLServer.ToMySQL.html)
+ MySQL은 다중 문 테이블 값 함수를 지원하지 않습니다.는 변환 중에 임시 테이블을 생성하고 이러한 임시 테이블을 사용하도록 문을 다시 작성하여 테이블 값 함수를 AWS SCT 시뮬레이션합니다.