Обновление или исправление реплицируемых баз данныхUpgrade or patch replicated databases

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)  — только Windows Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) - Windows only

SQL ServerSQL Server поддерживает обновление реплицируемых баз данных SQL ServerSQL Server предыдущих версий, при этом на время обновления узла прекращать работу с другими узлами не требуется.supports upgrading replicated databases from previous versions of SQL ServerSQL Server; it is not required to stop activity at other nodes while a node is being upgraded. Соблюдайте следующие правила, определяющие допустимые версии объектов репликации.Ensure that you adhere to the rules regarding which versions are supported in a topology:

  • Версия распространителя не должна быть ниже версии издателя (во многих случаях распространителем и издателем является один и тот же экземпляр).A Distributor can be any version as long as it is greater than or equal to the Publisher version (in many cases the Distributor is the same instance as the Publisher).
  • Версия издателя не должна превышать версию распространителя.A Publisher can be any version as long as it less than or equal to the Distributor version.
  • Версия подписчика зависит от типа публикации следующим образом.Subscriber version depends on the type of publication:
    • Подписчик на публикацию транзакций может иметь любую версию, отличающуюся от версии издателя, но не более, чем на две версии.A Subscriber to a transactional publication can be any version within two versions of the Publisher version. Например: издатель SQL Server 2012 (11.x) может иметь подписчиков SQL Server 2014 (12.x) и SQL Server 2016 (13.x), а издатель SQL Server 2016 (13.x) — подписчиков SQL Server 2014 (12.x) и SQL Server 2012 (11.x).For example: a SQL Server 2012 (11.x) Publisher can have SQL Server 2014 (12.x) and SQL Server 2016 (13.x) Subscribers; and a SQL Server 2016 (13.x) Publisher can have SQL Server 2014 (12.x) and SQL Server 2012 (11.x) Subscribers.
    • Подписчик на публикацию слиянием может иметь любую версию, которая не превышает версию издателя и поддерживается в соответствии с циклом поддержки жизненного цикла версий.A Subscriber to a merge publication can be all versions equal to or lower than the Publisher version which are supported as per the versions life cycle support cycle.

Путь обновления SQL Server зависит от схемы развертывания.The upgrade path to SQL Server is different depending on the deployment pattern. Для SQL Server, как правило, предлагается два пути обновления:SQL Server offers two upgrade paths in general:

  • Параллельное использование. Развертывание параллельной среды и перемещение баз данных вместе со связанными объектами уровня экземпляров, такими как учетные данные и задания, в новую среду.Side-by-side: Deploy a parallel environment and move databases along with the associated instance level objects, such as logins, jobs, etc. to the new environment.
  • Обновление на месте. Установочный носитель SQL Server может обновить существующую установку SQL Server, заменив элементы SQL Server и обновив объекты баз данных.In-place upgrade: Allow the SQL Server installation media to upgrade the existing SQL Server installation by replacing the SQL Server bits, and upgrading the database objects. В средах с группами доступности Always On или экземплярами отказоустойчивых кластеров обновление на месте сочетается с последовательным обновлением для минимизации простоя.For environments running Always On Availability Groups or Failover Cluster Instances, an in-place upgrade is combined with a rolling upgrade to minimize downtime.

Общий подход, который используется для обновления топологий репликации в параллельном режиме, подразумевает перемещение пар "издатель-подписчик" в новую параллельную среду по частям вместо перемещения всей топологии.A common approach that has been adopted for side-by-side upgrades of replication topologies is to move publisher-subscriber pairs in parts to the new side-by-side environment as opposed to a movement of the entire topology. Этот поэтапный подход помогает контролировать время простоя и до определенной степени минимизировать вмешательство в зависимую от репликации бизнес-деятельность.This phased approach helps control downtime and minimize the impact to a certain extent for the business dependent on replication.

Основная часть этой статьи относится к обновлению версии SQL Server.The majority of this article is scoped towards upgrading the version of SQL Server. Тем не менее процесс обновления на месте также должен использоваться при применении исправлений SQL Server из пакета обновления или накопительного пакета обновления.However, the in-place upgrade process should also be used when patching SQL Server with a service pack or cumulative update as well.

Предупреждение

Обновление топологии репликации включает несколько этапов.Upgrading a replication topology is a multi-step process. Рекомендуем выполнить пробное обновление реплики топологии репликации в тестовой среде, прежде чем делать это в реальной рабочей среде.We recommend attempting an upgrade of a replica of your replication topology in a test environment before running the upgrade on the actual production environment. Это поможет подготовить рабочую документацию, которая позволит эффективно провести фактическое обновление, избежав длительных и затратных простоев.This will help iron out any operational documentation that is required for handling the upgrade smoothly without incurring expensive and long downtimes during the actual upgrade process. Нам известны примеры, когда клиентам удалось существенно сократить время простоев с использованием групп доступности Always On или экземпляров отказоустойчивого кластера SQL Server.We have seen customers reduce downtime significantly with the use of Always On Availability Groups and/or SQL Server Failover Cluster Instances for their production environments while upgrading their replication topology. Кроме того, мы рекомендуем создать резервные копии всех баз данных (включая MSDB, master, базы данных распространителя и пользовательские базы), участвующих в репликации перед попыткой обновления.Additionally, we recommend taking backups of all the databases including MSDB, Master, Distribution database(s) and the user databases participating in replication before attempting the upgrade.

Матрица репликацииReplication Matrix

Матрица совместимости репликации моментальных снимков и транзакцийTransactional & Snapshot Replication compatibility matrix

ИздательPublisher РаспространительDistributor ПодписчикSubscriber
SQL Server 2019SQL Server 2019 SQL Server 2019SQL Server 2019 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2017SQL Server 2017 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2016SQL Server 2016 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2014SQL Server 2014 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2012SQL Server 2012 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
     

Матрица совместимости репликации слияниемMerge Replication compatibility matrix

ИздательPublisher РаспространительDistributor ПодписчикSubscriber
SQL Server 2019SQL Server 2019 SQL Server 2019SQL Server 2019 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2017SQL Server 2017 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2016SQL Server 2016 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2014SQL Server 2014 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2012SQL Server 2012 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
     
     

Запуск агента чтения журнала для репликации транзакций перед обновлениемRun the Log Reader Agent for Transactional Replication Before Upgrade

Перед обновлением SQL ServerSQL Server необходимо убедиться, что все зафиксированные транзакции из опубликованных таблиц были обработаны агентом чтения журнала.Before you upgrade SQL ServerSQL Server, you must make sure that all committed transactions from published tables have been processed by the Log Reader Agent. Чтобы это обеспечить, для каждой базы данных, содержащей публикации транзакций, необходимо выполнить следующие шаги.To make sure that all transactions have been processed, perform the following steps for each database that contains transactional publications:

  1. Убедитесь, что в базе данных запущен агент чтения журнала.Make sure that the Log Reader Agent is running for the database. По умолчанию агент работает постоянно.By default, the agent runs continuously.
  2. Остановите активность пользователей в опубликованных таблицах.Stop user activity on published tables.
  3. Подождите, пока агент чтения журнала не скопирует транзакции в базу данных распространителя, затем остановите агент.Allow time for the Log Reader Agent to copy transactions to the distribution database, and then stop the agent.
  4. Чтобы убедиться, что все транзакции были обработаны, выполните процедуру sp_replcmds .Execute sp_replcmds to verify that all transactions have been processed. Результирующий набор от этой процедуры должен быть пустым.The result set from this procedure should be empty.
  5. Чтобы закрыть соединение процедуры sp_replcmds, выполните процедуру sp_replflush .Execute sp_replflush to close the connection from sp_replcmds.
  6. Обновите сервер до последней версии SQL ServerSQL Server.Perform the server upgrade to the latest version of SQL ServerSQL Server.
  7. Перезапустите агент SQL ServerSQL Server и агент чтения журнала, если после обновления они не запустятся автоматически.Restart SQL ServerSQL Server Agent and the Log Reader Agent if they do not start automatically after the upgrade.

Выполнение агентов для репликации слиянием после обновленияRun Agents for Merge Replication After Upgrade

После обновления запустите агент моментальных снимков для каждой публикации слиянием и агент слияния для каждой подписки, чтобы обновить метаданные репликации.After upgrade, run the Snapshot Agent for each merge publication and the Merge Agent for each subscription to update replication metadata. Применять новый моментальный снимок не требуется, потому что заново инициализировать подписки не нужно.You do not have to apply the new snapshot, because it is not necessary to reinitialize subscriptions. Метаданные подписки обновляются при первом запуске агента слияния после обновления.Subscription metadata is updated the first time the Merge Agent is run after upgrade. Это означает, что база данных подписки может оставаться в сети в активном режиме во время обновления издателя.This means that the subscription database can remain online and active during the Publisher upgrade.

Механизм репликации слиянием хранит метаданные публикации и подписки в нескольких системных таблицах баз данных публикации и подписки.Merge replication stores publication and subscription metadata in a number of system tables in the publication and subscription databases. При запуске агента моментальных снимков обновляются метаданные публикации, а при запуске агента слияния — метаданные подписки.Running the Snapshot Agent updates publication metadata and running the Merge Agent updates subscription metadata. Пользователь должен только сформировать моментальный снимок публикации.It is only required to generate a publication snapshot. Если при публикации слиянием используются параметризованные фильтры, каждой секции также соответствует моментальный снимок.If a merge publication uses parameterized filters, each partition also has a snapshot. Обновлять эти секционированные снимки не требуется.It is not necessary to update these partitioned snapshots.

Для выполнения агентов можно использовать среду SQL Server Management StudioSQL Server Management Studio, монитор репликации и окно командной строки.Run the agents from SQL Server Management StudioSQL Server Management Studio, Replication Monitor, or from the command line. Дополнительные сведения о выполнении агента моментальных снимков см. в следующих статьях:For more information about running the Snapshot Agent, see the following articles:

Дополнительные сведения о выполнении агента слияния см. в следующих статьях:For more information about running the Merge Agent, see the following articles:

Если после обновления SQL ServerSQL Server в топологии, в которой используется репликация слиянием, необходимо использовать новые возможности, измените уровень совместимости всех публикаций.After upgrading SQL ServerSQL Server in a topology that uses merge replication, change the publication compatibility level of any publications if you want to use new features.

Обновление до выпусков Standard Edition, Workgroup Edition и Express EditionUpgrading to Standard, Workgroup, or Express Editions

Перед обновлением с одного выпуска SQL ServerSQL Server до другого проверьте, что используемые функции поддерживаются в выпуске, до которого производится обновление.Before upgrading from one edition of SQL ServerSQL Server to another, verify that the functionality you are currently using is supported in the edition to which you are upgrading. Дополнительные сведения см. в разделе "Репликация" статьи Выпуски и поддерживаемые функции SQL Server 2016.For more information, see the section on Replication in Editions and supported features of SQL Server.

Процедура обновления топологии репликацииSteps to upgrade a replication topology

Эта процедура представляет рекомендуемый порядок обновления серверов в топологии репликации.These steps outline the order in which servers in a replication topology should be upgraded. Она также применима к репликации транзакций или репликации слиянием.The same steps apply whether you're running transactional or merge replication. При этом она не относится к одноранговой репликации, а также к поочередному или немедленному обновлению подписок.However, these steps do not cover Peer-to-Peer replication, queued updating subscriptions, nor immediate updating subscriptions.

Обновление «на месте»In-place upgrade

  1. Обновите распространителя.Upgrade the Distributor.
  2. Обновите издателя и подписчика.Upgrade the Publisher and the Subscriber. Эти элементы можно обновлять в любом порядке.These can be upgraded in any order.

Примечание

Для SQL 2008 и 2008 R2 обновление издателя и подписчика должно выполняться одновременно для соответствия матрице топологии репликации.For SQL 2008 and 2008 R2, the upgrade of the publisher and subscriber must be done at the same time to align with the replication topology matrix. Издатель и подписчик SQL 2008 или 2008 R2 не могут иметь издателя или подписчика SQL 2016 (или более поздней версии).A SQL 2008 or 2008R2 publisher or subscriber cannot have a SQL 2016 (or greater) publisher nor subscriber. Если одновременное обновление невозможно, используйте промежуточное обновление, чтобы сначала перевести экземпляры SQL на SQL 2014, а затем обновить их еще раз до SQL 2016 (или более поздней версии).If upgrading at the same time is not possible, use an intermediate upgrade to upgrade the SQL instances to SQL 2014, and then upgrade them again to SQL 2016 (or greater).

Параллельное обновлениеSide by side upgrade

  1. Обновите распространителя.Upgrade the Distributor.
  2. Перенастройте распространение на новом экземпляре SQL Server.Reconfigure Distribution on the new SQL Server instance.
  3. Обновите издателя.Upgrade the Publisher.
  4. Обновите подписчика.Upgrade the Subscriber.
  5. Перенастройте все пары "издатель-подписчик", включая повторную инициализацию подписчика.Reconfigure all Publisher-Subscriber pairs, including reinitialization of the Subscriber.

Процедура параллельной миграции распространителя в Windows Server 2012 R2Steps for side-by-side migration of the Distributor to Windows Server 2012 R2

Если вы планируете перевести экземпляр SQL Server на SQL Server 2016 (или более поздней версии) и текущей ОС является Windows 2008 (или 2008 R2), потребуется параллельное обновление операционной системы до Windows Server R2 или более поздней версии.If you are planning to upgrade your SQL Server instance to SQL Server 2016 (or greater), and your current OS is Windows 2008 (or 2008 R2), then you will need to perform a side-by-side upgrade of the OS to Windows Server R2 or greater. Это необходимо, так как SQL Server 2016 нельзя установить в Windows Server 2008/2008 R2 и эти ОС не поддерживают обновление на месте непосредственно в Windows Server 2016.The reason for this intermediate OS upgrade is that SQL Server 2016 cannot be installed on a Windows Server 2008/2008 R2, and Windows Server 2008/20008 R2 does not allow in-place upgrades directly to Windows Server 2016. Хотя можно выполнить обновление на месте с Windows Server 2008/2008 R2 до Windows Server 2012, а затем до Windows Server 2016. Как правило, делать это не рекомендуется из-за простоя и дополнительной сложности, препятствующей простому пути отката.While it's possible to perform an in-place upgrade from Windows Server 2008/2008 R2 to Windows Server 2012, and then to Windows Server 2016, doing so is generally not recommended due the downtime and added complexity preventing an easy roll-back path. Параллельное обновление — это единственный доступный путь обновления для экземпляров SQL Server, участвующих в отказоустойчивом кластере.A side-by-side upgrade is the only upgrade path available for SQL Server instances participating in a failover cluster. Следующие действия можно выполнить на автономном экземпляре SQL Server или внутри экземпляра отказоустойчивого кластера (FCI) Always On.The following steps can be performed on either a standalone SQL Server instance, or one within an Always On Failover Cluster Instance (FCI).

  1. Настройте новый экземпляр SQL Server (автономный или отказоустойчивый кластер Always On), выпуск и версию в качестве распространителя на Windows Server 2012 R2/2016, используя другое имя кластера Windows и FCI-экземпляра SQL Server либо имя автономного узла.Set up a new SQL Server instance (either standalone, or Always On Failover Cluster), edition, and version as your distributor on Windows Server 2012 R2/2016 with a different windows cluster and SQL Server FCI name or standalone host name. Необходимо сохранить прежнюю структуру каталогов распространителя, чтобы исполняемые файлы агентов репликации, папки репликации и файлы базы данных находились по тому же пути в новой среде.You will need to keep the directory structure same as the old distributor to ensure that the replication agents executables, replication folders, and database file paths are found at the same path on the new environment. Это упростит обновление и устранение проблем после миграции.This will reduce any post migration/upgrade steps required.
  2. Синхронизируйте репликацию, а затем завершите работу всех агентов репликации.Ensure that your replication is synchronized and then shut down all of the replication agents.
  3. Завершите работу текущего экземпляра распространителя SQL Server.Shut down the current SQL Server Distributor instance. Если это автономный экземпляр, завершите работу сервера.If this is a standalone instance, shut down the server. Если это экземпляр отказоустойчивого кластера SQL, отключите всю роль SQL Server в диспетчере кластеров, включая имя сети.If this is a SQL FCI, then take the entire SQL Server role offline in cluster manager, including the network name.
  4. Удалите записи объектов компьютеров DNS и AD для старой среды (текущего экземпляра распространителя).Remove the DNS and AD computer object entries for the old (current distributor instance) environment.
  5. Измените имя узла нового сервера, чтобы оно соответствовало старому серверу.Change the hostname of the new server to match that of the old server.
    1. Если это экземпляр отказоустойчивого кластера SQL, задайте для нового экземпляра то же имя виртуального сервера, что и у старого.If this is a SQL FCI, rename the new SQL FCI with the same virtual server name as the old instance.
  6. Скопируйте файлы баз данных из предыдущего экземпляра с помощью перенаправления SAN, копирования хранилища или копирования файлов.Copy the database files from the previous instance using SAN redirection, storage copy, or file copy.
  7. Подключите новый экземпляр SQL Server.Bring the new SQL Server instance online.
  8. Перезапустите все агенты репликации и проверьте, что они работают.Restart all of the replication agents and verify if the agents are running successfully.
  9. Убедитесь, что репликация работает надлежащим образом.Validate if replication is working as expected.
  10. Используйте установочный носитель SQL Server для обновления вашего экземпляра на месте и перехода на новую версию SQL Server.Use the SQL Server setup media to run an in-place upgrade of your SQL Server instance to the new version of SQL Server.

Примечание

Чтобы уменьшить простой, рекомендуем выполнять параллельную миграцию и обновление на месте до SQL Server 2016 раздельно.To reduce downtime, we recommend that you perform the side-by-side migration of the distributor as one activity and the in-place upgrade to SQL Server 2016 as another activity. Это позволит реализовать поэтапный переход, сократить риски и минимизировать время простоя.This will allow you to take a phased approach, reduce risk and minimize downtime.

Веб-синхронизация для репликации слияниемWeb Synchronization for Merge Replication

Для использования веб-синхронизации репликации слиянием необходимо скопировать в виртуальный каталог служб IIS, используемый для синхронизации, прослушиватель репликации SQL ServerSQL Server (replisapi.dll).The Web synchronization option for merge replication requires that the SQL ServerSQL Server Replication Listener (replisapi.dll) be copied to the virtual directory on the Internet Information Services (IIS) server used for synchronization. При настройке веб-синхронизации этот файл копируется в виртуальный каталог мастером настройки веб-синхронизации.When you configure Web synchronization, the file is copied to the virtual directory by the Configure Web Synchronization Wizard. Для обновления компонентов SQL ServerSQL Server , установленных на сервере IIS, необходимо вручную скопировать библиотеку replisapi.dll из каталога COM в виртуальный каталог сервера IIS.If you upgrade the SQL ServerSQL Server components installed on the IIS server, you must manually copy replisapi.dll from the COM directory to the virtual directory on the IIS server. Дополнительные сведения о конфигурации см. в статье Настройка веб-синхронизации.For more information about configuring Web synchronization, see Configure Web Synchronization.

Восстановление из копии реплицированной базы данных из предыдущей версииRestoring a Replicated Database from an Earlier Version

Чтобы обеспечить неизменность параметров репликации при восстановлении реплицированной базы данных, имеющей более раннюю версию, выполните восстановление на сервер и в базу данных, имеющих те же имена, что и у сервера или базы данных, для которых была сделана резервная копия.To ensure replication settings are retained when restoring a backup of a replicated database from a previous version: restore to a server and database with the same names as the server and database at which the backup was taken.

См. также:See Also

Репликация SQL ServerSQL Server Replication
Вопросы и ответы об администрировании репликации Replication Administration FAQ
Обратная совместимость репликации Replication Backward Compatibility
Поддерживаемые обновления версий и выпусков Supported Version and Edition Upgrades
Обновление SQL ServerUpgrade SQL Server
Обновление топологии репликации до SQL Server 2016Upgrading a Replication Topology to SQL Server 2016