Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Следующие вопросы и ответы содержат рекомендации по различным задачам, с которыми сталкиваются администраторы реплицированных баз данных.
Настройка репликации
Необходимо ли остановить действие в базе данных при публикации?
Нет. Активность может сохраняться в базе данных во время создания публикации. Помните, что создание моментального снимка может быть ресурсоемким, поэтому рекомендуется создавать моментальные снимки в периоды меньшего действия в базе данных (по умолчанию моментальный снимок создается при завершении мастера создания публикаций).
Заблокированы ли таблицы во время создания моментальных снимков?
Длительность удержания блокировок зависит от типа используемой репликации.
Для публикаций слиянием агент моментальных снимков не принимает блокировок.
Для публикаций транзакций агент моментальных снимков по умолчанию принимает блокировки только на начальном этапе создания моментальных снимков.
Для публикаций моментальных снимков агент моментальных снимков устанавливает блокировки во время всего процесса создания моментальных снимков.
Так как блокировки не позволяют другим пользователям обновлять таблицы, агент моментальных снимков должен выполняться в периоды меньшего действия в базе данных, особенно для публикаций моментальных снимков.
Если подписка доступна; когда можно использовать базу данных подписки?
Подписка будет доступна после применения снимка к базе данных подписки. Несмотря на то, что база данных подписки доступна до этого, база данных не должна использоваться до тех пор, пока не будет применен моментальный снимок. Используйте монитор репликации для проверки состояния создания моментальных снимков и приложения:
Моментальный снимок создается агентом снимков. Просмотрите состояние создания моментальных снимков на вкладке "Агенты" для публикации в Мониторе репликации. Дополнительные сведения см. в статье Просмотр сведений и выполнение задач с помощью монитора репликации.
Моментальный снимок применяется агентом распространителя или агентом слияния. Просмотрите состояние приложения моментального снимка на странице агента распространения или агента слияния в мониторе репликации.
Что произойдет, если агент моментальных снимков не завершил работу, когда запускается агент распространения или слияния?
Это не приведет к ошибке, если агент дистрибуции или агент объединения будут работать одновременно с агентом моментального снимка. Однако необходимо знать следующее:
Если агент распространения или агент слияния настроен на непрерывную работу, агент автоматически применяет моментальный снимок после завершения работы агента моментальных снимков.
Если агент распространения или агент слияния настроен на выполнение по расписанию или по запросу, и никакого моментального снимка недоступно при запуске агента, агент прекратит работу с сообщением, указывающим, что моментальный снимок еще недоступен. Необходимо снова запустить агент после завершения работы Агента моментальных снимков, чтобы применить моментальный снимок. Дополнительные сведения о выполнении агентов см. в разделах "Синхронизация push-подписки", "Синхронизация pull-подписки" и "Исполняемые файлы агентов репликации: концепции".
Следует ли выполнять скрипт конфигурации репликации?
Да. Сценарий конфигурации репликации является ключевой частью любого плана аварийного восстановления топологии репликации. Дополнительные сведения о скриптах см. в разделе "Репликация скриптов".
Какая модель восстановления необходима в реплицированной базе данных?
Репликация функционирует корректно при использовании любой из моделей восстановления: простой, с журнальной фиксацией массовых операций, полный. Репликация слиянием отслеживает изменение путем хранения сведений в таблицах метаданных. Репликация транзакций отслеживает изменения, помечая журнал транзакций, но этот процесс маркировки не влияет на модель восстановления.
Почему репликация добавляет столбец в реплицированные таблицы; Удаляется ли она, если таблица не опубликована?
Чтобы отслеживать изменения, репликации слияния и транзакционная репликация с подписками с обновлением по очереди должны иметь возможность уникально определять каждую строку в каждой опубликованной таблице. Для этого:
Репликация слияния добавляет столбец rowguid в каждую таблицу, если таблица уже не содержит столбец типа данных uniqueidentifier с набором свойств ROWGUIDCOL (в этом случае используется этот столбец). Если таблица удаляется из публикации, столбец rowguid удаляется; Если для отслеживания использовался существующий столбец, столбец не удаляется.
Если публикация транзакций поддерживает подписки, обновляемые в очереди, репликация добавляет столбец msrepl_tran_version в каждую таблицу. Если таблица удаляется из публикации, столбец msrepl_tran_version не удаляется.
Фильтр не должен включать столбец
rowguidcol, который используется в процессе репликации для идентификации строк. По умолчанию этот столбец добавляется при настройке репликации слияния и называется rowguid.
Как управлять ограничениями для опубликованных таблиц?
Существует ряд проблем, которые следует рассмотреть в отношении ограничений в опубликованных таблицах:
Для репликации транзакций требуется ограничение первичного ключа для каждой опубликованной таблицы. Репликация слиянием не требует первичного ключа, но если он присутствует, его необходимо реплицировать. Репликация моментальных снимков не требует первичного ключа.
По умолчанию ограничения первичного ключа, индексы и ограничения проверки реплицируются подписчикам.
Параметр NOT FOR REPLICATION по умолчанию задается для ограничений внешнего ключа и проверочных ограничений. Ограничения используются для пользовательских операций, но не для операций агентов.
Сведения о настройке параметров схемы, которые управляют репликацией ограничений, см. в разделе "Указание параметров схемы".
Как управлять идентификационными столбцами?
Репликация обеспечивает автоматическое управление диапазоном идентификаторов для топологий репликации, включающих обновления у подписчика. Дополнительные сведения см. в разделе "Репликация столбцов удостоверений".
Можно ли публиковать одни и те же объекты в разных публикациях?
Да, но с некоторыми ограничениями. Дополнительные сведения см. в разделе "Публикация таблиц в нескольких публикациях" раздела "Публикация данных и объектов базы данных".
Может ли несколько публикаций использовать одну и ту же базу данных распространителя?
Да. Нет ограничений на количество или типы публикаций, которые могут использовать ту же базу данных распространителя. Все публикации данного издателя должны использовать одного и того же дистрибьютора и одну и ту же базу данных распространения.
Если у вас несколько публикаций, можно настроить несколько баз данных распространителя, чтобы обеспечить передачу данных по каждой базе данных распространителя из одной публикации. Используйте диалоговое окно "Свойства распространителя " или sp_adddistributiondb (Transact-SQL) для добавления базы данных распространителя. Дополнительные сведения о доступе к диалоговому окне см. в разделе "Просмотр и изменение свойств распространителя и издателя".
Как найти сведения о распространитете и издателе, например о том, какие объекты в базе данных публикуются?
Эта информация доступна через SQL Server Management Studio и ряд хранимых процедур репликации. Дополнительные сведения см. в разделе "Распространитель" и "Скрипт сведений о издателе".
Шифрует ли репликация данные?
Нет. Репликация не шифрует данные, хранящиеся в базе данных или передаваемые по сети. Дополнительные сведения см. в разделе "Шифрование" раздела "Безопасность репликации SQL Server".
Как реплицировать данные через Интернет?
Репликация данных через Интернет с помощью:
Виртуальная частная сеть (VPN). Дополнительные сведения см. в статье "Публикация данных через Интернет с помощью VPN".
Параметр веб-синхронизации для репликации слияния. Дополнительные сведения см. в разделе веб-синхронизация при репликации слиянием.
Все типы репликации Microsoft SQL Server могут реплицировать данные по VPN, но при использовании репликации слиянием следует учитывать веб-синхронизацию.
Возобновляется ли репликация, если соединение прервано?
Да. Обработка репликации возобновляется в точке, на которой она прервалась, если подключение прерывается. Если вы используете слияние репликации через ненадежную сеть, рассмотрите возможность использования логических записей, которые гарантируют обработку связанных изменений как единого блока. Дополнительные сведения см. в разделе "Групповые изменения в связанных строках с логическими записями".
Работает ли репликация через подключения с низкой пропускной способностью? Используется ли сжатие?
Да, репликация работает с подключениями с низкой пропускной способностью. Для подключений через TCP/IP используется сжатие, предоставленное протоколом, но не обеспечивает дополнительное сжатие. Для подключений веб-синхронизации по протоколу HTTPS используется сжатие, предоставляемое протоколом, а также дополнительное сжатие XML-файлов, которые применяются для репликации изменений.
Имена входа и владение объектами
Реплицируются ли имена входа и пароли?
Нет. Вы могли бы создать пакет DTS для передачи логинов и паролей от Издателя одному или нескольким Подписчикам.
Что такое схемы и как они реплицируются?
Начиная с Microsoft SQL Server 2005 схема имеет два значения:
Определение объекта, например инструкция CREATE TABLE. По умолчанию репликация копирует определения всех реплицированных объектов подписчику.
Пространство имен, в котором создается объект: <База данных>.<Схема>.<Объект>. Схемы определяются с помощью инструкции CREATE SCHEMA.
Репликация имеет следующее поведение по умолчанию в Мастере создания публикаций в отношении схем и владения объектами:
Для статей в публикациях слияния с уровнем совместимости 90 или выше, в моментальных публикациях и публикациях транзакций: по умолчанию владелец объекта на подписчике тот же, что и владелец соответствующего объекта на издателе. Если схемы, которым принадлежат объекты, не существуют на Подписчике, они создаются автоматически.
Для статей в публикациях объединения с уровнем совместимости ниже 90, по умолчанию владелец остается пустым, а во время создания объекта на подписчике указывается как dbo.
Для статей в публикациях Oracle: по умолчанию владелец указывается как dbo.
Для статей в публикациях, использующих снимки режима символов (которые используются для подписчиков, не относящихся к SQL Server и подписчиков SQL Server Compact): по умолчанию владелец остается пустым. Владелец по умолчанию соответствует владельцу, связанному с учетной записью, используемой агентом распространителя или агентом слияния для подключения к подписчику.
Владельца объекта можно изменить в диалоговом окне «Свойства статьи - <статья> и с помощью следующих хранимых процедур: sp_addarticle, sp_addmergearticle, sp_changearticle и sp_changemergearticle. Дополнительные сведения см. в разделе "Просмотр и изменение свойств публикации", " Определение статьи" и "Просмотр и изменение свойств статьи".
Как можно настроить разрешения в базе данных подписки так, чтобы они соответствовали разрешениям в базе данных публикации?
По умолчанию репликация не выполняет GRANT инструкции в базе данных подписки. Если вы хотите, чтобы разрешения для базы данных подписки соответствовали этим в базе данных публикации, используйте один из следующих методов:
Выполнение GRANT инструкций непосредственно в базе данных подписки.
Используйте скрипт, выполняемый после создания моментального снимка, для выполнения команд. Дополнительные сведения см. в разделе "Выполнение скриптов до и после применения моментального снимка".
Используйте хранимую процедуру sp_addscriptexec для выполнения инструкций.
Что происходит с разрешениями, предоставленными в базе данных подписки, если подписка повторно инициализирована?
По умолчанию объекты на подписчике удаляются и повторно создаются при повторной инициализации подписки, что приводит к удалению всех предоставленных разрешений для этих объектов. Это можно сделать двумя способами.
Повторно примените гранты после повторной инициализации с помощью методов, описанных в предыдущем разделе.
Укажите, что объекты не следует удалять при повторной инициализации подписки. Перед повторной инициализацией выполните указанные ниже действия.
Выполните sp_changearticle или sp_changemergearticle. Укажите значение "pre_creation_cmd" (sp_changearticle) или "pre_creation_command" (sp_changemergearticle) для параметра @property и значение "none", "delete" или "truncate" для параметра @value.
В диалоговом окне >" в разделе "Целевой объект" , выберите значение "Сохранить существующий объект без изменений", "Удалить данные". Если в статье есть фильтр строк, удалите только данные, соответствующие фильтру. или "усечь все данные в существующем объекте" для параметра "Действие, если имя используется". Дополнительные сведения о доступе к этому диалоговому оккуму см. в разделе "Просмотр и изменение свойств публикации".
Обслуживание базы данных
Почему я не могу запустить TRUNCATE TABLE на опубликованной таблице?
TRUNCATE TABLE — это неисключаемая операция, которая не запускает триггеры. Не разрешено, так как репликация не может отслеживать изменения, вызванные операцией: транзакционная репликация отслеживает изменения в журнале транзакций; Репликация слиянием отслеживает изменения с помощью триггеров в опубликованных таблицах.
Каковы последствия запуска команды массовой вставки в реплицируемой базе данных?
Для репликации транзакций массовые вставки отслеживаются и реплицируются, как и другие вставки. Для репликации слиянием необходимо убедиться, что метаданные об отслеживании изменений обновляются должным образом.
Существуют ли рекомендации по репликации для резервного копирования и восстановления?
Да. Существует ряд специальных рекомендаций для баз данных, участвующих в репликации. Дополнительные сведения см. в разделе Резервное копирование и восстановление реплицируемых баз данных.
Влияет ли репликация на размер журнала транзакций?
Репликация слиянием и репликация моментальных снимков не влияют на размер журнала транзакций, но транзакционная репликация может. Если база данных содержит одну или несколько транзакционных публикаций, журнал не будет усечен до тех пор, пока все относящиеся к публикациям транзакции не будут доставлены в распределительную базу данных. Если журнал транзакций становится слишком большим, а агент чтения журналов запускается по расписанию, рассмотрите возможность сокращения интервала между запусками. Или установите его для запуска в непрерывном режиме. Если он установлен для выполнения в непрерывном режиме (по умолчанию), убедитесь, что он запущен. Дополнительные сведения о проверке состояния агента чтения журналов см. в разделе Просмотр сведений и выполнение задач с помощью монитора репликации.
Кроме того, если вы настроили параметр "Синхронизация с резервным копированием" в базе данных публикации или базе данных распространителя, журнал транзакций не усечен до тех пор, пока не будут созданы резервные копии всех транзакций. Если журнал транзакций растет слишком большой, и у вас есть этот параметр, рассмотрите возможность сокращения интервала между резервными копиями журналов транзакций. Дополнительные сведения о резервном копировании и восстановлении баз данных, участвующих в репликации транзакций, см. в стратегиях резервного копирования и восстановления моментальных снимков и репликации транзакций.
Как перестроить индексы или таблицы в реплицированных базах данных?
Существует множество механизмов перестроения индексов. Все они могут использоваться без особых соображений для репликации, за исключением следующего исключения: первичные ключи необходимы для таблиц в публикациях транзакций, поэтому вы не сможете удалить и повторно создать первичные ключи в этих таблицах.
Как добавлять или изменять индексы для баз данных публикации и подписки?
Индексы можно добавлять на сервере публикаций или на серверах подписчиков без особых требований для репликации (имейте в виду, что индексы могут влиять на производительность). CREATE INDEX и ALTER INDEX не реплицируются, поэтому, например, при добавлении или изменении индекса у издателя необходимо также создать или изменить его у подписчика, чтобы он отразился и там.
Как переместить или переименовать файлы для баз данных, участвующих в репликации?
В версиях SQL Server до SQL Server 2005 перемещение или переименование файлов базы данных требует отсоединения и повторного кэширования базы данных. Так как реплицированная база данных не может быть отключена, сначала репликация должна быть удалена из этих баз данных. Начиная с SQL Server 2005, вы можете перемещать или переименовать файлы без отключения и повторного подключения базы данных без влияния на репликацию. Дополнительные сведения о перемещении и переименовании файлов см. в разделе ALTER DATABASE (Transact-SQL).
Как удалить таблицу, которая реплицируется?
Сначала удалите статью из публикации с помощью sp_droparticle, sp_dropmergearticle или диалогового окна свойств публикации — <публикация> , а затем удалите ее из базы данных с помощью DROP <Object>. Вы не можете удалить статьи из моментальных снимков или публикаций транзакций после добавления подписок; Сначала необходимо удалить подписки. Дополнительные сведения см. в разделе "Добавление статей в существующие публикации" и "Удаление статей".
Как добавлять или удалять столбцы в опубликованной таблице?
SQL Server поддерживает широкий спектр изменений схемы в опубликованных объектах, включая добавление и удаление столбцов. Например, выполните ALTER TABLE ... DROP COLUMN в Publisher, а инструкция реплицируется на подписчиков, а затем выполняется для удаления столбца. Подписчики, работающие с версиями SQL Server до SQL Server 2005, поддерживают добавление и удаление столбцов с помощью хранимых процедур sp_repladdcolumn и sp_repldropcolumn. Дополнительные сведения см. в статье Внесение изменений в схемы баз данных публикации.
Обслуживание репликации
Как определить, синхронизированы ли данные на подписчиках с данными на издателе?
Используйте проверку. Проверка сообщает о том, синхронизирован ли данный подписчик с издателем. Дополнительные сведения см. в статье Проверка реплицированных данных. Проверка не предоставляет сведения о том, какие строки не синхронизированы правильно, но программа tablediff делает.
Как добавить таблицу в существующую публикацию?
Не нужно останавливать действия в базах данных публикации или подписки, чтобы добавить таблицу (или другой объект). Добавьте таблицу в публикацию с помощью диалогового окна "Свойства публикации— публикация<" > или хранимых процедур sp_addarticle и sp_addmergearticle. Дополнительные сведения см. в разделе "Добавление статей в существующие публикации" и "Удаление статей".
Как удалить таблицу из публикации?
Удалите таблицу из публикации с помощью sp_droparticle, sp_dropmergearticle или диалогового окна "Свойства публикации — <публикация> ". Вы не можете удалить статьи из моментальных снимков или публикаций транзакций после добавления подписок; Сначала необходимо удалить подписки. Дополнительные сведения см. в разделе "Добавление статей в существующие публикации" и "Удаление статей".
Какие действия требуют повторной инициализации подписок?
Существует ряд изменений статей и публикаций, требующих повторной инициализации подписок. Дополнительные сведения см. в разделе "Изменение свойств публикации и статьи".
Какие действия приводят к аннулированию моментальных снимков?
Существует ряд изменений статьи и публикации, которые делают моментальные снимки недействительными и требуют создания нового моментального снимка. Дополнительные сведения см. в разделе "Изменение свойств публикации и статьи".
Как удалить репликацию?
Действия, необходимые для удаления репликации из базы данных, зависят от того, служит ли база данных публикации, база данных подписки или оба.
Как определить, присутствуют ли транзакции или строки для репликации?
Для репликации транзакций используйте хранимые процедуры или вкладку undistributed Commands в мониторе репликации. Дополнительные сведения см. в разделе "Просмотр реплицированных команд и других сведений" в базе данных распространителя (репликация Transact-SQL программирование) и просмотр сведений и выполнение задач с использованием Монитора репликации.
Для репликации слиянием используйте хранимую процедуру sp_showpendingchanges. Дополнительные сведения см. в разделе sp_showpendingchanges (Transact-SQL).
Насколько отстает агент распространения? Следует ли повторно инициализировать?
Используйте хранимую процедуру sp_replmonitorsubscriptionpendingcmds или вкладку Нераспределённые команды в Мониторе репликации. Хранимая процедура и отображение вкладки:
Количество команд в базе данных распространителя, которые не были доставлены выбранному подписчику. Команда состоит из одной инструкции Transact-SQL языка обработки данных (DML) или одной инструкции языка определения данных (DDL).
Предполагаемое время доставки команд подписчику. Если это значение больше времени, необходимого для создания и применения моментального снимка к подписчику, рассмотрите возможность повторной инициализации подписчика. Дополнительные сведения см. в разделе "Повторная инициализация подписок".
Дополнительные сведения см. в статьях sp_replmonitorsubscriptionpendingcmds (Transact-SQL) и Просмотр сведений и выполнение задач с помощью Монитора репликации.
Репликация и другие функции базы данных
Работает ли репликация в сочетании с доставкой журналов и зеркальным отображением базы данных?
Да. Дополнительные сведения см. в разделе "Доставка журналов и репликация" (SQL Server) изеркальное отображение базы данных и репликация (SQL Server).
Работает ли репликация в сочетании с кластеризации?
Да. Особые рекомендации не требуются, так как все данные хранятся на одном наборе дисков в кластере.
См. также
Вопросы и ответы об администрировании репликации
Рекомендации по администрированию репликации