SQL サーバーからマイへの変換SQL - AWS Schema Conversion Tool

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SQL サーバーからマイへの変換SQL

変換したマイSQLコードで Microsoft SQL Server データベース関数をエミュレートするには、 の SQL Server to MySQL Extension Pack を使用します AWS SCT。拡張機能の詳細については、「での拡張パックの使用 AWS Schema Conversion Tool」を参照してください。

ターゲットデータベースとしての MySQL の権限

ターゲットとしての MySQL に必要な権限は次のとおりです。

  • CREATE ON *.*

  • ALTER ON *.*

  • DROP ON *.*

  • INDEX ON *.*

  • REFERENCES ON *.*

  • SELECT ON *.*

  • CREATE VIEW ON *.*

  • SHOW VIEW ON *.*

  • TRIGGER ON *.*

  • CREATE ROUTINE ON *.*

  • ALTER ROUTINE ON *.*

  • EXECUTE ON *.*

  • INSERT、UPDATEON AWS_SQLSERVER_EXT.*

  • INSERT、UPDATE、DELETEON AWS_SQLSERVER_EXT_DATA.*

  • CREATE TEMPORARY TABLES ON AWS_SQLSERVER_EXT_DATA.*

次のコード例を使用してデータベースユーザーを作成し、権限を付与できます。

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_name ユーザーの名前を入力します。次に、your_password 安全なパスワードを使用します。

マイSQLデータベースバージョン 5.7 以前をターゲットとして使用する場合は、次のコマンドを実行します。MySQL Database バージョン 8.0 以降では、このコマンドは廃止されました。

GRANT SELECT ON mysql.proc TO 'user_name';

Amazon RDS for MySQL または Aurora MySQL をターゲットとして使用するには、 lower_case_table_namesパラメータを に設定します1。この値は、My SQLサーバーがテーブル、インデックス、トリガー、データベースなどのオブジェクト名の識別子を大文字と小文字を区別しないものとして処理することを意味します。ターゲットインスタンスでバイナリログを有効にしている場合は、log_bin_trust_function_creators パラメータを 1 と設定します。この場合、ストアド関数を作成するのに、DETERMINISTIC 特性、READS SQL DATA 特性、NO SQL 特性を使用する必要はありません。これらのパラメータを設定するには、新しい DB パラメータグループを作成するか、既存の DB パラメータグループを変更します。

SQL サーバーからマイSQLへの変換設定

SQL サーバーからマイSQLへの変換設定を編集するには、「設定 AWS SCT 」を選択し、「変換設定」を選択します。上部のリストから、SQLサーバー を選択し、SQLサーバー – マイ SQLを選択します。 AWS SCT はSQL、サーバーからマイSQLへの変換で使用可能なすべての設定を表示します。

SQL のサーバーからマイSQLへの変換設定には、以下のオプション AWS SCT が含まれています。

  • 変換されたコード内のアクション項目に関するコメントの数を制限する。

    選択した重要度以上のアクションアイテムの変換されたコードにコメントを追加する で、アクションアイテムの重要度を選択します。選択した重要度以上のアクションアイテムの変換されたコードにコメント AWS SCT を追加します。

    たとえば、変換したコード内のコメントの数を最小限に抑えるには、[エラーのみ] を選択します。変換したコードのすべてのアクション項目にコメントを含めるには、[すべてのメッセージ] を選択します。

  • ソースSQLサーバーデータベースが の出力を table. AWS SCT creates EXEC一時テーブルと、この機能をエミュレートする追加の手順に格納できるようにするには。このエミュレーションを使用するには、[オープンデータセットを処理するための追加ルーチンを作成する] を選択します。

移行に関する考慮事項

SQL サーバースキーマをマイ に移行するときは、次の点を考慮してくださいSQL。

  • MERGEステートメントをサポートSQLしていません。ただし、 は INSERT ON DUPLICATE KEY句と MERGEステートメントを使用して、変換中に UPDATE FROM and DELETE FROMステートメントをエミュレート AWS SCT できます。

    を使用して正しいエミュレーションを行うにはINSERT ON DUPLICATE KEY、ターゲット MySQL データベースに一意の制約またはプライマリキーが存在することを確認してください。

  • GOTO ステートメントとラベルを使用して、ステートメントを実行する順序を変更できます。ステートメントに従う Transact-SQL GOTO ステートメントはスキップされ、処理はラベルで続行されます。GOTO ステートメントとラベルは、プロシージャ、バッチ、またはステートメント ブロック内のどこでも使用できます。GOTO ステートメントをネストすることもできます。

    はSQL GOTOステートメントを使用しません。がステートメントを含むコードを AWS SCT 変換するとGOTO、 ステートメントは BEGIN…ENDまたは LOOP…END LOOPステートメントを使用するように変換されます。GOTO がステートメントを AWS SCT 変換する方法の例を次の表に示します。

    SQL サーバーステートメント マイSQLステートメント
    BEGIN .... statement1; .... GOTO label1; statement2; .... label1: Statement3; .... END
    BEGIN label1: BEGIN .... statement1; .... LEAVE label1; statement2; .... END; Statement3; .... END
    BEGIN .... statement1; .... label1: statement2; .... GOTO label1; statement3; .... statement4; .... END
    BEGIN .... statement1; .... label1: LOOP statement2; .... ITERATE label1; LEAVE label1; END LOOP; statement3; .... statement4; .... END
    BEGIN .... statement1; .... label1: statement2; .... statement3; .... statement4; .... END
    BEGIN .... statement1; .... label1: BEGIN statement2; .... statement3; .... statement4; .... END; END
  • はSQL、複数ステートメントのテーブル値関数をサポートしていません。 AWS SCT は、一時テーブルを作成し、これらの一時テーブルを使用するようにステートメントを書き換えることで、変換中にテーブル値関数をシミュレートします。