2013-04-02 4 views
1

Мне нужно сравнить структуру ок. 50 таблиц в SQL Server 2005 и написать сценарий T-Sql, чтобы сделать их равными. Каждая таблица имеет свою копию в той же базе данных, единственная разница которой заключается в имени и структуре (например, оригинальное «tableName» должно сравниваться с «tableName_copy», а «tableName_copy» имеет недостающие ограничения, PK, FK, триггеры и т. Д.), ,Инструмент для сравнения двух разных таблиц

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

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

ответ

1

Не могли бы вы использовать другой подход, скопировав ваши tablename_copy s во вторую базу данных, но переименовав их в tablename, а затем запустив ваш любимый инструмент сравнения?

+0

Спасибо, Дан, это на самом деле хорошая идея. Но после создания сценария сравнения и обновления таблицы «_copy» мне нужно переместить эту таблицу с данными в старую базу данных (отбрасывая исходную таблицу, так как «_copy» хранит нужные данные). Любая идея о том, как это можно сделать? Это будут повторяющиеся задачи (выполняются раз в месяц), поэтому «по сценарию» решения будут лучше, чем ручные :) – Jacek

+0

Интересно. Будет ли схема когда-либо отличаться, или это только данные, которые необходимо сравнить? И вы принимаете решения относительно сравнения или есть только автоматические правила? –

+0

Ну, история намного длиннее. Существует большая база данных с 1600 + таблицами, 600+ SP и множеством других объектов (заданий, триггеров, а что нет), используемых несколькими приложениями. Необходимо было «разбить» одно из приложений, оставив только объекты и схему БД, используемые этим конкретным приложением. Было довольно легко проанализировать это приложение и определить, какие объекты БД он использует, но проблема возникла с очисткой данных из оставшихся 200 + таблиц (50+ таблиц имеют 12MM + записи каждый). Самый быстрый способ, который мы нашли, - «выбрать в tableCopy». Другой вариант, который мы рассматриваем, - использовать ETL. – Jacek