Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Почему не проходит восстановление базы?  [new]
Fixin
Member

Откуда:
Сообщений: 1712
Есть скрипт, запускаю на SQL SERVER 2000.

-- Declare all variables
declare @arc_filename varchar(1024);
declare @src_base_name varchar(1024);
declare @dst_base_name varchar(1024);
declare @dst_base_path varchar(1024);
declare @src_log_name varchar(1024);
declare @dst_log_name varchar(1024);
declare @dst_base_filename varchar(1024);
declare @dst_log_filename varchar(1024);


-- Parameters for procedure of restoring data 
select @arc_filename = 'e:\tmp\RTCentr-2011-11-30-01-30-00.mtf';
select @src_base_name = 'RTCentr';
--select @src_base_name = 'UTOffice';

select @dst_base_name = 'Restore1s1';
select @dst_base_path = 'e:\1CBackUp\SQL_BASES\1';
-- select @dst_base_name = 'Restore1s2';
-- select @dst_base_path = 'e:\1CBackUp\SQL_BASES\2';
-- select @dst_base_name = 'Restore1s3';
-- select @dst_base_path = 'e:\1CBackUp\SQL_BASES\3';


-- Calculate any depending variables
select @src_log_name = @src_base_name + '_log';
select @dst_log_name = @dst_base_name + '_log';
select @dst_base_filename = @dst_base_path + '\' + @dst_base_name + '.mdf';
select @dst_log_filename = @dst_base_path + '\' + @dst_log_name + '.ldf';

-- Viewing some variables for debuging
-- select @src_base_name;
-- select @dst_base_name, @dst_base_filename, @dst_log_filename;

-- Disconnect all users from destination 
-- alter database  @dst_base_name set RESTRICTED_USER with rollback immediate;
-- alter database  @dst_base_name set RESTRICTED_USER with rollback immediate;

-- Restore destination from src
RESTORE DATABASE @dst_base_name FROM  DISK = @arc_filename WITH FILE = 1,  MOVE @src_base_name TO @dst_base_filename,  MOVE @src_log_name TO @dst_log_filename,  NOUNLOAD,  REPLACE,  STATS = 10

Пишет:
Сообщение 3234, уровень 16, состояние 2, строка 40
Логический файл "RTCentr" не является частью базы данных "Restore1s1". Используйте RESTORE FILELISTONLY для вывода списка имен логических файлов.
Сообщение 3013, уровень 16, состояние 1, строка 40
RESTORE DATABASE прервано с ошибкой.

Почему?
В базе Restore1s1 такие файлы: UTOffice и UTOffice_Log. Как заставить SQL убить эти файлы и создать аналогичные RTCentr и RTCentr_log?

И еще вопрос чайника, как вывести в консоли запросов значения промежуточных переменных?
30 ноя 11, 19:57    [11685943]     Ответить | Цитировать Сообщить модератору
 Re: Почему не проходит восстановление базы?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Вы внимательно читали про аргумент MOVE в документации?

BOL
MOVE 'логическое_имя_файла_в_резервной_копии' TO 'имя_файла_в_операционной_системе' [ ,...n ]
Показывает, что файл данных или журнала, указанный параметром logical_file_name_in_backup, следует восстановить из копии в месте, указанном параметром operating_system_file_name. Укажите инструкцию MOVE для каждого логического файла, который надо восстановить из резервного набора данных в новом месте.

Т.е. имя файла и его расположение в операционной системе можно задать любым, а вот с логическими именами файлов на момент создания резервной копии так поступать нельзя.
Для того, чтобы логические файлы были с другими именами их сперва надо создать, а потом специальной командой перелить в них данные из исходных файлов. И уже только потом исходные файлы с ненавистными логическими именами можно убить.
Как-то так...
1 дек 11, 07:01    [11687243]     Ответить | Цитировать Сообщить модератору
 Re: Почему не проходит восстановление базы?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Fixin
...И еще вопрос чайника, как вывести в консоли запросов значения промежуточных переменных?
А значения переменных можно вывести командой PRINT и/или SELECT.
1 дек 11, 07:04    [11687244]     Ответить | Цитировать Сообщить модератору
 Re: Почему не проходит восстановление базы?  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
tpg
Вы внимательно читали про аргумент MOVE в документации?

BOL
MOVE 'логическое_имя_файла_в_резервной_копии' TO 'имя_файла_в_операционной_системе' [ ,...n ]
Показывает, что файл данных или журнала, указанный параметром logical_file_name_in_backup, следует восстановить из копии в месте, указанном параметром operating_system_file_name. Укажите инструкцию MOVE для каждого логического файла, который надо восстановить из резервного набора данных в новом месте.

Т.е. имя файла и его расположение в операционной системе можно задать любым, а вот с логическими именами файлов на момент создания резервной копии так поступать нельзя.
Для того, чтобы логические файлы были с другими именами их сперва надо создать, а потом специальной командой перелить в них данные из исходных файлов. И уже только потом исходные файлы с ненавистными логическими именами можно убить.
Как-то так...
Не, все гораздо проще -- после восстановления переименовать логические файлы:
alter database ... modify file (name = ..., newname = ...)
1 дек 11, 09:37    [11687472]     Ответить | Цитировать Сообщить модератору
 Re: Почему не проходит восстановление базы?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
invm
Не, все гораздо проще -- после восстановления переименовать логические файлы:
alter database ... modify file (name = ..., newname = ...)
А, ну да, пардон - подзабыл ;-)
1 дек 11, 09:40    [11687485]     Ответить | Цитировать Сообщить модератору
 Re: Почему не проходит восстановление базы?  [new]
Fixin
Member

Откуда:
Сообщений: 1712
invm
Не, все гораздо проще -- после восстановления переименовать логические файлы:
alter database ... modify file (name = ..., newname = ...)

После восстановления или до?
Блин, опять получается, что структура логических файлов получателя должна быть идентичной структуре логических файлов бэкапа. Неудобно, тем более когда там только файл данных и файл транзакций... Ключа никакого нету для таких случаев?
5 дек 11, 14:31    [11707069]     Ответить | Цитировать Сообщить модератору
 Re: Почему не проходит восстановление базы?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Что неудобного то?
Альтер базы данных здесь - это операция с метаданными и отрабатывает очень быстро.
5 дек 11, 14:40    [11707163]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить