Какова лучшая оценка, чтобы сделать копию 3 связанных таблиц, прежде чем вносить в них изменения

#sql-server #database #azure-sql-database

Вопрос:

У меня есть следующий случай:-

  1. у нас есть около 50 файлов JSON, которые содержат данные об элементах внутри AZURE SQL server (в основном 3 таблицы, которые связаны друг с другом)./
  2. теперь я планирую сделать следующее:-
  • Запустите первое извлечение JSON >>> убедитесь, что все элементы внутри JOSN были извлечены правильно.
  • Но перед началом следующего извлечения JSON >>> я хочу сделать копию всех элементов внутри 3 таблиц. так что в случае неудачи второй итерации мне не придется снова начинать с начала. в этом случае, если не удалось выполнить N итераций, я проверю, почему не удалось выполнить N итераций >>> исправьте это в файлах JSON > > > > > > > > очистите 3 таблицы >>>>>>>>>>> восстановите копии таблиц после выполнения N-1 итерации>>>>>>>>>>>>>>> повторите N итераций еще раз.

Итак, может ли кто-нибудь посоветовать, как лучше всего сделать копию 3 таблиц>>>, чтобы это позволило мне восстановить таблицы и сохранить их исходные идентификаторы, и все будет таким же?

Спасибо

Комментарии:

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

2. Транзакция, завершающая ваш процесс, является очевидным решением. В качестве альтернативы вы можете создать моментальный снимок базы данных.

3. @Stu я использую Power Automate для чтения JSON и обновления базы данных.. поэтому я не могу использовать транзакцию.. могу ли я сделать снимок только для 3 таблиц или я должен сделать это для всей базы данных (все таблицы, 7 представлений хранимых процедур)?

4. Я имею в виду моментальный снимок базы данных, который создает представление вашей базы данных на данный момент времени; моментальные снимки сохраняют только изменения объектов; если вы измените таблицу после создания моментального снимка, исходная версия может быть запрошена из моментального снимка.

5. @johnGu вроде того; вы бы не заменили всю базу данных, вы бы просто восстановили данные в своих таблицах из моментального снимка. Если вы единственный пользователь базы данных (?), то вы также можете сделать обычную резервную копию только для копирования и при необходимости восстановить ее.

Ответ №1:

Самый простой способ скопировать данные в новую таблицу-это:

 select  *
into table01_copy
    from table01

select  *
into table02_copy
    from table02

select  *
into table03_copy
    from table03
 

Но, как было предложено в комментариях к вашему вопросу, вероятно, транзакция является лучшим решением в вашем случае.