SQL Server 2005 - лучший способ перемещать данные между двумя базами данных при изменении первичных ключей - PullRequest
1 голос
/ 17 октября 2008

я знаю, что это должно быть 101 дБ, но это не так ясно, как это может быть для меня. Я использую экспресс SQL2005 и хочу скопировать данные из базы данных А в базу данных В. DatabaseB уже содержит существующие данные - она ​​может даже содержать данные с pk, которые изменились или не существуют - например:

База данных A pk1 = персики pk2 = яблоки

База данных B pk1 = персики pk2 = апельсины pk3 = яблоки

теперь у обоих A & B есть связанные таблицы, которые привязаны к ПК.

Исторически я бы написал приложение, которое выбирает данные из A и копирует их в B через его процедуры вставки / обновления (используя .NET), но, очевидно, это очень громоздко, хотя некоторые преимущества состоят в том, что у меня может быть раскрывающийся список, который позволяет выберите A для копирования - и B для копирования, если он существует, или произнесите добавление нового - например:

(выпадающий список - выберите источник) персики Яблоки

(выпадающий список - выберите цель) -new- персики апельсины яблоки

Я собирался использовать SSIS, но целевая база данных имеет только SQL Express, поэтому она недоступна, и у меня нет времени на ее изучение (в прошлом я пользовался dts, но не этим новым инструментом). В SQL2000 я просто использовал бы DTS, но с более сложной схемой теперь я даже не уверен, что доверю этому.

Есть предложения или мне просто продолжать писать свои собственные приложения для переноса данных из А в Б?

Я с нетерпением жду предложений от всех - я хотел бы продолжить путь, который, как мне кажется, является лучшим способом сделать это: -)

Ответы [ 4 ]

1 голос
/ 25 мая 2009

sql 2008 имеет интересную функцию под названием Change Data Capture, которая может быть интересна для вас в будущем http://blog.benhall.me.uk/2007/06/sql-server-2008-change-data-capture-cdc.html

1 голос
/ 17 октября 2008

, если серверы находятся в одной сети, добавьте связанный сервер (см. Книги Transact SQL в Интернете). Затем вы можете выполнять запросы на двух серверах.

SQL Server 2005 Express - отстой, поскольку он не включает службы SSIS. Однако вы также можете использовать BCP (массовое копирование, посмотрите также в онлайновых книгах по Transact SQL), чтобы скопировать ваши данные в разные таблицы на целевом сервере. Это, вероятно, на вашем пути, поэтому из DOS вы можете набрать bcp /? чтобы получить список вариантов. Когда данные находятся в таблице на целевом сервере, вы можете выполнять запросы к ним.

Вам необходимо создать отображение между ключами. Я не знаю, как из персиков / яблок вы получаете персики / апельсины / яблоки. Без сомнения, есть некоторая бизнес-логика. После того, как вы свяжете серверы или получите данные на одном сервере. Вы можете использовать бизнес-логику для сопоставления старых первичных ключей с новыми ключами. Или таблицу сопоставления (oldkey, newkey) или (oldkey1, oldkey2, newkey1, newkey2, newkey3), которую вы заполняете вручную.

0 голосов
/ 20 октября 2008

Вы можете посмотреть репликацию слиянием - http://msdn.microsoft.com/en-us/library/ms165713(SQL.90).aspx

Это всегда односторонний толчок? A-> B

Как примечание: если вы могли бы получить SSIS, вам нужно немного времени, чтобы изучить его. Это лучше чем DTS imho.

0 голосов
/ 17 октября 2008

Не совсем знаком с ограничениями SQL Server Express, но не могли бы вы сделать резервную копию? А затем импортировать как другую базу данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...