0

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

Таблицы базы данных имеют ссылочную целостность. Есть ли способ, которым это можно сделать без перезаписи sql-скрипта (или какого-либо другого метода) при каждом переносе данных клиентов?

Я наткнулся на это How to move data between multiple database's table while maintaining foreign-key relationships/referential integrity?. Однако кажется, что у нас есть сценарий записи каждый раз, когда мы переносим данные (пожалуйста, исправьте меня, если я неправильно понял ответ на эту тему).

Благодаря

Edit:

  • Оба сервера используют 2012 (той же версии) SQL Server. Его база данных Azure SQL Server.
  • Они не обязательно связаны (между ними нет межсетевого экрана)
  • Мы переносим только некоторые данные, а не всю базу данных. Это касается только тех, кто предпочитает платить больше.
  • Схема одинакова в обеих базах данных.
+2

Не могли бы вы высказать некоторые замечания, почему это было отклонено? Чтобы я мог это исправить. Спасибо – daehaai

+0

Существует несколько способов решения этой проблемы, начиная с SSIS и заканчивая резервным копированием базы данных на одном сервере и восстановлением с другой. Нам нужно больше деталей, чтобы помочь вам. Оба сервера используют одну и ту же версию (и какую версию она)? Могут ли быть связаны серверы (что означает, что между ними нет межсетевого экрана)? Речь идет о передаче целых баз данных или только некоторых данных? если это всего лишь данные, соответствует ли схема таблиц в обеих базах данных? –

+0

Вопрос редактируется. с более подробной благодарностью за ввод. – daehaai

ответ

4

Прейаш - см. Документацию на Split-Merge tool. Средство Split-Merge позволяет вам перемещать данные между базами данных, как вы описали, на основе ключа осколки (например, идентификатора клиента). Одна модификация, которая вам понадобится для вашего приложения, - это добавить shard map (т. Е. Базу данных, которая понимает глобальное состояние, в котором клиенты находятся в каких базах данных).

+0

Хотя это более умное решение, оно требует гораздо больше изменений в нашем существующем приложении, чем нам хотелось бы. Я надеялся, что это более простое решение, как сказал Зохар Пелед. пакет SSIS? или сценарий, который может быть параметризован, возможно. – daehaai

1

Посмотрите на Azure Data Sync. Это намного больше соответствует вашим требованиям. Но у вас может быть еще одна база данных SQL Azure для поддержки концентратора. Данные Azure Sync следуют за хаб-спицевым рисунком и позволят вам выполнять все гибкие направленные синхронизаторы с несколькими минутами синхронизации. Он более прост и может настроить его очень быстро без каких-либо скриптов и все, что вам нужно.

+0

Он заботится о ссылочной целостности и других проблемах с зависимостями. –

+0

Спасибо, это совершенно правильный ответ, но это еще одна особенность базы данных Azure, и это означает изменение существующей инфраструктуры и бросание денег на проблему. – daehaai

Смежные вопросы