Репликация sql server 2008 r2

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

Предварительно необходимо удостовериться, что компонент SQL Server Replication установлен на обоих серверах.

1. На сервере-распространителе создаем локальную публикацию (local publication).

1.1. Указываем базу, данные которой мы хотим реплицировать на другой сервер

1.2. Выбираем тип репликации. В нашем случае это будет Transactional Publication

1.3. Указываем публикуемые таблицы или иные объекты

1.4. При необходимости можем задать фильтр, по которому будут отбираться данные для репликации

1.5. На странице Snapshot Agent ничего не отмечаем

1.6. На странице Agent Security указываем учетные данные для агента моментальных снимков и агента чтения журнала. Для Snapshot Agent’а можно указать учетную запись, под которой запускается SQL Server Agent. Позже, в свойствах созданной публикации, мы можем задать другую учетную запись для запуска снапшот агента (Snapshot Agent).

1.7. На странице Wizard Actions ставим галку Create the Publication

1.8. На заключительной странице задаем имя публикации

1.9. В свойствах только что созданной публикации задаем папку для хранения моментальных снимков (Put files in the following folder), которую предварительно необходимо создать. Папка моментальных снимков является обычной общей папкой. Для агентов, осуществляющих чтение и запись в этой папке, необходимо установить соответствующие разрешения для доступа к ней. В этом каталоге хранятся объекты, необходимые для репликации на первом узле. В нашем случае необходимо предоставить на данную папку полные права той учетной записи, от имени которой запускается SQL Server Agent на сервере-распространителе. Далее в свойствах созданной локальной публикации выбираем пункт «Subscription Options» и ставим галку напротив опции «Compress Snapshot» (это уменьшит нагрузку на сеть), а параметр опции «Allow anonymous subscriptions» ставим в значение «false».

Читайте также  Попытка входа в сеть

1.10. В SQL Server Management Studio на сервере-распространителе заходим в Security – Logins и добавляем пользователя, от имени которого стартует агент моментальных снимков на этом сервере. В поле Default database выбираем базу данных, которую мы реплицируем, а в закладке User Mapping наделяем данного пользователя ролью db_owner на реплицируемую базу, а также на созданную в процессе создания репликации базу Distribution.

2. На сервере-подписчике создаем локальную подписку (local subscription).

2.1. Выбираем сервер-распространитель и нужную нам публикацию

2.2. На странице Distribution Agent Location указываем, где будет запускаться Агент распространителя. В случае с запуском всех агентов на сервере-распространителе мы получим упрощенное администрирование, но и повышенную нагрузку на сам сервер-распространитель. Выбираем второй вариант – Run each agent at its Subscriber (pull subscriptions), что позволит нам не нагружать дополнительно наш основной сервер.

2.3. Указываем базу, в которую будут реплицироваться данные.

2.4. На странице Distribution Agent Security указываем учетные данные для запуска Агента распространителя. Можно указать учетную запись, под которой запускается SQL Server Agent. После этого предоставляем этой учетной записи разрешение на чтение папки моментальных снимков. Кроме того, данная учетная запись должна быть добавлена в SQL сервера-распространителя с ролью Public на реплицируемую базу, после чего – в Access List публикации (в свойствах локальной публикации надо выбрать Publication Access List).

2.5. На странице Synchronization Schedule указываем расписание синхронизации для каждого Агента. Для нашего случая выбираем запуск по требованию или по расписанию (например, каждый час)

2.6. На странице Initialize Subscriptions указываем инициализацию при первой синхронизации

2.7. На странице Wizard Actions ставим галку Create the subscription(s).

3. Запуск репликации, проверка.

3.1. На сервере-распространителе выполним Reinitialize All Subscriptions. Укажем, что необходимо создать новый моментальный снимок. В результате этой процедуры в папке хранения моментальных снимков должна создастся новая папка со снимками.

Читайте также  Программа для сканирования kyocera fs 1035mfp

3.2. Мы можем отслеживать состояние репликации и запускать репликацию в утилите Replication Monitor, а также через задания SQL Server Agent.

7 Vaccano [2011-09-26 21:03:00]

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

Эти таблицы имеют несколько внешних ключей между ними. Когда я смотрю на реплицированные таблицы, у них нет внешних ключей.

Итак, вот мои вопросы:

  • Если репликация будет копировать эти внешние ключи по умолчанию?
  • Если нет, как я могу заставить их реплицироваться?
  • Если да, то что может заставить их не реплицироваться?

Примечание: Моя исходная база данных имеет TableA и TableB . TableA имеет первичный ключ AId . TableB имеет внешний ключ в этом столбце. И я делаю транзакционную репликацию как TableA , так и TableB .

sql-server-2008 foreign-keys replication sql-server-2008-r2

1 ответ

6 Решение peter [2011-12-05 23:50:00]

Хорошо, я наткнулся на что-то, но это будет зависеть от того, какой тип репликации вы используете.

Я использую транзакционную репликацию. Найдите публикацию, которую вы используете здесь,

(Management Studio) Репликация → Локальные публикации → (Публикация)

Щелкните правой кнопкой мыши публикацию и выберите свойства, затем в статьях щелкните правой кнопкой мыши "Таблицы" и выберите опцию "Установить свойства всех статей таблицы".

В нем первый элемент — "Скопировать ограничения внешнего ключа".

Не пробовал, но я ожидаю, что это сработает.

Вы можете применить эти настройки для таблицы также, если вы щелкните правой кнопкой мыши по одной таблице и выберите опцию "Установить свойства этой статьи таблицы".

439 просмотра

1 ответ

514 Репутация автора

У меня настроена репликация транзакций между двумя отдельными серверами Windows 2008 R2 под управлением SQL Server 2008 R2. Я использую SSMS на сервере издателя для настройки репликации.

Читайте также  Разгон fx 4300 по шине

Я выбрал все в базе данных при создании публикации статей. (Таблицы, хранимые процедуры, представления, индексированные представления и пользовательские функции). Я создал снимок, а затем начал репликацию. Казалось, все работает правильно. Я не получил никаких ошибок.

Однако, когда я смотрю на некоторые реплицированные таблицы на подписчике в представлении «Дизайн» с использованием SSMS, они пропускают значения в разделе «Значение по умолчанию или привязка», которые существуют в базе данных издателя.

Я не могу найти какие-либо настройки в свойствах публикации, в которых говорится "Значение по умолчанию или привязка". У меня "Реплицировать изменения схемы", установленный в true на вкладке параметров подписки в свойствах публикации.

Что мне здесь не хватает? Разве репликация не должна была скопировать подписчику какие-либо значения по умолчанию, установленные в схеме таблицы?

В качестве примера, вот раздел сценария репликации, который относится к одной конкретной таблице, в которой я вижу эту проблему.

Заранее благодарю за любую помощь.

Ответы (1)

1 плюс

11487 Репутация автора

Я удалил свой последний ответ, так как дал неправильный ответ для вашего типа репликации. Когда вы выбираете статьи для публикации, есть параметр, чтобы скопировать спецификации значения по умолчанию для подписчика, значение по умолчанию равно false. Установка этого значения в true должна гарантировать, что ограничение применяется к подписчику. Смотрите "Свойства статьи" при выборе ваших статей. Вы можете обратиться ко всем или одному.

Ссылка на основную публикацию
Adblock
detector