|   |   | 
| 
 | MS SQL. Скопировать 1Сную таблицу, а потом восстановить из неё | ☑ | ||
|---|---|---|---|---|
| 0
    
        SeiOkami 14.03.19✎ 08:22 | 
        Добрый день
 Имеем задачу, где обработка будет изменять два справочника и один регистр сведений(кодировать новые элементы и ставить связи в РС). Изменения будут большие. В больших таблицах. Хочется для тестирования иметь возможность полностью "откатить" таблицы обратно для повторного запуска обработки. Как средствами MS SQL обеспечить себе такую возможность? Есть пример скрипта, который бы дублировать таблицу с данными с возможностью последующего "восстановления" оригинала? | |||
| 1
    
        SeiOkami 14.03.19✎ 08:43 | 
        up     | |||
| 2
    
        Fish гуру 14.03.19✎ 08:57 | 
        (0) Ну и откатывай бузу назад средствами скуля на нужную транзакцияю или момент времени. Скуль это позволяет делать при модели full.     | |||
| 3
    
        Fish гуру 14.03.19✎ 08:58 | 
        (2) бузу = базу     | |||
| 4
    
        Aleksey 14.03.19✎ 08:59 | 
        что бекап рестор уже не можно?     | |||
| 5
    
        Aleksey 14.03.19✎ 09:00 | 
        *не модно     | |||
| 6
    
        SeiOkami 14.03.19✎ 09:11 | 
        с базой работают много людей. мне нужно просто мои таблички восстанавливать     | |||
| 7
    
        rsv 14.03.19✎ 09:15 | 
        (0) эээээ ну сделайте в базе табличку скульную путём копирования таблицы оригинала.Это ваша копия.     | |||
| 8
    
        rsv 14.03.19✎ 09:16 | 
        Зальете потом эту таблицу в оригинал.вот и все "восстановление"     | |||
| 9
    
        Asmody 14.03.19✎ 09:18 | 
        По базе правой кнопкой тыц, там есть Import Data/Export Data. Хоть в плоский файл, хоть в Access/Excel, хоть в другую БД     | |||
| 10
    
        SeiOkami 14.03.19✎ 09:38 | 
        я так понимаю, скрипт для такого описать нельзя, нужно инструменты использовать?
 хотелось бы скрипт описать и просто запускать по кнопке, а не постоянно выбирать источник\приемник\таблицы и т.д. | |||
| 11
    
        Asmody 14.03.19✎ 10:31 | 
        (10) Можно. Есть bcp для этого.     | |||
| 12
    
        Asmody 14.03.19✎ 10:33 | ||||
| 13
    
        ДенисЧ 14.03.19✎ 10:38 | 
        (10) Вроде в мастере экспорта была кнопка для вывода скрипта? Или её убрали?     | |||
| 14
    
        Ёпрст гуру 14.03.19✎ 10:40 | 
        (13) ему лень даже это открыть.     | |||
| 15
    
        SeiOkami 14.03.19✎ 10:41 | 
        (13), не видел такой ни на одном из этапов     | |||
| 16
    
        ДенисЧ 14.03.19✎ 10:42 | 
        (15) лет 10 назад видел... Сейчас нет под рукой сервера, чтобы проверить.     | |||
| 17
    
        Ёпрст гуру 14.03.19✎ 10:51 | 
        (15) кнопка просмотр. Но при простом импорте\экспорте из таблицы там тупо инсерт инто селект и всё     | |||
| 18
    
        Ёпрст гуру 14.03.19✎ 10:52 | 
        Можно и свой запрос написать. 1 строка кода. Перед инсертом тока, truncate не забыть     | |||
| 19
    
        SeiOkami 14.03.19✎ 10:57 | 
        Кнопка "Просмотр" просто показывает запрос выборки. Никаких больше скриптов нет 
 например, SELECT * FROM [dbo].[_Acc3322] | |||
| 20
    
        Ёпрст гуру 14.03.19✎ 10:59 | 
        (19) ну правильно, чего там смотреть то ? Сама вставка просто insert into select     | |||
| 21
    
        timurhv 14.03.19✎ 11:34 | 
        >Изменения будут большие. В больших таблицах.
 >Хочется для тестирования иметь возможность полностью "откатить" таблицы обратно для повторного запуска обработки. >с базой работают много людей. мне нужно просто мои таблички восстанавливать Вы уже переросли себя, ваш уровень - базы >10000 пользователей. Что мешает извращаться на копии базы, а не производить тестирование обработки на продакшене? | |||
| 22
    
        SeiOkami 14.03.19✎ 12:02 | 
        (21)
 извращаемся на копии копия общая, постоянно используется разными командами. | |||
| 23
    
        trad 14.03.19✎ 12:52 | 
        --скопировать
 if object_id('_Acc3322_copy') is not null drop table _Acc3322_copy select * into _Acc3322_copy from _Acc3322 --восстановить из копии set identity_insert _Acc3322 ON begin tran truncate table _Acc3322 insert into _Acc3322 (список всех полей) select * from _Acc3322_copy commit tran set identity_insert _Acc3322 off | |||
| 24
    
        Вафель 14.03.19✎ 13:07 | 
        (2) за это время кто-то другой может что-то сделать     | |||
| 25
    
        SeiOkami 14.03.19✎ 14:20 | 
        (23), о, спасибо, поробую со свойством set identity_insert 
 Сейчас сделал обрбаотку на 1С, в которой отмечаешь галочками таблицы, нажимаешь кнопку, получаешь на выходе два скрипта. В одном создание резервной копии через SELECT * INTO _Table_copy FROM _Table. Во втором восстановление этих таблиц через INSERT INTO (список полей кроме [_Version]) | |||
| 26
    
        SeiOkami 14.03.19✎ 14:21 | 
        Позже ещё покатаю и сделаю инструмент для таких манипуляций полностью в 1С (программно скрипты выполнять)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |