Руководство по миграции с SQL Server в Базу данных SQL Azure с помощью DMS

Azure Database Migration Service позволяет переносить базы данных из экземпляра SQL Server в Базу данных SQL Azure. Из этого руководства вы узнаете, как перенести базу данных Adventureworks2016, восстановленную в локальном экземпляре SQL Server 2016 (или более поздней версии), в отдельную базу данных или базу данных в пуле в службе "База данных SQL Azure" с помощью Azure Database Migration Service.

Вы научитесь:

  • оценивать свою локальную базу данных на наличие проблем, мешающих переносу, с помощью Помощника по миграции данных;
  • использовать Помощник по миграции данных для переноса примера схемы для базы данных;
  • регистрировать поставщик ресурсов Azure DataMigration.
  • Создайте экземпляр Azure Database Migration Service.
  • создание проекта миграции с использованием Azure Database Migration Service.
  • выполнение миграции.
  • Мониторинг миграции.

Предварительные требования

Для работы с этим руководством вам потребуется следующее:

  • Скачайте и установите SQL Server 2016 или более поздней версии.

  • При установке SQL Server Express протокол TCP/IP отключен по умолчанию. Включите его, выполнив инструкции в статье Включение или отключение сетевого протокола сервера.

  • Восстановление базы данных AdventureWorks2016 в экземпляре SQL Server.

  • Создайте базу данных в службе "База данных SQL Azure", следуя инструкциям из статьи Создание базы данных в Базе данных SQL Azure с помощью портала Azure. В рамках этого руководства для базы данных SQL Azure используется имя AdventureWorksAzure, но вы можете назвать ее иначе.

    Примечание

    Если вы используете SQL Server Integration Services (SSIS) и вам нужно перенести базу данных каталога для проектов и пакетов служб SSIS (SSISDB) из SQL Server в Базу данных SQL Azure, создание и администрирование целевой базы данных SSISDB будет происходить автоматически от вашего имени, когда вы подготовите к работе SSIS в Фабрике данных Azure (ADF). Дополнительные сведения о миграции пакетов SSIS см. в статье Перенос пакетов SQL Server Integration Services в Azure.

  • Скачайте и установите последнюю версию Помощника по миграции данных.

  • Создайте виртуальную сеть Microsoft Azure для Azure Database Migration Service с помощью модели развертывания Azure Resource Manager. Она обеспечивает подключение "сеть — сеть" к локальным исходным серверам через ExpressRoute или VPN. Дополнительные сведения о создании виртуальной сети приведены в документации по виртуальным сетям. В частности, уделите внимание кратким руководствам с пошаговыми инструкциями.

    Примечание

    Если вы используете ExpressRoute с пиринговым подключением к сети, управляемой Майкрософт, во время настройки виртуальной сети добавьте в подсеть, в которой будет подготовлена служба, следующие конечные точки:

    • Целевая конечная точка базы данных (например, конечная точка SQL, конечная точка Azure Cosmos DB и т. д.)
    • конечную точку службы хранилища;
    • конечную точку служебной шины.

    Такая конфигурация вызвана тем, что у Azure Database Migration Service нет подключения к Интернету.

    Если у вас нет подключения типа "сеть — сеть" между локальной сетью и Azure, или если пропускная способность подключения "сеть — сеть" ограничена, рекомендуется использовать Azure Database Migration Service в гибридном режиме (Предварительная версия). Гибридный режим использует локальный рабочий процесс миграции вместе с экземпляром Azure Database Migration Service, который работает в облаке. Сведения о создании экземпляра Azure Database Migration Service в гибридном режиме см. в статье Создание экземпляра Azure Database Migration Service в гибридном режиме с помощью портала Azure.

  • Убедитесь, что правила безопасности для исходящего трафика в группе безопасности сети для виртуальной сети не блокируют исходящий порт 443 ServiceTag для Служебной шины, службы хранилища и Azure Monitor. См. дополнительные сведения о фильтрации трафика, предназначенного для виртуальной сети Azure, с помощью групп безопасности сети.

  • Настройте брандмауэр Windows для доступа к ядру СУБД.

  • Откройте брандмауэр Windows, чтобы предоставить Azure Database Migration Service доступ к исходному серверу SQL Server. По умолчанию это TCP-порт 1433. Если ваш экземпляр по умолчанию прослушивает какой-либо другой порт, добавьте его в брандмауэр.

  • Если вы запустили несколько именованных экземпляров SQL Server, использующих динамические порты, вы можете включить службу обозревателя SQL и разрешить доступ к UDP-порту 1434 через брандмауэры. Это позволит службе Azure Database Migration Service подключиться к именованному экземпляру на исходном сервере.

  • Если перед исходными базами данных развернуто устройство брандмауэра, вам может понадобиться добавить правила брандмауэра, чтобы позволить службе Azure Database Migration Service обращаться к исходным базам данных для выполнения миграции.

  • Создайте правило брандмауэра для IP-адресов в Базе данных SQL Azure, чтобы предоставить службе Azure Database Migration Service доступ к целевым базам данных. Задайте диапазон подсети в виртуальной сети, которая используется для Azure Database Migration Service.

  • Убедитесь, что учетные данные, используемые для подключения к исходному экземпляру SQL Server, имеют разрешения CONTROL SERVER.

  • Убедитесь, что учетные данные для подключения к целевому экземпляру Базы данных SQL Azure имеют разрешения CONTROL DATABASE в целевых базах данных.

    Важно!

    Для создания экземпляра Azure Database Migration Service требуется доступ к параметрам виртуальной сети, которые обычно не находятся в одной группе ресурсов. В результате пользователю, создающему экземпляр DMS, требуется разрешение на уровне подписки. Чтобы создать необходимые роли, которые можно назначить при необходимости, выполните следующий скрипт:

    
    $readerActions = `
    "Microsoft.Network/networkInterfaces/ipConfigurations/read", `
    "Microsoft.DataMigration/*/read", `
    "Microsoft.Resources/subscriptions/resourceGroups/read"
    
    $writerActions = `
    "Microsoft.DataMigration/services/*/write", `
    "Microsoft.DataMigration/services/*/delete", `
    "Microsoft.DataMigration/services/*/action", `
    "Microsoft.Network/virtualNetworks/subnets/join/action", `
    "Microsoft.Network/virtualNetworks/write", `
    "Microsoft.Network/virtualNetworks/read", `
    "Microsoft.Resources/deployments/validate/action", `
    "Microsoft.Resources/deployments/*/read", `
    "Microsoft.Resources/deployments/*/write"
    
    $writerActions += $readerActions
    
    # TODO: replace with actual subscription IDs
    $subScopes = ,"/subscriptions/00000000-0000-0000-0000-000000000000/","/subscriptions/11111111-1111-1111-1111-111111111111/"
    
    function New-DmsReaderRole() {
    $aRole = [Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition]::new()
    $aRole.Name = "Azure Database Migration Reader"
    $aRole.Description = "Lets you perform read only actions on DMS service/project/tasks."
    $aRole.IsCustom = $true
    $aRole.Actions = $readerActions
    $aRole.NotActions = @()
    
    $aRole.AssignableScopes = $subScopes
    #Create the role
    New-AzRoleDefinition -Role $aRole
    }
    
    function New-DmsContributorRole() {
    $aRole = [Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition]::new()
    $aRole.Name = "Azure Database Migration Contributor"
    $aRole.Description = "Lets you perform CRUD actions on DMS service/project/tasks."
    $aRole.IsCustom = $true
    $aRole.Actions = $writerActions
    $aRole.NotActions = @()
    
      $aRole.AssignableScopes = $subScopes
    #Create the role
    New-AzRoleDefinition -Role $aRole
    }
    
    function Update-DmsReaderRole() {
    $aRole = Get-AzRoleDefinition "Azure Database Migration Reader"
    $aRole.Actions = $readerActions
    $aRole.NotActions = @()
    Set-AzRoleDefinition -Role $aRole
    }
    
    function Update-DmsConributorRole() {
    $aRole = Get-AzRoleDefinition "Azure Database Migration Contributor"
    $aRole.Actions = $writerActions
    $aRole.NotActions = @()
    Set-AzRoleDefinition -Role $aRole
    }
    
    # Invoke above functions
    New-DmsReaderRole
    New-DmsContributorRole
    Update-DmsReaderRole
    Update-DmsConributorRole
    

Оценка локальной базы данных

Перед переносом данных из экземпляра SQL Server в отдельную базу данных или базу данных в составе пула в Базе данных SQL Azure необходимо проверить базу данных SQL Server на наличие любых проблем, связанных с блокировкой, которые могут помешать миграции. В Помощнике по миграции данных выполните инструкции по оценке миграции SQL Server, чтобы завершить оценку локальной базы данных. Ниже приведена сводка необходимых действий:

  1. В Помощник по миграции данных щелкните значок "Создать" (+) и выберите тип проекта оценки.

  2. Укажите имя проекта. В раскрывающемся списке Тип оценки выберите Ядро СУБД, в текстовом поле Тип исходного сервера выберите SQL Server, в текстовом поле Тип целевого сервера — База данных SQL Azure, а затем нажмите кнопку Создать, чтобы создать проект.

    При оценке исходной базы данных SQL Server, переносимой в отдельную базу данных или базу данных в составе пула в Базе данных SQL Azure, можно выбрать один или несколько следующих типов отчетов об оценке:

    • проверка совместимости базы данных;
    • проверка четности компонентов.

    По умолчанию выбраны оба типа отчетов.

  3. В помощнике по миграции данных на экране Параметры выберите Далее.

  4. На экране Выберите источники в диалоговом окне Соединение с сервером предоставьте сведения о подключении к SQL Server, а затем выберите Подключить.

  5. В диалоговом окне Добавление источников выберите Adventureworks2016, а затем щелкните Добавить и выберите Начать оценку.

    Примечание

    Если вы используете службы SSIS, обратите внимание, что сейчас DMA не поддерживает оценку базы данных-источника SSISDB. Но проекты и пакеты служб SSIS пройдут оценку и проверку, как только они будут повторно развернуты в целевую базу данных SSISDB, размещенную в Базе данных SQL Azure. Дополнительные сведения о миграции пакетов SSIS см. в статье Перенос пакетов SQL Server Integration Services в Azure.

    После завершения оценки результаты будут показаны, как на следующем рисунке:

    Оценка миграции данных

    Для баз данных в базе данных Azure SQL оценки определяют проблемы с четностью функций и проблемы блокировки миграции для развертывания в отдельной базе данных или в пуле.

    • Для категории четности компонентов SQL Server доступны разные рекомендации, а также описание альтернативных механизмы, используемых в Azure, и мер по устранению, которые помогут вам рассчитать трудозатраты для выполнения миграции.
    • Категория проблем совместимости определяет частично поддерживаемые или неподдерживаемые возможности, связанные с проблемами совместимости, которые могут блокировать перенос баз данных SQL Server в Базу данных SQL Azure. Также предлагаются рекомендации, которые помогут вам решить эти проблемы.
  6. Просмотрите результаты оценки проблем, блокирующих миграцию, и проблем с четностью компонентов, выбрав конкретные параметры.

Перенос примера схемы

Если результаты оценки вас устраивают и выбранная база данных подходит для переноса в отдельную базу данных или базу данных в пуле в Базе данных SQL Azure, воспользуйтесь Помощником по миграции данных для переноса схемы в Базу данных SQL Azure.

Примечание

Прежде чем создавать проект миграции в Data Migration Assistant, убедитесь, что база данных в Azure уже подготовлена, как описано выше.

Важно!

Если вы используете службы SSIS, обратите внимание, что сейчас DMA не поддерживает перенос базы данных-источника SSISDB, но вы можете повторно развернуть проекты и пакеты служб SSIS в целевую базу данных SSISDB, размещенную в Базе данных SQL Azure. Дополнительные сведения о миграции пакетов SSIS см. в статье Перенос пакетов SQL Server Integration Services в Azure.

Чтобы перенести схему базы данных Adventureworks2016 в отдельную базу данных или базу данных в пуле в службе "База данных SQL Azure", выполните следующие действия.

  1. В Помощнике по миграции данных щелкните значок New (+) (Создать (+)), а затем в разделе Project type (Тип проекта) выберите Migration (Миграция).

  2. Укажите имя проекта в текстовом поле Source server type (Тип исходного сервера), выберите SQL Server, а затем в текстовом поле Target server type (Тип целевого сервера) выберите База данных SQL Azure.

  3. В разделе Migration Scope (Область переноса) выберите Schema only (Только схема).

    После выполнения предыдущих действий интерфейс помощника по миграции данных должен выглядеть, как показано на следующем рисунке:

    Создание проекта в помощнике по миграции данных

  4. Выберите Создать, чтобы создать проект.

  5. В Помощнике по миграции данных укажите сведения о подключении к источнику для SQL Server, щелкните Подключить, а затем выберите базу данных Adventureworks2016.

    Сведения о подключении к источнику в помощнике по миграции данных

  6. В разделе Подключение к целевому серверу выберите Далее, укажите сведения о подключении к целевому объекту для базы данных SQL Azure, нажмите Подключить, а затем выберите базу данных AdventureWorksAzure, предварительно подготовленную в Базе данных SQL Azure.

    Сведения о подключении к целевому объекту в помощнике по миграции данных

  7. Выберите Далее, чтобы перейти на экран Выбор объектов, на котором можно указать объекты схемы в базе данных Adventureworks2016, которую нужно развернуть в службе "База данных SQL Azure".

    По умолчанию выбраны все объекты.

    Создание сценариев SQL

  8. Выберите Создать скрипт SQL, чтобы создать скрипт SQL, а затем просмотрите его на наличие ошибок.

    Скрипт схемы

  9. Выберите Deploy schema (Развернуть схему), чтобы развернуть схему в Базе данных SQL Azure, а затем проверьте целевой сервер на наличие аномалий.

    Развертывание схемы

Регистрация поставщика ресурсов

Прежде чем создать свой первый экземпляр Database Migration Service, зарегистрируйте поставщик ресурсов Microsoft.DataMigration.

  1. Войдите на портал Azure. Выполните поиск по запросу Подписки и выберите этот пункт.

    Отображение подписок на портале

  2. Выберите подписку, в которой нужно создать экземпляр Azure Database Migration Service, а затем щелкните Поставщики ресурсов.

    Отображение поставщиков ресурсов

  3. В поле поиска введите migration, а затем щелкните элемент Зарегистрировать рядом с Microsoft.DataMigration.

    Регистрация поставщика ресурсов

Создание экземпляра Azure Database Migration Service

  1. На домашней странице или в меню портала Azure щелкните элемент Создать ресурс. Найдите и выберите элемент Azure Database Migration Service.

    Azure Marketplace

  2. На экране Azure Database Migration Service выберите Создать.

    Создание экземпляра Azure Database Migration Service

    Выберите параметр Continue to use Azure Database Migration Service.

    Выбор сценария Database Migration Service

  3. На экране основных сведений Создание Migration Service сделайте следующее:

    • Выберите подписку.
    • Создайте группу ресурсов или выберите существующую.
    • Укажите имя для экземпляра Azure Database Migration Service.
    • Выберите расположение, в котором нужно создать экземпляр Azure Database Migration Service.
    • Выберите Azure в качестве режима службы.
    • Выберите ценовую категорию. Дополнительные сведения о ценовых категориях и затратах см. на странице с описанием цен.

    Настройка основных параметров экземпляра Azure Database Migration Service

    • Нажмите Далее: сеть.
  4. На экране сети Создание Migration Service сделайте следующее:

    Настройка параметров сети экземпляра Azure Database Migration Service

    • Выберите Проверить и создать, чтобы проверить сведения, а затем щелкните Создать, чтобы создать службу.

    • Через несколько секунд экземпляр службы Azure Database Migration Service будет создан и готов к использованию:

    Созданная служба Migration Service

Создание проекта миграции

После создания службы найдите ее на портале Azure, откройте и создайте проект миграции.

  1. В меню портала Azure выберите Все службы. Найдите и выберите элемент Службы Azure Database Migration Service.

    Поиск всех экземпляров Azure Database Migration Service

  2. На экране Службы Azure Database Migration Service выберите созданный экземпляр Azure Database Migration Service.

  3. Щелкните элемент Новый проект миграции.

    Поиск экземпляра службы Azure Database Migration Service

  4. На экране Новый проект миграции задайте имя для проекта, в текстовом поле Тип исходного сервера выберите SQL Server, в текстовом поле Тип целевого сервера выберите База данных SQL Azure, а затем для параметра Выберите тип действия миграции установите значение Миграция данных.

    Создание проекта Database Migration Service

  5. Выберите Создать и выполнить действие, чтобы создать проект и выполнить действие миграции.

Указание сведений об источнике

  1. На экране Выбор источника укажите сведения о подключении для исходного экземпляра SQL Server.

    Используйте для имени исходного экземпляра SQL Server полное доменное имя (FQDN). Если разрешение DNS-имен невозможно, можно использовать IP-адрес.

  2. Если на исходном сервере доверенный сертификат не установлен, установите флажок Доверять сертификату сервера.

    Если доверенный сертификат не установлен, SQL Server создает самозаверяющий сертификат при запуске экземпляра. Этот сертификат используется с целью шифрования учетных данных для клиентских подключений.

    Внимание!

    TLS-соединения, шифруемые с помощью самозаверяющего сертификата, не обеспечивают надежной защиты. Они уязвимы для атак "злоумышленник в середине". Не следует надеяться на защиту TLS с самозаверяющими сертификатами в рабочей среде или на серверах, подключенных к Интернету.

    Важно!

    Если вы используете службы SSIS, обратите внимание, что сейчас DMS не поддерживает перенос базы данных-источника SSISDB, но вы можете повторно развернуть проекты и пакеты служб SSIS в целевую базу данных SSISDB, размещенную в Базе данных SQL Azure. Дополнительные сведения о миграции пакетов SSIS см. в статье Перенос пакетов SQL Server Integration Services в Azure.

    Сведения об источнике

  3. Нажмите Далее: выбор баз данных.

Выбор баз данных для миграции

Выберите базы данных, которые нужно перенести в Базу данных SQL Azure. Служба DMS предоставит вам информацию об ожидаемом времени миграции для выбранных баз данных. Если такое время простоя приемлемо, продолжайте миграцию. Если простои миграции неприемлемы, рассмотрите возможность миграции на Управляемый экземпляр SQL с почти нулевым временем простоя или отправьте идеи и предложения по улучшению, а также другие отзывы на форуме сообщества Azure — Azure Database Migration Service.

  1. Из списка доступных баз данных выберите те, которые необходимо перенести.

  2. Обратите внимание на ожидаемое время простоя. Если это допустимо, нажмите кнопку "Далее: выбрать целевой объект>>"

    Базы данных-источники

Указание сведений о цели

  1. На экране Выбор целевого объекта укажите параметры проверки подлинности для Базы данных SQL Azure.

    Выбор цели

    Примечание

    Сейчас проверка подлинности SQL является единственным поддерживаемым типом проверки подлинности.

  2. По завершении выберите Next: Сопоставить с целевыми базами данных и сопоставьте исходную и целевую базы данных для миграции.

    Если в целевой базе данных содержится база данных с тем же именем, что у исходной базы данных, Azure Database Migration Service по умолчанию выберет целевую базу данных.

    Сопоставление с целевыми базами данных

  3. По завершении выберите Next: Настройка параметров миграции, разверните список таблиц и просмотрите список затронутых полей.

    Azure Database Migration Service автоматически выбирает все пустые исходные таблицы в целевом экземпляре Базы данных SQL. Чтобы повторно перенести таблицы, уже содержащие данные, необходимо явным образом выбрать их в этой колонке.

    Выбор таблиц

  4. По завершении выберите Next: Сводка, просмотрите настройки миграции и в текстовом поле Имя действия укажите имя для действия переноса.

    Выбор варианта проверки

Выполнение миграции

  • Выберите Начать миграцию.

    Появится окно действия миграции, в котором будет указано состояние действия Ожидание.

    Состояние действия

Мониторинг миграции

  1. На экране действия миграции нажимайте кнопку Обновить, чтобы обновить содержимое экрана, пока состояние миграции не поменяется на Завершено.

    Состояние действия

  2. Проверьте целевые базы данных в целевой Базе данных SQL Azure.

Дополнительные ресурсы