Имя: Пароль:
1C
1С v8
Скрипт для восстановления базы данных 1С в SQL
,
0 MAPATNK2
 
naïve
19.06.19
14:42
Всем доброго дня, искала искала...и не нашла ничего рабочего.
У меня есть 2 базы. 1 рабочая, другая пустая.
Я сделала полный бэк средствами SQL рабочей базы.
Теперь хочу с помощью скрипта SQL восстановить (перезаписать) пустую базу данными из бэкапа рабочей базы.
Вот только при стандартном REPLACE SQL естественно пытается перезаписать рабочую базу, а не копию (т.к. я не знаю, как перезаписать путь для файлов mdf и ldf)
Итоговый вопрос:
Может ли кто нибудь поделиться скриптом, для восстновления пустой базы бэкапом рабочей базы с возможностью выбора mdf и ldf.

Есть вот такой скрипт
//////////
RESTORE DATABASE DB_Clients
FROM DISK = 'C:\OldDBClients.bak'
WITH REPLACE,
WITH MOVE 'YourMDFLogicalName' TO '<MDF file path>',
MOVE 'YourLDFLogicalName' TO '<LDF file path>'
/////////

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

Почему я не могу восстановить стандартно?
потому что криворукие админы не могут решить вопросы вечного зависания SQL при выборе нового местоположения mdf и ldf файлов.
Вот и приходится искать другие методы, хочу попрбовать восстановить скриптом. Может кто поделиться?
1 Джинн
 
19.06.19
14:44
И стандартно можно. Только укажите куда Вы восстанавливать собираетесь. Там только по умолчанию та база стоит, из которой бекап был.
2 Джинн
 
19.06.19
14:45
3 MAPATNK2
 
naïve
19.06.19
14:45
(1) Ну нельзя стандартно, я ведь написала, при нажатии на вкладку Файллы (где выбирается путь для mdf и ldf) SQL уходит в вечное зависание.
4 MAPATNK2
 
naïve
19.06.19
14:45
(2) Ну я ведь написала в чем проблема.
5 sitex
 
naïve
19.06.19
14:48
так пойдет ?

RESTORE DATABASE [%base%] FROM DISK = N'%PATH%' WITH FILE = 1, MOVE '%name_mdf%' TO N'%mdf%', MOVE '%name_log%' TO N'%ldf%', NOUNLOAD, REPLACE , STATS = 10
6 MAPATNK2
 
naïve
19.06.19
14:52
(5) мне главное, чтобы этот скрипт не затер рабочую базу, из которой сделан бэкап
7 MAPATNK2
 
naïve
19.06.19
14:53
(5) Вы уверены, что он не затрет рабочую базу из бэкапа?
8 Джинн
 
19.06.19
14:55
(7) MOVE TO указывает в какие файловые группы восстанавливать.
9 sitex
 
naïve
19.06.19
14:56
(7) ответ в (8)
10 MAPATNK2
 
naïve
19.06.19
15:15
(5) А можете, для особо одаренных :-) Написать пример, чтобы я в синтаксисе не ошиблась?
11 MAPATNK2
 
naïve
19.06.19
15:18
(5) RESTORE DATABASE [Testovaya]
FROM DISK = N'H:\01062019.bak'
WITH FILE = 1,
MOVE 'Testovaya'  TO N'H:\MDF',
MOVE 'Testovaya_log' TO N'H:\LOG',
NOUNLOAD, REPLACE , STATS = 10



Сообщение 3102, уровень 16, состояние 1, строка 1
При помощи операции RESTORE не удалось выполнить обработку базы данных "Testovaya", так как она используется в этом сеансе. Рекомендуется для выполнения этой операции использовать базу данных master.
Сообщение 3013, уровень 16, состояние 1, строка 1
RESTORE DATABASE прервано с ошибкой.
12 MAPATNK2
 
naïve
19.06.19
15:20
(9) К сожалению ваш скрипт тоже перезаписывает рабочую. Т.к. Если смотреть отладку кода, он начинает перезаписывать MDF И LDF файлы рабочей базы, а не копии, которая указана в скрипте. (Файлы LOG и MDF и путь к новому месту (это то же самое место где они и лежат) я указала верно)
13 MAPATNK2
 
naïve
19.06.19
15:22
Может я неверно объяснила.
Мне нужен скрипт, который не перезапишет мне рабочую базу. А перезапишет тестовую базу бэкапом ,сделанным из рабочей базы.
Все, указанные скрипты в интернете начинают либо перезписывать базу из которой был сделан бэкап, либо начинают перезаписывать фалй log и mdf базы из которой был сделан бэкап.
14 sitex
 
naïve
19.06.19
15:23
Что зА ?
MOVE 'Testovaya'  TO N'H:\MDF',
MOVE 'Testovaya_log' TO N'H:\LOG'
15 MAPATNK2
 
naïve
19.06.19
15:23
С помощью интерфейса все делается за несколько шагов,
Выбираешь файл бэкапа, изменяешь базу данных на тестовую
Заходишь на вкладку файл и выбираешь новое место для файлов log и mdf
В свойствах указываешь (перезаписать существующую базу данных).
16 MAPATNK2
 
naïve
19.06.19
15:23
(14) А как нужно то?
17 sitex
 
naïve
19.06.19
15:24
(14) Укажите где у вас лежат mdf и ldf ,полный путь.
18 MAPATNK2
 
naïve
19.06.19
15:24
(17) Я указала (14)
19 sitex
 
naïve
19.06.19
15:25
(18) где у вас лежит пустая база укажите.
20 Йохохо
 
19.06.19
15:25
(18) Имя мдф как задано в файловых группах без расширения
21 MAPATNK2
 
naïve
19.06.19
15:25
(20) Testovaya
Testovaya_log
22 MAPATNK2
 
naïve
19.06.19
15:27
23 sitex
 
naïve
19.06.19
15:27
Пример раз уж не понятно

RESTORE DATABASE [ZUP3TEST]
FROM DISK = N'H:\ZUP3\backupZup3.1-19.06.2019\ZUP3_backup_2019_06_19_050005_9840807.bak'
WITH  FILE = 1,  
MOVE N'ZUP3' TO N'G:\TESTBAZA\torgv.mdf',  
MOVE N'ZUP3_log' TO N'G:\TESTBAZA\torgv_log.ldf',  
NOUNLOAD,  
REPLACE,  
STATS = 10
24 MAPATNK2
 
naïve
19.06.19
15:27
(23) Я так же сделала
25 MAPATNK2
 
naïve
19.06.19
15:28
(23)
RESTORE DATABASE [Testovaya]
FROM DISK =  N''H:\01062019.bak'
WITH FILE = 1,
MOVE 'Testovaya'  TO  N''H:\MDF\Testovaya.mdf',
MOVE 'Testovaya_log' TO  N''H:\LOG\Testovaya_log.ldf',
NOUNLOAD, REPLACE , STATS = 10
26 MAPATNK2
 
naïve
19.06.19
15:28
Ошибка та же самая

Сообщение 3102, уровень 16, состояние 1, строка 1
При помощи операции RESTORE не удалось выполнить обработку базы данных "Testovaya", так как она используется в этом сеансе. Рекомендуется для выполнения этой операции использовать базу данных master.
Сообщение 3013, уровень 16, состояние 1, строка 1
RESTORE DATABASE прервано с ошибкой.
27 sitex
 
naïve
19.06.19
15:28
(25) файлы физически существуют?
28 MAPATNK2
 
naïve
19.06.19
15:29
И при попытке отладки, он просто начинает перезписывать MDF и LDF которые лежат в
W:\SQL\Temp
29 MAPATNK2
 
naïve
19.06.19
15:29
(27) конечно.
30 sitex
 
naïve
19.06.19
15:30
(29)MOVE 'Testovaya'  TO N'H:\MDF',
MOVE 'Testovaya_log' TO N'H:\LOG',

у вас что база sql называется как расширения этих файлов ?
31 Йохохо
 
19.06.19
15:30
ковычков много
натыкайте скрипт мышкой и нажмите кнопку script
32 MAPATNK2
 
naïve
19.06.19
15:30
33 sitex
 
naïve
19.06.19
15:31
MOVE 'Testovaya'  TO N'H:\Testovaya.MDF',
MOVE 'Testovaya_log' TO N'H:\Testovaya.LOG',
34 MAPATNK2
 
naïve
19.06.19
15:31
(33) Та же ошибка
35 Йохохо
 
19.06.19
15:31
(34) а файлы положили туда?
36 MAPATNK2
 
naïve
19.06.19
15:32
(33) База так же перезаписывает файлы рабочей базы, а не копии
37 Йохохо
 
19.06.19
15:32
сделайте скрипт мышкой в студии
38 sitex
 
naïve
19.06.19
15:32
Пробуй
MOVE 'Testovaya'  TO N'H:\MDF\Testovaya.MDF',
MOVE 'Testovaya_log' TO N'H:\MDF\Testovaya_log.LOG'
39 sitex
 
naïve
19.06.19
15:33
(32) смысл затирать ? как тогда помочь тебе в слепую ?
40 Вафель
 
19.06.19
15:33
41 sitex
 
naïve
19.06.19
15:33
(25) я же написал тут что полный путь до файлов с базой Testovaya.
42 MAPATNK2
 
naïve
19.06.19
15:34
(39) Я затираю левые базы
43 MAPATNK2
 
naïve
19.06.19
15:34
RESTORE DATABASE [Testovaya]
FROM DISK = 'H:\01062019.bak'
WITH FILE = 1,
MOVE 'Testovaya'  TO N'H:\MDF\Testovaya.MDF',
MOVE 'Testovaya_log' TO N'H:\LOG\Testovaya_log.LOG',
NOUNLOAD, REPLACE , STATS = 10

Ну та же самая ошибка блин выходит
44 sitex
 
naïve
19.06.19
15:36
(26) Сеансы , коннекты к базе есть по мимо тебя ?
45 MAPATNK2
 
naïve
19.06.19
15:37
(40)

USE master;
GO

ALTER DATABASE [Testovaya]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

RESTORE DATABASE [Testovaya]
FROM  DISK = N'H:\01062019.bak'
WITH  FILE = 1,  
MOVE 'Testovaya'  TO N'H:\MDF\Testovaya.MDF',
MOVE 'Testovaya_log' TO N'H:\LOG\Testovaya_log.LOG',
NOUNLOAD,  REPLACE,  STATS = 10
GO

ALTER DATABASE [Testovaya]
SET MULTI_USER
WITH ROLLBACK IMMEDIATE;
GO




Сообщение 1834, уровень 16, состояние 1, строка 2
Файл "W:\DATA\CRM_UPP_2013.mdf" заменить невозможно. Он используется базой данных "CRM_UPP_2013".
Сообщение 3156, уровень 16, состояние 4, строка 2
Невозможно восстановить файл "CRM_UPP_2013" в "W:\DATA\CRM_UPP_2013.mdf". Используйте WITH MOVE для определения допустимого местоположения файла.
Сообщение 1834, уровень 16, состояние 1, строка 2
Файл "W:\DATA\CRM_UPP_2013_log.ldf" заменить невозможно. Он используется базой данных "CRM_UPP_2013".
Сообщение 3156, уровень 16, состояние 4, строка 2
Невозможно восстановить файл "CRM_UPP_2013_log" в "W:\DATA\CRM_UPP_2013_log.ldf". Используйте WITH MOVE для определения допустимого местоположения файла.
Сообщение 3119, уровень 16, состояние 1, строка 2
При планировании инструкции RESTORE возникли проблемы. Подробнее см. в предыдущих сообщениях.
Сообщение 3013, уровень 16, состояние 1, строка 2
RESTORE DATABASE прервано с ошибкой.
46 MAPATNK2
 
naïve
19.06.19
15:37
По неизвестной причине скрипты начинают перезаписывать рабочую базу.
47 Вафель
 
19.06.19
15:38
(45) так у тебя файлы называются не так.
MOVE 'Testovaya'  TO N'H:\MDF\Testovaya.MDF'
первое имя должно быть как оно в архиве (ти бишь в рабочей)
48 Вафель
 
19.06.19
15:39
MOVE 'CRM_UPP_2013'  TO N'H:\MDF\Testovaya.MDF'
49 sitex
 
naïve
19.06.19
15:39
(47) про скрины не просто так спросил зачем затирать. )
50 Вафель
 
19.06.19
15:40
тебе еще повезло что в рабочей никого не было )))
51 Вафель
 
19.06.19
15:40
вернее что кто-то был
52 MAPATNK2
 
naïve
19.06.19
15:40
(48) Cпасибо. Вопрос решен. Так долго тупила....
Спасибо большое
53 sitex
 
naïve
19.06.19
15:41
(52) а можно было на (23) сообщении и закончить)
54 MAPATNK2
 
naïve
19.06.19
15:42
(53) Откуда мне было знать, что вам нужно имя mdf и ldf не тестовой базы, которую мы восстанавливаем, а рабочей.
55 MAPATNK2
 
naïve
19.06.19
15:43
Этого ведь никто не писал. Что нужны mdf и ldf файлы из той базы, из которой был сделан бэкап. А потом для них указать новое место и имя.
56 sitex
 
naïve
19.06.19
15:45
(55) в (8) это сказал скромно.
57 sitex
 
naïve
19.06.19
15:45
(54) Учить SQL
58 Йохохо
 
19.06.19
15:53
(54) это Вы почему то решили что они по одному только бывают
2 + 2 = 3.9999999999999999999999999999999...