SQL Server 2005 - копировать различия только в таблицы

У меня возникла проблема с базой данных SQL Server после обновления какого-то ужасного программного обеспечения. Программное обеспечение «обновило» (на самом деле, откатило) кучу зашифрованных хранимых процедур и пользовательских функций в базе данных, что теперь вызывает ошибки в другом программном обеспечении.

К счастью, я сделал резервную копию непосредственно перед обновлением, однако ошибка не была замечена примерно через час, что означает, что записи были обновлены / вставлены / удалены и т. д. С момента создания резервной копии.

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

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

Итак, вот вопросы:

  1. Как лучше всего объединить таблицы из резервной копии с таблицами из неработающей базы данных?

  2. Может ли простое усечение или удаление существующих таблиц в резервной копии избежать этих ошибок проверки? Я получаю сообщения об ошибках, такие как «VS_ISBROKEN» и т. д., Когда пытаюсь использовать функцию экспорта данных для передачи данных, с удалением существующего набора данных и включением Identity_Insert и т. д. (Усечение)

Я еще не пробовал удалить все таблицы из резервной копии и продолжить работу оттуда. Если я подойду к проблеме таким образом, не повлияет ли это на метаданные?

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

Спасибо за прочтение :)

На рынке есть несколько инструментов для сравнения данных, вам стоит их попробовать.

Aaron Bertrand 04.04.2018 21:15

@AaronBertrand Я рассмотрел пару (ApexSQL и LiteSpeed), но мне действительно не хотелось устанавливать пробное программное обеспечение на сервер только для этой единственной задачи. Должен быть способ просто написать это с помощью собственного SQL, моей следующей попыткой будет просто использовать «SELECT * FROM INTO» для каждой таблицы, но это требует времени для выполнения для каждой отдельной таблицы.

Dan Austin 04.04.2018 21:19

Вам не нужно устанавливать его на сервер, просто на любую рабочую станцию ​​или даже виртуальную машину, которая может подключаться к обеим базам данных. Вы, конечно, можете создать сценарий для каждой таблицы и провести сравнение самостоятельно, но для этого нет волшебной кнопки, и это действительно утомительная работа. Вот почему поставщики создают инструменты именно для того, чтобы упростить работу и чтобы вы могли избежать всех ошибок и нюансов типов данных, которые они преодолели с течением времени. См. thebertrandfamily.com/2012/04/20/…

Aaron Bertrand 04.04.2018 21:22

@AaronBertrand Если бы я мог +1, спасибо :)

Dan Austin 04.04.2018 22:46
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
4
51
0

Другие вопросы по теме