本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將SQL伺服器轉換為我的 SQL
若要在轉換後的 [我的SQL程式碼] 中模擬 Microsoft SQL Server 資料庫函式,請使用 [SQL伺服器至我的SQL擴充功能] 套件。 AWS SCT如需詳細了解延伸套件,請參閱:使用擴充功能套件 AWS Schema Conversion Tool。
SQL作為目標資料庫的「我的」權限
「我的」SQL 作為目標所需的權限如下:
CREATE開啟 * 。 *
ALTER開啟 * 。 *
DROP開啟 * 。 *
INDEX開啟 * 。 *
REFERENCES開啟 * 。 *
SELECT開啟 * 。 *
CREATEVIEW開啟 * 。 *
SHOWVIEW開啟 * 。 *
TRIGGER開啟 * 。 *
CREATEROUTINE開啟 * 。 *
ALTERROUTINE開啟 * 。 *
EXECUTE開啟 * 。 *
INSERT,UPDATE上 AWS _ SQLSERVER _ EXT。 *
INSERT,UPDATE,DELETE上 AWS _ SQLSERVER _ EXT _ DATA。 *
CREATETEMPORARYTABLES在 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
使用安全密碼。
如果您使用 My SQL 資料庫 5.7 版或更低版本做為目標,請執行下列命令。對於 8.0 版及更高版本的「我的SQL資料庫」,此命令已被棄用。
GRANT SELECT ON mysql.proc TO '
user_name
';
若要將 Amazon 用RDS於我的SQL或 Aurora 我SQL的目標,請將lower_case_table_names
參數設定為1
。此值表示「我的SQL伺服器」會以不區分大小寫的方式處理資料表、索引、觸發程序和資料庫等物件名稱的識別碼。如果您已在目標執行個體中開啟二進位記錄功能,請將 log_bin_trust_function_creators
參數設定為 1
。在這種情況下,您不需要使用 DETERMINISTIC
、READS SQL DATA
或 NO SQL
特性來建立已儲存的函數。若要設定這些參數,請建立新的參數群組,或是修改現有的資料庫參數群組。
SQL伺服器到我的SQL轉換設定
若要編輯SQL伺服器到我的SQL轉換設定, AWS SCT 請在選擇 [設定] 中,然後選擇 [轉換設定]。從上方清單中選擇 [SQL伺服器],然後選擇 [SQL伺服器 — 我的] SQL。 AWS SCT 顯示「SQL伺服器到我的SQL轉換」的所有可用設定。
SQL「伺服器到我的SQL轉換」設定 AWS SCT 包含下列選項:
-
用於限制轉換後代碼中行動項目的註釋數量。
針對所選嚴重性及更高之行動項目的已轉換程式碼中新增註解,請選擇行動項目的嚴重性。 AWS SCT 在已轉換的程式碼中加入所選嚴重性及更高嚴重性之行動項目的註解。
例如,若要將已轉換程式碼中的註解數量降到最低,請選擇僅限錯誤。若要在已轉換的程式碼中包含所有動作項目的註解,請選擇所有訊息。
-
允許來源SQL伺服器資料庫儲存在資料表
EXEC
中的輸出。 AWS SCT 創建臨時表和一個額外的過程來模擬此功能。若要使用此模擬,請選取 [建立其他常式以處理開放資料集]。
遷移考量事項
將SQL伺服器結構描述遷移到 My 時,請考慮以下事項SQL:
我SQL不支持這個
MERGE
聲明。不過, AWS SCT 可以使用INSERT ON DUPLICATE KEY
子句和MERGE
陳述式,在轉換期間模擬UPDATE FROM and DELETE FROM
陳述式。若要使用正確的模擬
INSERT ON DUPLICATE KEY
,請確定目標 My SQL 資料庫上存在唯一條件約束或主索引鍵。您可以使用
GOTO
陳述式和標籤來變更陳述式的執行順序。系統會略過SQL陳述式後面的任何「交易」GOTO
陳述式,並在標籤處繼續處理。您可以在程序、批次或GOTO
陳述式區塊中的任何位置使用陳述式和標籤。您也可以巢狀GOTO
陳述式。我SQL不使用
GOTO
語句。當 AWS SCT 轉換包含GOTO
陳述式的程式碼時,會將陳述式轉換為使用BEGIN…END
orLOOP…END LOOP
陳述式。您可以在下表中找到如何 AWS SCT 轉換GOTO
陳述式的範例。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 透過建立暫存資料表和重寫陳述式以使用這些暫存資料表,在轉換期間模擬資料表值函數。