T-SQL - существует ли (бесплатный) способ сравнения данных в двух таблицах? - PullRequest
8 голосов
/ 10 июня 2010

У меня есть table a и table b. (SQL Server 2008)

Обе таблицы имеют одинаковую схему.

Для целей этого вопроса рассмотрим table a = мою локальную таблицу разработчиков, table b = живую таблицу.

Мне нужно создать сценарий SQL (содержащий операторы UPDATE/DELETE/INSERT), который обновит таблицу b так, чтобы она соответствовала таблице a. Затем этот сценарий будет развернут в действующей базе данных.

Есть ли какие-нибудь бесплатные инструменты, которые могут это сделать, или еще лучше, как я могу сделать это сам?

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

У кого-нибудь есть идеи?

EDIT

Хорошо, подумал, что немного проясню этот вопрос.

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

Вот идея того, как TABLE A может выглядеть:

IdFoo          Activity      IsFoo
1              Foo           1
2              Bar           0

Вот идея того, как TABLE B может выглядеть:

IdFoo          Activity      IsFoo
1              Foo           1
2              Bar           1

По сути, все, что я хочу сделать, это обновить этот столбец BIT (IsFoo) в TABLE B, чтобы он соответствовал соответствующему значению в TABLE A для того же IdFoo.

Имейте в виду:

  • TABLE A на моей локальной машине
  • TABLE B находится на живом сервере

Очевидно, у меня есть (надежная) резервная копия TABLE B на моей локальной машине, для которой мне нужно выполнить скрипт, а затем запустить скрипт на живом сервере.

Таблица также имеет ссылочную целостность (другие столбцы, которые я не показывал). Это означает, что я не могу просто удалить все в TABLE B и сделать вставку из TABLE A.

Этот скрипт будет разовым. Поэтому нет необходимости делать такие вещи, как связанный сервер, репликация и т. Д. Оцените ответы, ребята. =)

EDIT:

Ладно. Итак, я пошел с ответом Олега (Сравнение данных VS2010). Быстро, легко и работает заклинание.

Не сказать, что другие ответы неверны. Я ценю все ответы!

Ответы [ 12 ]

0 голосов
/ 23 сентября 2010

Вы можете попробовать наш Schema Compare для SQL Server

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

0 голосов
/ 10 июня 2010

Вы также можете попробовать использовать import and export data, предоставляемый SQL Server 2008. Это довольно простой способ скопировать все данные из любого места в любое место.Я делаю то же самое и работает отлично.

...