Microsoft 提供一組完善的指令檔和命令列選項,可執行及控制 SQL Server 移轉小幫手 (SSMA) 活動。 後幾節會詳細說明相同的內容。
專案指令檔命令
專案命令會處理建立專案、開啟、儲存和結束專案。
create-new-project
建立新的 SSMA 專案。
| 屬性 | 預設值 | 說明 | 類型 |
|---|---|---|---|
project-folder |
無 | 表示專案建立的資料夾。 | String |
project-name |
無 | 表示專案的名稱。 | String |
overwrite-if-exists |
false |
選用屬性會指出是否應該覆寫現有的專案。 | 布林值 |
project-type |
sql-server-2016 |
選用屬性。 可用於 project-type 的格式選項如下:sql-server-2016sql-server-2017sql-server-2019sql-server-2022sql-server-2025sql-azure |
String |
語法範例
<create-new-project
project-folder="<project-folder>"
project-name="<project-name>"
overwrite-if-exists="<true | false>"
project-type="<project-type>"
/>
open-project
開啟現有的專案。
| 屬性 | 預設值 | 說明 | 類型 |
|---|---|---|---|
project-folder |
無 | 表示專案建立的資料夾。 如果指定的資料夾不存在,此命令就會失敗。 | String |
project-name |
無 | 表示專案的名稱。 如果指定的專案不存在,此命令就會失敗。 | String |
語法範例
<open-project
project-folder="<project-folder>"
project-name="<project-name>"
/>
注意
SSMA for Access 主控台應用程式支援回溯相容性。 您可以開啟舊版 SSMA 所建立的專案。
save-project
儲存移轉專案。
語法範例
<save-project/>
close-project
關閉移轉專案。
| 屬性 | 預設值 | 說明 | 類型 |
|---|---|---|---|
if-modified |
ignore |
指定行為的選擇性屬性。 可能的值是︰save、error、ignore。 |
String |
語法範例
<close-project
if-modified="<save/error/ignore>" (optional)
/>
if-modified屬性是選用的,依預設為ignore。
資料庫連接文稿檔案命令
資料庫連線命令可協助連線到資料庫。
主控台不支援 UI 的 [瀏覽] 功能。
windows-authentication 和 port 參數在連接至 Azure SQL 時不適用。
如需詳細資訊,請參閱 建立腳本檔案。
connect-source-database
執行與來源資料庫的連線,並載入來源資料庫的高階中繼資料,但不會載入所有中繼資料。
如果無法建立至來源的連線,就會產生錯誤,而且主控台應用程式會停止進一步執行。
server 定義是從伺服器連接檔或指令檔的 server 區段中,針對每個連接所定義的 name 屬性擷取。
語法範例
<connect-source-database server="<server-unique-name>"/>
load-access-database
用來載入存取資料庫檔案。
| 屬性 | 預設值 | 說明 | 類型 |
|---|---|---|---|
database-file |
無 | 指定存取資料庫的路徑。 | String |
語法範例
<load-access-database database-file="<Access-database>"/>
或:
<load-access-database>
<access-database database-file="<Access-database1>"/>
<access-database database-file="<Access-database2>"/>
</load-access-database>
force-load 來源或目標資料庫
載入來源中繼資料。 適合用於離線處理移轉專案。
如果無法建立至來源或目標的連線,就會產生錯誤,而且主控台應用程式會停止進一步執行。
需要一或多個 metabase 節點作為命令列參數。
| 屬性 | 預設值 | 說明 | 類型 |
|---|---|---|---|
object-name |
無 | 指定物件的名稱。 | String |
metabase |
無 | 指定存取資料庫的路徑。 可能的值為︰source 或 target |
String |
語法範例
<force-load
object-name="<object-name>"
metabase="<source/target>"/>
或:
<force-load>
<metabase-object object-name="<object-name>"/>
</force-load>
reconnect-source-database
重新連線至來源資料庫,但不會載入任何中繼資料,與 connect-source-database 命令不同。
如果無法建立與來源的 (重新) 連線,就會產生錯誤,而且主控台應用程式會停止進一步執行。
server 定義是從伺服器連接檔或指令檔的 server 區段中,針對每個連接所定義的 name 屬性擷取。
語法範例
<reconnect-source-database server="<server-unique-name>"/>
connect-target-database
連接至目標 SQL Server 或 Azure SQL Database,並載入目標資料庫的高層次元數據,但不會完全載入所有元數據。
如果無法建立至目標的連線,就會產生錯誤,而且主控台應用程式會停止進一步執行。
server 定義是從伺服器連接檔或指令檔的 server 區段中,針對每個連接所定義的 name 屬性擷取。
語法範例
<connect-target-database server="<server-unique-name>"/>
reconnect-target-database
重新連線至目標資料庫,但不會載入任何中繼資料,與 connect-target-database 命令不同。
如果無法建立至目標的 (重新) 連線,就會產生錯誤,主控台應用程式會停止進一步執行。
server 定義是從伺服器連接檔或指令檔的 server 區段中,針對每個連接所定義的 name 屬性擷取。
語法範例
<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="ssma.Procedures"
object-type="category"
write-summary-report-to="<file>" (optional)
verbose="<true/false>" (optional)
report-errors="<true/false>" (optional)
conversion-report-folder="<folder>" (optional)
conversion-report-overwrite="<true/false>" (optional)
/>
或:
<generate-assessment-report
conversion-report-folder="<folder>" (optional)
conversion-report-overwrite="<true/false>" (optional)
>
<metabase-object object-name="ssma.Procedures"
object-type="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="ssma.Procedures"
object-type="category"
write-summary-report-to="<filepath/folder>" (optional)
verbose="<true/false>" (optional)
report-errors="<true/false>" (optional)
conversion-report-folder="<folder>" (optional)
conversion-report-overwrite="<true/false>" (optional)
/>
或:
<convert-schema
conversion-report-folder="<folder>" (optional)
conversion-report-overwrite="<true/false>" (optional)
>
<metabase-object object-name="ssma.Procedures"
object-type="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="<filepath/folder>"
report-errors="true" verbose="true">
<metabase-object object-name="ssma.TT1"/>
<metabase-object object-name="ssma.TT2"/>
<metabase-object object-name="ssma.TT3"/>
<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="ssma.Tables"
object-type="category"
write-summary-report-to="<filepath/folder>"
report-errors="true" verbose="true"/>
link-tables
此命令會將來源 (Access) 資料表連結到目標資料表。
語法範例
<link-tables>
<metabase-object object-name="AccessDatabase.table1" object-type="Tables"/>
<metabase-object object-name="AccessDatabase.table2" object-type="Tables"/>
</link-tables>
或:
<link-tables>
<metabase-object object-name="AccessDatabase.Tables" object-type="category"/>
</link-tables>
unlink-tables
此命令會取消來源 (Access) 資料表與目標資料表的連結。
語法範例
<unlink-tables>
<metabase-object object-name="AccessDatabase.table1" object-type="Tables"/>
<metabase-object object-name="AccessDatabase.table2" object-type="Tables"/>
</unlink-tables>
或:
<unlink-tables>
<metabase-object object-name="AccessDatabase.Tables" object-type="category"/>
</unlink-tables>
移轉準備指令檔命令
移轉準備命令會起始來源與目標資料庫之間的結構描述對應。
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="ots_triggers.dbo"
on-error="<report-total-as-warning|
report-each-as-warning|
fail-script>" (optional)
report-errors-to="<file-name>" (optional)
/>
或:
<synchronize-target
object-name="ssma.dbo.Procedures"
object-type="category"/>
或:
<synchronize-target>
<metabase-object object-name="ssma.dbo.TT1"/>
<metabase-object object-name="ssma.dbo.TT2"/>
<metabase-object object-name="ssma.dbo.TT3"/>
</synchronize-target>
refresh-from-database
從資料庫重新整理來源物件。 如果針對目標資料庫執行此命令,會產生錯誤。
Script
需要一或多個 Metabase 節點作為命令列參數。
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="ssma.TT1"
on-error="<report-total-as-warning|
report-each-as-warning|
fail-script>" (optional)
report-errors-to="<file-name>" (optional)
/>
或:
<refresh-from-database
object-name="ssma.Procedures"
object-type="category"/>
或:
<refresh-from-database>
<metabase-object object-name="ssma.TT_1"/>
</refresh-from-database>
指令碼產生指令檔命令
指令碼產生命令有助於將主控台輸出儲存在指令檔中。
save-as-script
用於將物件的腳本儲存到提到 metabase=target的檔案中。 這是同步命令的替代方法,我們在其中獲取腳本並在目標數據庫上執行相同的腳本。
Script
需要一或多個 Metabase 節點作為命令列參數。
object-name︰指定要儲存其指令碼的物件。 (其可有個別物件名稱或群組物件名稱)。object-type:指定 屬性中指定的object-name物件類型。 如果指定物件類別目錄,則物件類型為category。metabase︰指定它是來源或目標 Metabase。destination︰指定指令碼必須儲存的路徑或資料夾。 如果未指定檔名,則格式為 (object_name attribute value) 的檔名。overwrite︰如果為true,則會覆寫相同的檔案名稱。 可以有 (true/false) 值。
語法範例
<save-as-script
metabase="<source/target>"
object-name="ssma.dbo.Procedures"
object-type="category"
destination="<file/folder>"
overwrite="<true/false>" (optional)
/>
或:
<save-as-script
metabase="<source/target>"
destination="<file/folder>"
>
<metabase-object object-name="ssma.dbo.Procedures"
object-type="category"/>
</save-as-script>