|
Как скопировать базу данных, с продуктивной в копию MSSQL | ☑ | ||
---|---|---|---|---|
0
Adept
04.08.15
✎
16:25
|
Есть копия продуктивной, где всякие тесты проходят. Ну ее приходиться периодически доводить до состояния продуктивной, как правильно это делать средствами MSSQL, копированием, или экпортом данных? Или может есть еще какой способ?
|
|||
1
Гёдза
04.08.15
✎
16:26
|
бэкап - рестор
|
|||
2
viraboy
04.08.15
✎
16:27
|
Не совсем понятна задача. Еще есть репликация.
|
|||
3
Adept
04.08.15
✎
16:28
|
(2) Может и репликация, если асинхронная и в одну сторону.
Хотя скорее копия. Есть база продуктивная, в ней работают, а есть копия в ней проверяют ошибки проводят тесты, создаю тестовые документы, и так далее |
|||
4
ДенисЧ
04.08.15
✎
16:29
|
Бекап. Только бекап.
|
|||
5
Adept
04.08.15
✎
16:33
|
С бекапом почему то проблема, не хочет восстанавливаться в другую БД, не в ту из которой сделан, тип бекапа полный.
|
|||
6
ДенисЧ
04.08.15
✎
16:35
|
||||
7
Гёдза
04.08.15
✎
16:37
|
(5) Читай BOL
|
|||
8
Adept
04.08.15
✎
16:39
|
Спасибо Денис, почему он у тебя резиновый? :)
(7) Был бы благодарен, за инструкцию типа (нажал там, потом там, потом там) |
|||
9
ДенисЧ
04.08.15
✎
16:41
|
(8) Кто он? Это тебе руки поправить....
|
|||
10
Adept
04.08.15
✎
16:53
|
(9) Стареешь, а все так же тупишь :)
|
|||
11
ДенисЧ
04.08.15
✎
17:00
|
(10) Туплю как раз не я...
У меня любая база восстанавливается из бекапа без лишних вопросов... |
|||
12
Tateossian
04.08.15
✎
17:02
|
DECLARE @BackUpPath AS VARCHAR(255)
DECLARE @MDF_Path AS VARCHAR(255) DECLARE @LDF_Path AS VARCHAR(255) DECLARE Del AS VARCHAR(255) DECLARE @CreateDBName AS VARCHAR(32) DECLARE @SQL AS VARCHAR(MAX) SET @BackUpPath = N'D:\Back-up\upp_copy_del.bak' --Указать путь к файлу БД SET @MDF_Path = N'D:\SQL\upp_1.mdf' --Указать путь к логу БД SET @LDF_Path = N'D:\SQL\upp_1_log.ldf' --Указать имя базы SET @CreateDBName = 'upp_1' SET Del = 'del '+@BackUpPath BACKUP DATABASE [upp] TO DISK = @BackUpPath WITH NOFORMAT, INIT, NAME = N'upp-Полная База данных Резервное копирование', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10 USE [master] SET @SQL = 'ALTER DATABASE ' + @CreateDBName + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE' IF EXISTS( SELECT * FROM sys.databases WHERE name = @CreateDBName ) EXEC(@SQL) RESTORE DATABASE @CreateDBName FROM DISK = @BackUpPath WITH FILE = 1, MOVE N'upp' TO @MDF_Path, MOVE N'upp_log' TO @LDF_Path, NOUNLOAD, REPLACE, STATS = 10 SET @SQL = 'ALTER DATABASE ' + @CreateDBName + ' SET MULTI_USER' IF EXISTS( SELECT * FROM sys.databases WHERE name = @CreateDBName ) EXEC(@SQL) EXEC sp_configure 'xp_cmdshell', 1 RECONFIGURE WITH OVERRIDE EXEC master..xp_cmdshell @del EXEC sp_detach_db @dbname = @CreateDBName ,@skipchecks = 'true' ,@KeepFulltextIndexFile = 'false' SET Del = 'del ' + @LDF_Path EXEC master..xp_cmdshell Del EXEC sp_configure 'xp_cmdshell', 0 RECONFIGURE WITH OVERRIDE EXEC sp_attach_db @dbname = @CreateDBName, @filename1 = @MDF_Path GO |
|||
13
Мыш
04.08.15
✎
17:03
|
RESTORE DATABASE [BaseCopy]
FROM DISK = N'C:\backup.bak' WITH MOVE N'logical_name' TO N'C:\BASE\mainbase.mdf', MOVE N'logical_name_log' TO N'C:\BASE\mainbase_log.ldf', STATS = 5 GO |
|||
14
Мыш
04.08.15
✎
17:04
|
Поправочка, сорри )
RESTORE DATABASE [BaseCopy] FROM DISK = N'C:\backup.bak' WITH MOVE N'logical_name' TO N'C:\BASE\BaseCopy.mdf', MOVE N'logical_name_log' TO N'C:\BASE\BaseCopy_log.ldf', STATS = 5 GO |
|||
15
Tateossian
04.08.15
✎
17:05
|
Поменяй путь к файлу и имя базы и юзай сей скрипт.
(13) Если уже есть такая база, то этот скрипт не взлетит. |
|||
16
Fish
04.08.15
✎
17:06
|
(15) Не боишься давать гранату человеку, мягко говоря, не разбирающемуся в скуле?
|
|||
17
Мыш
04.08.15
✎
17:06
|
(15) Взлетает. Есть база, нет базы - не важно.
|
|||
18
Мыш
04.08.15
✎
17:07
|
(16) Да пусть выбирает. Лично я б поленился скрипт разбирать )
|
|||
19
Мыш
04.08.15
✎
17:09
|
(12) Кстати, логические имена тоже надо в переменные. Может не взлететь. В частности, вот этот кусок:
MOVE N'upp' TO @MDF_Path, MOVE N'upp_log' TO @LDF_Path, |
|||
20
Tateossian
04.08.15
✎
17:11
|
(17) Нет.
Сообщение 3101, уровень 16, состояние 1, строка 33 Не удалось получить монопольный доступ, так как база данных используется. Сообщение 3013, уровень 16, состояние 1, строка 33 RESTORE DATABASE прервано с ошибкой. |
|||
21
Adept
04.08.15
✎
17:12
|
(12) Спасибо, погоняю в тестах - разберусь
(11) У меня будет через 2 часа, все восстанавливаться, ну а у тебя ничего не поменяться :) |
|||
22
Tateossian
04.08.15
✎
17:12
|
(19) Согласен, это не универсальный скрипт, там можно много что загнать в переменные, хоть и вот это: N'upp-Полная База данных Резервное копирование'. Но в таком виде его можно все равно использовать.
|
|||
23
ДенисЧ
04.08.15
✎
17:13
|
(21) Жизнь боль...
В моём возрасте уже мало что меняется, только больничная карта пухнет |
|||
24
Мыш
04.08.15
✎
17:14
|
(20) Ах да. Точно так. В этом случае рву соединения к базе. Всё равно это копия.
|
|||
25
gigi789
04.08.15
✎
17:27
|
Я так и не понял ни куя, зачем нужно накатывать регламентов бекап, Все твои изменения в конфе потрутся пойду..по кую
|
|||
26
ЧеловекДуши
05.08.15
✎
06:47
|
(0) Можешь через Бекап, Можешь через тупым копирование файлов БД. Детач - Атач
Все дело только в руках, копипастера. Судя того, что у вас проблема, руки у вас не до конца подточены :) |
|||
27
viraboy
05.08.15
✎
09:01
|
Стоило начать с описания ошибки при восстановлении из бэкапа
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |