2013-04-24 2 views
2

У меня есть несколько таблиц в моей базе данных A, которые связаны между собой через внешние ключи и содержат значения. Эти значения должны быть перенесены в другую базу данных B, все зависимости должны быть сохранены, но фактические (числовые) значения первичных и внешних ключей, конечно, не имеют значения.Перенос нескольких соединенных таблиц из одной базы данных в другую с помощью SSIS?

Что было бы самым простым способом выполнить эту задачу с помощью SSIS?

Вот подходы я пытался, но без особого успеха:

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

  2. Я попытался скопировать таблицы один на один с помощью параметров NOCHECK, чтобы поднять проверки ограничений и выполнить вставку в поля PK и FK. Это, однако, ограничивает мою передачу полным полным импортом, я не могу просто «добавить» некоторые новые данные к существующему набору данных, которые были бы хороши.

Любые другие предложения?

+0

Вы сказали: «Я не могу просто« добавить »некоторые новые данные к существующему набору данных, которые были бы хороши». Если вы добавили предложение «И НЕ СУЩЕСТВУЕТ», используя первичный ключ, это должно быть возможно. Используете ли вы автоинкремент (например, IDENTITY) в качестве первичного ключа? Если да, существует ли еще одна комбинация столбцов, которая будет уникальной для каждой строки? Есть ли столбец отметки времени в таблице, который указывает, когда была вставлена ​​строка? –

+0

@MichaelHarmon, да, вы технически правы, но вставка может частично потерпеть неудачу, что абсолютно неприемлемо. Да, у меня классическая таблица с PK, определенная на целочисленном столбце с автоинкрементами и идентификацией (уникальность). Для некоторых таблиц я могу найти другой уникальный идентификатор, объединив несколько столбцов вместе, но не для всех таблиц (некоторые из них представляют собой таблицы «один-ко-многим», соединенные через ПК). У меня есть поле timestamp на некоторых таблицах, не снова не везде (только там, где мы используем его в настоящее время для параллелизма). –

ответ

2

Integration Services имеет управление потоком называется Database Transfer Task и Transfer SQL Server Objects Задачу эксклюзивных за то, что вам нужно.

Вот учебник для вас LINK.