Microsoft提供一組健全的腳本檔案命令,以執行和控制 SQL Server 移轉小幫手 (SSMA) 活動。
控制台應用程式會使用本節中所列舉的特定標準腳本檔案命令。
專案指令檔命令
create-new-project 命令
建立新的 SSMA 專案。
Project 命令會處理建立專案、開啟、儲存和結束專案。
Script
project-folder:表示專案建立的資料夾。project-name:表示項目的名稱。 {string}overwrite-if-exists:選擇性屬性。 指出是否應該覆寫現有的專案。 {boolean}project-type:選擇性屬性。 指出專案類型,即sql-server-2016、sql-server-2017sql-server-2019sql-server-2022sql-server-2025或 。sql-azure預設值為sql-server-2016。
語法範例
<create-new-project
project-folder="<project-folder>"
project-name="<project-name>"
overwrite-if-exists="<true/false>" (optional)
project-type=="<sql-server-2016 | sql-server-2017 | sql-server-2019 | sql-server-2022 | sql-server-2025 | sql-azure>" (optional)
/>
屬性 overwrite-if-exists 預設為 false 。
屬性 project-type 預設為 sql-server-2016 。
open-project 命令
開啟現有的專案。
Script
project-folder表示專案建立的資料夾。 如果指定的資料夾不存在,此命令就會失敗。 {string}project-name表示項目的名稱。 如果指定的專案不存在,此命令就會失敗。 {string}
語法範例
<open-project
project-folder="<project-folder>"
project-name="<project-name>"
/>
這很重要
SSMA For MySQL 控制台應用程式支援回溯相容性。 您可以開啟舊版 SSMA 所建立的專案。
save-project 命令
儲存移轉專案。
語法範例
<save-project/>
close-project 命令
關閉移轉專案。
語法範例
<save-project/>
或:
<close-project
if-modified="<save/error/ignore>" (optional)
/>
if-modified屬性是選用的,依預設為ignore。
資料庫連線腳本文件命令
[資料庫連接] 命令可協助連線到資料庫。
主控台不支援 UI 的 [瀏覽] 功能。
當連線到 SQL Azure 時,參數 windows-authentication 和 port 不適用。
如需相關資訊,請參閱 建立指令碼檔。
connect-source-database 命令
執行源資料庫的連線,並載入源資料庫的高階元數據,但不會載入所有元數據。
如果無法建立與來源的連線,則會產生錯誤,且主控台應用程式會停止進一步執行。
Script
伺服器定義是從伺服器連線檔或 Script 檔的伺服器區段中為每一個連線定義的 name 屬性擷取。
語法範例
<connect-source-database server="<server-unique-name>"/>
force-load-source/target-database 命令
載入來源元數據。
適用於離線處理移轉專案。
如果無法建立與來源/目標的連線,則會產生錯誤,且主控台應用程式會停止進一步執行。
Script
需要一或多個中繼基底節點作為命令行參數。
語法範例
<force-load metabase="<source/target>"
<metabase-object object-name="<object-name>"/>
</force-load>
reconnect-source-database 命令
重新連線至來源資料庫,但不會載入任何中繼資料,與 connect-source-database 命令不同。
如果無法建立與來源的 (重新) 連線,就會產生錯誤,而且主控台應用程式會停止進一步執行。
語法範例
<reconnect-source-database server="<server-unique-name>"/>
connect-target-database 命令
連接至目標 SQL Server 或 Azure SQL Database,並載入目標資料庫的高層次元數據,但不會完全載入所有元數據。
如果無法建立至目標的連線,就會產生錯誤,而且主控台應用程式會停止進一步執行。
Script
伺服器定義是從伺服器連線檔或 Script 檔的伺服器區段中為每一個連線定義的 name 屬性擷取。
語法範例
<connect-target-database server="<server-unique-name>"/>
reconnect-target-database 命令
重新連線至目標資料庫,但不會載入任何中繼資料,與 connect-target-database 命令不同。
如果無法建立至目標的 (重新) 連線,就會產生錯誤,主控台應用程式會停止進一步執行。
語法範例
<reconnect-target-database server="<server-unique-name>"/>
報告指令檔命令
[報表] 命令會產生各種 SSMA 控制台活動的效能報告。
generate-assessment-report 命令
在源資料庫上產生評量報告。
如果在執行此命令之前未執行來源資料庫連線,則會產生錯誤,而且主控台應用程式會結束。
在命令執行期間無法連線到源資料庫伺服器,也會導致主控台應用程式終止。
Script
assessment-report-folder:指定儲存評量報告的資料夾。 (選擇性屬性)object-name:指定產生評量報告時考慮的物件 (可以具有個別物件名稱或群組物件名稱)。object-type:指定 object-name 屬性中指定的物件類型 (如果指定了物件類別,則物件類型為 “category”)。assessment-report-overwrite:指定是否要覆寫評量報告資料夾 (如果該資料夾已存在)。默認值: false。 (選擇性屬性)
write-summary-report-to:指定產生摘要報告的路徑。如果只提及資料夾路徑,則會依名稱
AssessmentReport<n>.xml建立檔案。 (選擇性屬性)報告建立有兩個更進一步的子類別:
-
report-errors(=“true/false”,默認值為 “false” (選擇性屬性)) -
verbose(=“true/false”,默認值為 “false” (選擇性屬性))
-
語法範例
<generate-assessment-report
object-name="<object-name>"
object-type="<object-category>"
write-summary-report-to="<file-name/folder-name>" (optional)
verbose="<true/false>" (optional)
report-errors="<true/false>" (optional)
conversion-report-folder="<folder-name>" (optional)
conversion-report-overwrite="<true/false>" (optional)
/>
或:
<generate-assessment-report
conversion-report-folder="<folder-name>" (optional)
conversion-report-overwrite="<true/false>" (optional)
>
<metabase-object object-name="<object-name>"
object-type="<object-category>"/>
</generate-assessment-report>
移轉指令檔命令
移轉命令會將目標資料庫架構轉換成來源架構,並將數據遷移至目標伺服器。
移轉命令的預設主控台輸出設定是 [完整] 結果報告,沒有詳細的錯誤報告:僅限於來源物件樹根節點的摘要。
convert-schema 命令
執行從來源到目標架構的架構轉換。
如果在執行此命令之前未執行來源或目標資料庫連線,或在命令執行期間與來源或目標資料庫伺服器的連線失敗,則會產生錯誤,且主控台應用程式會結束。
Script
conversion-report-folder:指定儲存評量報告的資料夾。 (選擇性屬性)object-name:指定考慮轉換結構描述的物件 (它可以具有個別物件名稱或群組物件名稱)。object-type:指定 object-name 屬性中指定的物件類型 (如果指定了物件類別,則物件類型為 “category”)。conversion-report-overwrite:指定是否要覆寫評量報告資料夾 (如果該資料夾已存在)。默認值: false。 (選擇性屬性)
write-summary-report-to:指定產生摘要報告的路徑。如果只提及資料夾路徑,則會依名稱
SchemaConversionReport<n>.xml建立檔案。 (選擇性屬性)摘要報告建立還有兩個子類別:
-
report-errors(=“true/false”,默認值為 “false” (選擇性屬性)) -
verbose(=“true/false”,默認值為 “false” (選擇性屬性))
-
語法範例
<convert-schema
object-name="<object-name>"
object-type="<object-category>"
write-summary-report-to="<file-name/folder-name>" (optional)
verbose="<true/false>" (optional)
report-errors="<true/false>" (optional)
conversion-report-folder="<folder-name>" (optional)
conversion-report-overwrite="<true/false>" (optional)
/>
或:
<convert-schema
conversion-report-folder="<folder-name>" (optional)
conversion-report-overwrite="<true/false>" (optional)
<metabase-object object-name="<object-names>"
object-type="<object-category>"/>
</convert-schema>
migrate-data 命令
將源數據遷移至目標。
Script
object-name:指定考慮移轉資料的來源物件 (可以具有個別物件名稱或群組物件名稱)。object-type:指定 object-name 屬性中指定的物件類型 (如果指定了物件類別,則物件類型為 “category”)。write-summary-report-to:指定產生摘要報告的路徑。如果只提及資料夾路徑,則會依名稱
DataMigrationReport<n>.xml建立檔案。 (選擇性屬性)報告建立有兩個更進一步的子類別:
-
report-errors(=“true/false”,默認值為 “false” (選擇性屬性)) -
verbose(=“true/false”,默認值為 “false” (選擇性屬性))
-
語法範例
<migrate-data
write-summary-report-to="<file-name/folder-name>"
report-errors="true" verbose="true">
<metabase-object object-name="<object-name>"/>
<metabase-object object-name="<object-name>"/>
<metabase-object object-name="<object-name>"/>
<data-migration-connection
source-use-last-used="true"/source-server="<server-unique-name>"
target-use-last-used="true"/target-server="<server-unique-name>"/>
</migrate-data>
或:
<migrate-data
object-name="<object-name>"
object-type="<object-category>"
write-summary-report-to="<file-name/folder-name>"
report-errors="true" verbose="true"/>
移轉準備腳本檔案命令
移轉準備命令會起始來源和目標資料庫之間的架構對應。
map-schema 命令
將源資料庫的結構映射至目標結構。
Script
-
source-schema指定我們想要移轉的來源架構。 -
sql-server-schema指定我們想要移轉的目標架構。
語法範例
<map-schema
source-schema="<source-schema>"
sql-server-schema="<target-schema>"/>
管理性腳本檔案命令
管理性命令可協助同步處理目標資料庫物件與源資料庫。
移轉命令的預設主控台輸出設定是 [完整] 結果報告,沒有詳細的錯誤報告:僅限於來源物件樹根節點的摘要。
synchronize-target 命令
同步處理目標對象與目標資料庫。
如果對源資料庫執行此命令,就會發生錯誤。
如果在執行此命令之前未執行目標資料庫連線,或在命令執行期間與目標資料庫伺服器的連線失敗,則會產生錯誤,且主控台應用程式會結束。
Script
object-name:指定考慮與目標資料庫同步的物件 (它可以有個別物件名稱或群組物件名稱)。object-type:指定 object-name 屬性中指定的物件類型 (如果指定了物件類別,則物件類型為 “category”)。on-error:指定是否要將同步處理錯誤指定為警告或錯誤。 錯誤時的可用選項:report-total-as-warningreport-each-as-warningfail-script
report-errors-to:指定同步作業的錯誤報告位置 (選用屬性)如果只給出了資料夾路徑,則會建立名稱為 的
TargetSynchronizationReport.xml檔案。
語法範例
<synchronize-target
object-name="<object-name>"
on-error="<report-total-as-warning/
report-each-as-warning/
fail-script>" (optional)
report-errors-to="<file-name>" (optional)
/>
或:
<synchronize-target
object-name="<object-name>"
object-type="<object-category>"/>
或:
<synchronize-target>
<metabase-object object-name="<object-name>"/>
<metabase-object object-name="<object-name>"/>
<metabase-object object-name="<object-name>"/>
</synchronize-target>
refresh-from-database 命令
從資料庫重新整理來源物件。
如果此命令針對目標資料庫執行,則會產生錯誤。
Script
object-name:指定考慮從來源資料庫重新整理的來源物件 (它可以有個別物件名稱或群組物件名稱)。object-type:指定 object-name 屬性中指定的物件類型 (如果指定物件類別,則物件類型為 “category”)。on-error:指定是否要將同步處理錯誤指定為警告或錯誤。 錯誤時的可用選項:report-total-as-warningreport-each-as-warningfail-script
report-errors-to:指定同步作業的錯誤報告位置 (選用屬性)如果只給出了資料夾路徑,則會建立名稱為 的
SourceDBRefreshReport.xml檔案。
需要一或多個中繼基底節點作為命令行參數。
語法範例
<refresh-from-database
object-name="<object-name>"
on-error="<report-total-as-warning/
report-each-as-warning/
fail-script>" (optional)
report-errors-to="<file-name>" (optional)
/>
或:
<refresh-from-database
object-name="<object-name>"
object-type="<object-category>"/>
或:
<refresh-from-database>
<metabase-object object-name="<object-name>"/>
</refresh-from-database>
腳本生成腳本檔案命令
腳本產生命令會執行雙重工作:它們有助於將控制台輸出儲存在腳本檔案中;並根據您指定的參數,將 T-SQL 輸出記錄到主控台或檔案。
save-as-script 命令
用於將物件的腳本儲存到提到 metabase=target的檔案中。 這是同步命令的替代方法,我們在其中獲取腳本並在目標數據庫上執行相同的腳本。
Script
需要一或多個中繼基底節點作為命令行參數。
object-name:指定要儲存其指令碼的物件。 (它可以有個別的物件名稱或群組物件名稱)object-type:指定 object-name 屬性中指定的物件類型 (如果指定了物件類別,則物件類型為 “category”)。metabase:指定它是來源還是目標中繼資料庫。destination:指定必須儲存指令碼的路徑或資料夾,如果未給定檔案名稱,則會使用格式為 (object_name 屬性值) 的檔案名稱.out。overwrite:如果為true,則如果存在相同的檔案名稱,則會覆寫。 它可以有值 (true/false)。
語法範例
<save-as-script
metabase="<source/target>"
object-name="<object-name>"
object-type="<object-category>"
destination="<file-name/folder-name>"
overwrite="<true/false>" (optional)
/>
或:
<save-as-script
metabase="<source/target>"
destination="<file-name/folder-name>"
<metabase-object object-name="<object-name>"
object-type="<object-category>"/>
</save-as-script>
convert-sql-statement 命令
context指定架構名稱。destination指定輸出是否應該儲存在檔案中。如果未指定此屬性,則會在控制台上顯示已轉換的 T-SQL 語句。 (選擇性屬性)
conversion-report-folder指定儲存評量報告的資料夾。 (選擇性屬性)conversion-report-overwrite指定如果評量報表資料夾已經存在,是否要覆寫該資料夾。默認值: false。 (選擇性屬性)
write-converted-sql-to指定要儲存已轉換 T-SQL 的檔案 (或) 資料夾路徑。 指定資料夾路徑與sql-files屬性時,每個來源檔案都有在指定資料夾下建立的對應目標 T-SQL 檔案。 指定資料夾路徑與sql屬性時,轉換后的 T-SQL 會寫入指定資料夾下名為 Result.out 的檔案。sql指定要轉換的 MySQL sql 語句,可以使用 “;” 分隔一或多個語句sql-files指定必須轉換成 T-SQL 程式碼的 SQL 檔案路徑。write-summary-report-to指定產生摘要報告的路徑。 如果只提及資料夾路徑,則會依名稱ConvertSQLReport.xml建立檔案。 (選擇性屬性)報告建立有兩個更進一步的子類別:
-
report-errors(=“true/false”,預設值為「false」(選用屬性))。 -
verbose(=“true/false”,預設值為「false」(選用屬性))。
-
Script
需要一或多個中繼基底節點作為命令行參數。
語法範例
<convert-sql-statement
context="<schema-name>"
conversion-report-folder="<folder-name>"
conversion-report-overwrite="<true/false>"
write-summary-report-to="<file-name/folder-name>" (optional)
verbose="<true/false>" (optional)
report-errors="<true/false>" (optional)
destination="stdout/file" (optional)
write-converted-sql-to="<file-name/folder-name>"
sql="SELECT 1 FROM DUAL;">
<output-window suppress-messages="<true/false>" />
</convert-sql-statement>
或:
<convert-sql-statement
context="<schema-name>"
conversion-report-folder="<folder-name>"
conversion-report-overwrite="<true/false>"
write-summary-report-to="<file-name/folder-name>" (optional)
verbose="<true/false>" (optional)
report-errors="<true/false>" (optional)
destination="<stdout/file>" (optional)
write-converted-sql-to="<file-name/folder-name>"
sql-files="<folder-name>\*.sql"
/>
或:
<convert-sql-statement
context="<schema-name>"
conversion-report-folder="<folder-name>"
conversion-report-overwrite="<true/false>"
sql-files="<folder-name>\*.sql"
/>