Использование SQL Server Replication - PullRequest
1 голос
/ 27 марта 2009

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

Edit:

Мы используем Sql Server 2005. Мы не можем использовать зеркальное отображение базы данных, так как мы использовали другую базу данных для отчетов. Насколько мне известно, вы не можете делать запросы из зеркальной базы данных.

Ответы [ 7 ]

3 голосов
/ 27 марта 2009

Если вам нужна только пара таблиц из вашей БД для отчетов, репликация более полезна, но вы также можете настроить доставку журналов со вторичным сервером в режиме STAND BY (особенно если вам нужна значительная часть данных для отчетов), тогда вы можете запускать отчеты на вторичном сервере. Вам просто нужно помнить, что доставка журналов будет мешать резервному копированию журналов транзакций, поэтому вы должны использовать одну и ту же папку с файлами резервных копий журналов для обоих процессов.

2 голосов
/ 20 апреля 2009

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

Во-первых, зеркалирование базы данных очень легко настроить, и у меня никогда не возникало с этим проблем (я пользовался им последние 4+ года).

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

Конечно, все это зависит от того, хотите ли вы, чтобы ваши отчеты работали в режиме реального времени или их можно было несколько отложить.

1 голос
/ 22 апреля 2009
1 голос
/ 21 апреля 2009

У нас есть транзакционная репликация SQL, которая прекрасно работает. Кажется, вы говорите, что когда вы вносите изменения в схему издателя, у вас возникают проблемы. Каждый раз, когда мы делаем изменение схемы, мы удаляем публикацию, подписку и базу данных подписки. Сделайте изменения, а затем заново соберите все. Мы можем сделать это, потому что мы можем терпеть время, необходимое для повторного применения снимка. Существуют способы применить изменения схемы к публикации и распространить их на подписчика. Посмотрите на sp_register_custom_scripting. Мы сделали эту работу один раз, поэтому я могу дать вам больше информации, если вам нужно.
Как говорит @Jason, вы можете создавать отчеты из зеркальной базы данных, используя снимок. Помните, что моментальный снимок займет место и вызовет больше работы для зеркального сервера. Хотя, сколько места будет зависеть от того, сколько данных меняется и насколько велика ваша исходная база данных. Мы используем снимок в зеркальной базе данных для периодических отчетов, поскольку вся наша база данных не реплицируется.

1 голос
/ 20 апреля 2009

Вот список проблем, которые мне пришлось решить, чтобы заставить репликацию работать:

1) Репликация иногда лжет мне и говорит мне об этом, даже если она работает нормально. «Сервер« Боб »не является подписчиком (поставщик данных .Net SqlClient).

2) Перезапуск может занять некоторое время, особенно если ваша удаленная база данных находится на другой стороне планеты, как в моем случае. Если у вас медленное сетевое соединение или оно не надежно на 100%, у вас могут возникнуть проблемы. Кроме того, задания, которые перезапускают процесс, могут иногда выполняться некоторое время, что также приводит к дальнейшим задержкам.

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

0 голосов
/ 22 апреля 2009

Мы также использовали репликацию транзакций SQL. У нас были те же проблемы с обновлением схемы, которое требует отбрасывания публикации на всех серверах, выполнения обновлений, а затем повторной инициализации репликации и надежды на лучшее. Иногда он не инициализируется, или узел отстает, и мы получаем небольшое предупреждение об этом. Несколько раз мы даже теряли все разрешения на выполнение хранимых процедур, что приводило к полному отказу веб-сайтов.

У нас довольно большая база данных, поэтому повторная инициализация может занять довольно много времени, а это означает, что все обновления должны были быть сделаны в 2 часа ночи в воскресенье - не совсем тогда, когда мы не спим и оповещены и способны использовать все наши способности для решения проблемы это может возникнуть.

Мы отказываемся от репликации в пользу отказоустойчивой кластеризации в SQL 2008, но это все еще можно сделать вплоть до SQL 2000.

http://technet.microsoft.com/en-us/library/cc917693.aspx

0 голосов
/ 27 марта 2009

Какую версию SQL Server вы используете?

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

Я бы изучил ваши журналы событий и журналы SQL Server, чтобы выяснить, можете ли вы определить, почему он выключается и почему он не запускается. Возможно, вы исправляете серверы или у вас возникают сетевые ошибки?

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

...