建立指令檔 (MySQLToSQL)
啟動 SSMA 主控台應用程式之前的第一步是建立指令檔,並視需要建立變數值檔案和伺服器連線檔案。
指令檔可以分成三個部分,即:
config:可讓使用者設定主控台應用程式的設定參數。
servers:可讓使用者設定來源/目標伺服器定義。 這也可以位於另外的伺服器連線檔案中。
script-commands:可讓使用者執行 SSMA 工作流程命令。
以下詳細說明每一個部分:
設定 MySQL 主控台設定
指令碼的設定會顯示在主控台指令檔中。
如果在設定節點中指定任何元素,就會設定為全域設定,也就是適用於所有指令碼命令。 如果使用者想要覆寫全域設定,也可以在 script-command 部分的每個命令中設定這些設定元素。
使用者可設定的選項包括:
輸出視窗提供者:如果 suppress-messages 屬性設定為 'true',命令專屬訊息不會顯示在主控台上。 屬性描述如下:
destination:指定輸出是否需要列印至檔案或 stdout。 預設為 false。
file-name:檔案的路徑 (選用)。
suppress-messages:抑制主控台上的訊息。 預設為 'false'。
範例︰
<output-providers> <output-window suppress-messages="<true/false>" (optional) destination="<file/stdout>" (optional) file-name="<file-name>" (optional) /> </output-providers>
or
<...All commands...> <output-window suppress-messages="<true/false>" (optional) destination="<file/stdout>" (optional) file-name="<file-name>" (optional) /> </...All commands...>
資料移轉連線提供者:這會指定要考慮用於資料移轉的來源/目標伺服器。 Source-use-last-used 表示上次用於資料移轉的來源伺服器。 同樣地,target-use-last-used 表示上次用於資料移轉的目標伺服器。 使用者也可以使用 source-server 或 target-server 屬性來指定伺服器 (來源或目標)。
只能使用其中一個指定的屬性,也就是:
source-use-last-used="true" (預設) 或 source-server="source_servername"
target-use-last-used="true" (預設) 或 target-server="target_servername"
範例︰
<output-providers> <data-migration-connection source-use-last-used="true" target-server="<target-server-unique-name>"/> </output-providers>
or
<migrate-data> <data-migration-connection source-server="<source-server-unique-name>" target-use-last-used="true"/> </migrate-data>
使用者輸入快顯:從資料庫載入物件時,這可讓您處理錯誤。 使用者提供輸入模式,在發生錯誤時,主控台會如使用者所指定繼續進行。
這些模式包括:
ask-user - 提示使用者繼續 ('yes') 或錯誤輸出 ('no') 。
error- 主控台會顯示錯誤並停止執行。
continue- 主控台會繼續執行。
預設模式為 error。
範例︰
<output-providers> <user-input-popup mode="<ask-user/continue/error>"/> </output-providers>
or
<!-- Connect to target database --> <connect-target-database server="<target-server-unique-name>"> <user-input-popup mode="<ask-user/continue/error>"/> </connect-target-database>
重新連線提供者:這可讓使用者在連線失敗時設定重新連線設定。 可同時針對來源和目標伺服器設定。
重新連線模式如下:
reconnect-to-last-used-server:如果連線非使用中,會嘗試重新連線到上次使用的伺服器最多 5 次。
generate-an-error:如果連線非使用中,就會產生錯誤。
預設模式為 generate-an-error。
範例︰
<output-providers> <reconnect-manager on-source-reconnect="<reconnect-to-last-used-server/generate-an-error>" on-target-reconnect="<reconnect-to-last-used-server/generate-an-error>"/> </output-providers>
or
<!--synchronization--> <synchronize-target> <reconnect-manager on-target-reconnect="reconnect-to-last-used-server"/> </synchronize-target>
or
<!--data migration--> <migrate-data server="target-server-unique-name"> <reconnect-manager on-source-reconnect="reconnect-to-last-used-server" on-target-reconnect="generate-an-error"/> </migrate-data>
轉換器覆寫提供者:這可讓使用者處理已在目標 Metabase 上顯示的物件。 可能的動作包括:
error:主控台會顯示錯誤並停止執行。
overwrite:覆寫現有物件值。 預設已執行此動作。
skip:主控台會略過已在資料庫上的物件
ask-user:提示使用者輸入 ('yes'/ 'no')
範例︰
<output-providers> <object-overwrite action="<error/skip/overwrite/ask-user>"/> </output-providers>
or
<convert-schema object-name="<object-name>"> <object-overwrite action="<error/skip/overwrite/ask-user>"/> </convert-schema>
失敗的必要條件提供者:這可讓使用者處理處理命令所需的任何必要條件。 strict-mode 預設為 'false'。 如果設定為 'true',就會因未符合必要條件產生例外狀況。
範例︰
<output-providers> <prerequisites strict-mode="<true/false>"/> </output-providers>
停止作業:在作業中,如果使用者想要停止作業,可以使用 'Ctrl+C' 快速鍵。 SSMA for MySQL 主控台會等作業完成再終止主控台執行。
如果使用者想立即停止執行,可再次按 'Ctrl+C' 快速鍵,中途終止 SSMA 主控台應用程式
進度提供者:告知每個主控台命令的進度。 此選項預設為停用狀態。 進度報告屬性包含:
關
每 1%
每 2%
每 5%
每 10%
每 20%
範例︰
<output-providers> <progress-reporting enable="<true/false>" (optional) report-messages="<true/false>" (optional) report-progress="<every-1%/every-2%/every-5%/every-10%/every-20%/off>" (optional)/> </output-providers>
or
<...All commands...> <progress-reporting enable="<true/false>" (optional) report-messages="<true/false>" (optional) report-progress="<every-1%/every-2%/every-5%/every-10%/every-20%/off>" (optional)/> </...All commands...>
記錄器詳細程度:設定記錄詳細程度層級。 這會對應至 UI 中的 [所有類別] 選項。 記錄詳細程度層級預設為 "error"。
記錄器層級選項包括:
fatal-error:只會記錄嚴重錯誤訊息。
error:只會記錄錯誤和嚴重錯誤訊息。
warning:記錄偵錯和資訊訊息以外的所有層級。
info:記錄偵錯訊息以外的所有層級。
debug:記錄所有訊息層級。
注意
所有層級都會記錄必要訊息。
範例︰
<output-providers> <log-verbosity level="<fatal-error/error/warning/info/debug>"/> </output-providers>
or
<...All commands...> <log-verbosity level="<fatal-error/error/warning/info/debug>"/> </...All commands...>
覆寫加密的密碼:如果為 'true',伺服器連線檔案或指令檔伺服器定義區段中指定的純文字密碼,會覆寫儲存在受保護儲存體中的加密密碼 (若有)。 如果未以純文字指定密碼,系統會提示使用者輸入密碼。
會有下列兩種情況:
如果 override 選項為 false,搜尋順序會是受保護的儲存體 -> 指令檔 -> 伺服器連線檔案 -> 提示使用者。
如果 override 選項為 true,搜尋順序會是指令檔 -> 伺服器連線檔案 -> 提示使用者。
範例︰
<output-providers> <encrypted-password override="<true/false>"/> </output-providers>
無法設定的選項為:
- 重新連線嘗試次數上限:建立的連線因網路故障而逾時或中斷時,需要重新連線伺服器。 允許重新連線嘗試最多 5 次重試,之後主控台會自動執行重新連線。 自動重新連線功能可減少重新執行指令碼的心力。
伺服器連線參數
伺服器連線參數可以在指令檔或伺服器連線檔案中定義。 如需詳細資訊,請參閱建立伺服器連線檔案 (MySQLToSQL) 一節。
指令碼命令
指令檔包含一系列 XML 格式的移轉工作流程命令。 SSMA 主控台應用程式會依指令檔中顯示的命令順序來處理移轉。
例如,MySQL 資料庫中特定資料表的一般資料移轉遵循:資料庫 -> 資料表的階層。
成功執行指令檔中的所有命令時,SSMA 主控台應用程式會結束並將控制項傳回給使用者。 指令檔的內容與變數值檔案中,或是指令檔另外的變數值區段中包含的變數資訊或多或少相同。
範例︰
<!--Sample of script file commands -->
<ssma-script-file>
<script-commands>
<create-new-project project-folder="<project-folder>"
project-name="<project-name>"
overwrite-if-exists="<true/false>"/>
<connect-source-database server="<source-server-unique-name>"/>
<save-project/>
<close-project/>
</script-commands>
</ssma-script-file>
在產品目錄的 [範例主控台指令碼] 資料夾中,提供包含 3 個指令檔 (用於執行各種情節)、變數值檔案和伺服器連線檔案的範本:
AssessmentReportGenerationSample.xml
ConversionAndDataMigrationSample.xml
SqlStatementConversionSample.xml
VariableValueFileSample.xml
ServersConnectionFileSample.xml
您可以在變更顯示於該處的參數以取得相關程度之後,執行範本 (檔案)。
可以在執行 SSMA 主控台 (MySQLToSQL) 中找到指令碼命令的完整清單
指令檔驗證
使用者可以輕鬆根據 [Schemas] 資料夾中的結構描述定義檔案 'M2SSConsoleScriptSchema.xsd',驗證其指令檔。
後續步驟
操作主控台的下一步是建立變數值檔案 (MySQLToSQL)。