共用方式為


執行 SSMA 主控台 (SybaseToSQL)

Microsoft提供一組健全的腳本檔案命令,以執行和控制 SQL Server 移轉小幫手 (SSMA) 活動。 後幾節會詳細說明相同的內容。

腳本檔指令

控制台應用程式會使用本節中所列舉的特定標準腳本檔案命令。

項目命令

Project 命令會處理建立專案、開啟、儲存和結束專案。

create-new-project 命令

此命令會建立新的 SSMA 專案。

  • project-folder 表示專案建立的資料夾。

  • project-name 表示項目的名稱。 {string}

  • overwrite-if-exists 選擇性屬性指出是否應該覆寫現有的專案。 {boolean}

  • project-type:選擇性屬性。 指出專案類型,即 sql-server-2016sql-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>"
/>

屬性 overwrite-if-exists 預設為 false

屬性 project-type 預設為 sql-server-2016

open-project 命令

此命令會開啟專案。

  • project-folder 表示專案建立的資料夾。 如果指定的資料夾不存在,此命令就會失敗。 {string}

  • project-name 表示項目的名稱。 如果指定的專案不存在,此命令就會失敗。 {string}

語法範例

<open-project
  project-folder="<project-folder>"
  project-name="<project-name>"
/>

備註

SSMA for SAP ASE 控制台應用程式支援回溯相容性。 您可以使用它開啟舊版 SSMA 所建立的專案。

save-project 命令

此命令會儲存移轉專案。

語法範例

<save-project/>

close-project 命令

此命令會關閉移轉專案。

語法範例

<close-project
  if-modified="<save/error/ignore>"   (optional)
/>

if-modified屬性是選用的,依預設為ignore

資料庫連接命令

[資料庫連接] 命令可協助連線到資料庫。

主控台不支援 UI 的 [瀏覽] 功能。

如需詳細資訊,請參閱 建立指令碼檔案

connect-source-database 命令

此命令會執行與源資料庫的連線,並載入源資料庫的高階元數據,但不會載入所有元數據。

如果無法建立與來源的連線,則會產生錯誤,且主控台應用程式會停止進一步執行。

伺服器定義來自於伺服器連線檔案或腳本檔案的伺服器區段中針對每個連接所定義的名稱屬性。

語法範例

<connect-source-database  server="<server-unique-name>"/>

force-load-source/target-database 命令

此命令會載入來源中繼資料,對於離線處理移轉專案很有用。

如果無法建立與來源/目標的連線,則會產生錯誤,且主控台應用程式會停止進一步執行。

此命令需要一或多個中繼基底節點做為命令行參數。

語法範例

<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 資料庫,並載入目標資料庫的高階元數據,但不會完全載入元數據。

如果無法建立至目標的連線,就會產生錯誤,而且主控台應用程式會停止進一步執行。

伺服器定義是從伺服器連線檔或 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 命令

此命令會在源資料庫上產生評量報告。

如果在執行此命令之前未執行來源資料庫連線,則會產生錯誤,而且主控台應用程式會結束。

在命令執行期間無法連線到源資料庫伺服器,也會導致主控台應用程式終止。

  • conversion-report-folder:指定可儲存評量報告的資料夾。 (選擇性屬性)

  • object-name:指定產生評量報告時考慮的物件 (支援個別物件名稱或群組物件名稱)。

  • object-type:指定在 object-name 屬性中呼叫的物件類型 (如果指定了物件類別,則物件類型為 “category”)。

  • conversion-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)
  assessment-report-folder="<folder-name>"          (optional)
  conversion-report-overwrite="<true/false>"   (optional)
/>

或:

<generate-assessment-report
  assessment-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 命令

此命令會執行從來源到目標架構的架構轉換。

如果在執行此命令之前未執行來源或目標資料庫連線,或在命令執行期間與來源或目標資料庫伺服器的連線失敗,則會產生錯誤,且主控台應用程式會結束。

  • 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-name>"
    object-type="<object-category>"/>
</convert-schema>

migrate-data 命令

此命令會將源數據遷移至目標。

  • object-name:指定考慮移轉資料的來源物件 (支援個別物件名稱或群組物件名稱)。

  • object-type:指定在 object-name 屬性中呼叫的物件類型 (如果指定了物件類別,則物件類型為「類別」)。

  • 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/false>" verbose="<true/false>">
    <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/false>" verbose="<true/false>"/>

移轉準備命令

移轉準備命令會起始來源和目標資料庫之間的架構對應。

備註

移轉命令的預設主控台輸出設定是 [完整] 結果報告,沒有詳細的錯誤報告:僅限於來源物件樹根節點的摘要。

map-schema 命令

此命令提供源資料庫的綱要映射至目標綱要。

  • source-schema 指定要移轉的來源架構。

  • sql-server-schema 指定將來源結構描述移轉至的目標結構描述。

語法範例

<map-schema source-schema="<source-schema>"
sql-server-schema="<target-schema>"/>

管理性命令

管理性命令可協助同步處理目標資料庫物件與源資料庫。

備註

移轉命令的預設主控台輸出設定是 [完整] 結果報告,沒有詳細的錯誤報告:僅限於來源物件樹根節點的摘要。

synchronize-target 命令

此命令會將目標對象與目標資料庫同步處理。

如果對源資料庫執行此命令,就會發生錯誤。

如果在執行此命令之前未執行目標資料庫連線,或在命令執行期間與目標資料庫伺服器的連線失敗,則會產生錯誤,且主控台應用程式會結束。

  • object-name:指定考慮與目標資料庫同步化的目標物件 (支援個別物件名稱或群組物件名稱)。

  • object-type:指定在 object-name 屬性中呼叫的物件類型 (如果指定物件類別,則物件類型為 “category”)。

  • on-error:指定是否要將同步處理錯誤指定為警告或錯誤。 錯誤時的可用選項:

    • report-total-as-warning

    • report-each-as-warning

    • fail-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/folder-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 命令

此命令會從資料庫重新整理來源物件。

如果此命令針對目標資料庫執行,則會產生錯誤。

此命令需要一或多個中繼基底節點做為命令行參數。

  • object-name:指定考慮從來源資料庫重新整理的來源物件 (支援個別物件名稱或群組物件名稱)。

  • object-type:指定 object-name 屬性中指定的物件類型 (如果指定物件類別,則物件類型為 “category”)。

  • on-error:指定是否要將重新整理錯誤標示為警告或錯誤。 錯誤時的可用選項:

    • report-total-as-warning
    • report-each-as-warning
    • fail-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/folder-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的檔案中。 這是同步命令的替代方法,我們在其中獲取腳本並在目標數據庫上執行相同的腳本。

此命令需要一或多個中繼基底節點做為命令行參數。

  • object-name:指定要儲存其指令碼的物件 (支援個別物件名稱或群組物件名稱)。

  • object-type:指定在 object-name 屬性中呼叫的物件類型 (如果指定了物件類別,則物件類型為 “category”)。

  • metabase:指定它是來源或目標資料庫。

  • destination:指定必須儲存指令碼的路徑或資料夾。 如果未提供檔案名稱,則會提供該格式 (object_name attribute value).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 命令

此命令會轉換 SQL 語句。

  • 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 指定要轉換的 Sybase sql 語句,可以使用 “;” 分隔一或多個語句

  • sql-files 指定必須轉換成 T-SQL 程式代碼之 SQL 檔案的路徑。

  • write-summary-report-to 指定產生摘要報告的路徑。 如果只提及資料夾路徑,則會依名稱 ConvertSQLReport.xml 建立檔案。 (選擇性屬性)

    摘要報表建立有兩個進一步的子類別,也就是:

    • report-errors (=“true/false”,預設值為 “false” (選擇性屬性))。

    • verbose (=“true/false”,預設值為 “false” (選擇性屬性))。

此命令需要一或多個中繼基底節點做為命令行參數。

語法範例

<convert-sql-statement
       context="<database-name>.<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="<database-name>.<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="<database-name>.<schema-name>"
         conversion-report-folder="<folder-name>"
         conversion-report-overwrite="<true/false>"
         sql-files="<folder-name>\*.sql"
/>