Поделиться через


Запуск консоли SSMA (SybaseToSQL)

Корпорация Майкрософт предоставляет надежный набор скриптовых команд для выполнения и управления действиями Помощника по миграции SQL Server (SSMA). В последующих разделах подробно описано то же самое.

Команды файла скрипта

Консольное приложение использует определенные стандартные команды файла скриптов, перечисленные в этом разделе.

Команды проекта

Команды Project обрабатывают создание проектов, открытие, сохранение и выход из проектов.

Команда create-new-project

Эта команда создает новый проект SSMA.

  • project-folder указывает папку создаваемого проекта.

  • project-name указывает имя проекта. {строка}

  • overwrite-if-exists Необязательный атрибут указывает, следует ли перезаписывать существующий проект. {boolean}

  • project-type: необязательный атрибут. Указывает тип проекта, то есть , sql-server-2016, sql-server-2017, sql-server-2019, sql-server-2022, sql-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 указывает папку создаваемого проекта. Команда завершается ошибкой, если указанная папка не существует. {строка}

  • project-name указывает имя проекта. Команда завершается ошибкой, если указанный проект не существует. {строка}

Пример синтаксиса

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

Замечание

Консольное приложение SAP ASE для SSMA поддерживает обратную совместимость. Его можно использовать для открытия проектов, созданных предыдущей версией SSMA.

Команда save-project

Эта команда сохраняет проект миграции.

Пример синтаксиса

<save-project/>

Команда close-project

Эта команда закрывает проект миграции.

Пример синтаксиса

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

Атрибут является необязательным if-modified , ignore по умолчанию.

Команды подключения к базе данных

Команды подключения к базе данных помогают подключиться к базе данных.

Функция обзора пользовательского интерфейса не поддерживается в консоли.

Дополнительные сведения см. в разделе "Создание файлов скриптов".

Команда 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 и загружает высокоуровневые метаданные целевой базы данных, но не метаданные полностью.

Если подключение к целевому объекту не удается установить, создается ошибка, и консольное приложение останавливает дальнейшее выполнение.

Определение сервера извлекается из атрибута имени, определенного для каждого подключения, в разделе сервера файла подключения сервера или файла скрипта.

Пример синтаксиса

<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: указывает тип объекта, вызываемого в атрибуте имени объекта (если указана категория объекта, то тип объекта — "категория").

  • 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: указывает тип объекта, вызываемого в атрибуте имени объекта (если указана категория объекта, то тип объекта — "категория").

  • 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: указывает тип объекта, вызываемого в атрибуте имени объекта (если указана категория объекта, то тип объекта — "категория").

  • 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: указывает тип объекта, вызываемого в атрибуте имени объекта (если указана категория объекта, то тип объекта — "категория").

  • 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: указывает тип объекта, указанного в атрибуте имени объекта (если указана категория объекта, то тип объекта — "категория").

  • 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: указывает тип объекта, вызываемого в атрибуте имени объекта (если указана категория объекта, то тип объекта — "категория").

  • 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 указывает инструкции SQL Sybase для преобразования, одну или несколько инструкций можно разделить с помощью оператора ";"

  • sql-files указывает путь к файлам SQL, которые необходимо преобразовать в код T-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"
/>