Назад | Перейти на главную страницу

Доставка журналов для выбранных таблиц

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

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

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

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

Это должно быть установлено на нескольких сайтах, на которых работает либо Sql2005, либо Sql2008, у нас будут обе версии на нашей стороне для восстановления данных, так что это не проблема.

Спасибо.

Вы изучили Microsoft Sync Framework? Это технология синхронизации данных Microsoft, которая поддерживает SQL Server и другие хранилища данных, поддерживает синхронизацию подмножеств этих хранилищ данных (только определенных таблиц или других вещей) и, конечно же, Microsoft пытается интегрировать ее в ряд своих технологических стеков.

Вот связанный Вопрос StackOverflow: «Могу ли я синхронизировать только часть моих таблиц?». Слишком долго; не прочитал ответ Да, ты можешь.

Это должно сэкономить вам много времени при внедрении самостоятельного решения.

Единственное, что я могу придумать, это накатить собственное решение. Вот что бы я сделал:

Пакет, который выполняется на сервере, выполняющем bcp out дамп таблицы, заархивируйте его и поместите на FTP.

Вторая партия, запущенная в вашем офисе, регулярно проверяет FTP, если обнаруживает новый файл, распаковывает его, запускает DELETE FROM [tablename] а затем bcp in распакованного файла.

Вы в значительной степени рассмотрели два доступных вам варианта. Если вы не хотите создать какое-то решение SQL Service Broker или подобное, но для этого по-прежнему потребуется соединение между двумя серверами. Основываясь на том, что вы описали, репликация SQL Server между их сервером и вашим будет правильным решением проблемы.

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