#sql-server #database #azure-sql-database
Вопрос:
У меня есть следующий случай:-
- у нас есть около 50 файлов JSON, которые содержат данные об элементах внутри AZURE SQL server (в основном 3 таблицы, которые связаны друг с другом)./
- теперь я планирую сделать следующее:-
- Запустите первое извлечение 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
Но, как было предложено в комментариях к вашему вопросу, вероятно, транзакция является лучшим решением в вашем случае.