 |
|
bombording |
27-07-2011 22:14 1721144 |
Microsoft SQL Enterprise синхронизация баз 1с
Добрый день.
На Windows 2003 крутится Microsoft SQL Enterprise Server, на котором работают несколько баз 1с 7.
Собственно архивация баз 1с осуществляется по следующему сценарию:
1. По расписанию запускается bat файл, который вызывает через isql.exe определённый сценарий в sql файле.
Код:
isql.exe /U u /P p /E /S server /d base1c /t 0 /i c:\script\backup.sql /o d:\script\Out.txt
2. Содержимое backup.sql
Код:
set nocount on
SET DATEFIRST 1
declare @OutP varchar(255)
declare @OutPD varchar(255)
declare @weekName varchar(10)
select @weekName = case
WHEN DATEPART( weekday, GETDATE()) = 1 THEN '_Monday'
WHEN DATEPART( weekday, GETDATE()) = 2 THEN '_Tuesday'
WHEN DATEPART( weekday, GETDATE()) = 3 THEN '_Wednesday'
WHEN DATEPART( weekday, GETDATE()) = 4 THEN '_Thursday'
WHEN DATEPART( weekday, GETDATE()) = 5 THEN '_Friday'
else
'_Free'
END
select @OutP = '\\backupserver\' + @weekName + '\DUMP.dat'
select @OutPD = 'del /F /Q ' + @OutP
EXEC master..xp_cmdshell @OutPD
BACKUP DATABASE base1c TO disk = @OutP WITHINIT
Всё работает. Но возникла необходимость после архивации баз 1с, синхронизировать ещё одну созданную базу для тестинга.
Я хотел поинтересоваться, возможно ли прописать в этом sql файле команду на то, что бы скрипт после архивации синхронизировал (либо очищал и записывал заного) действующую базу 1с с другой базой для тестов.
Спасибо
|
bombording |
28-07-2011 09:46 1721367 |
Действительно. Спасибо.
|
bombording |
03-08-2011 15:45 1725270 |
Вытаюсь востановить тестовую базу из сделаного backup'a рабочей базы 1С.
Код:
USE master
RESTORE DATABASE Test1CBuh FROM DISK = '\\backup\Upload\bkp1c.bak' WITH REPLACE
Но при этом SQL почему то обращается к рабочей базе а не к тестовой.... и в логах пишет что она занята....
Код:
1> 2> 3> Msg 1834, Level 16, State 1, Server SERVER, Line 2
The file 'd:\msdata\MSSQL\data\1с_work_Data.MDF' cannot be overwritten.
It is being used by database '1с_work'.
Msg 3156, Level 16, State 1, Server SERVER, Line 2
File '1с_work_Data' cannot be restored to
'd:\msdata\MSSQL\data\1с_work_Data.MDF'. Use WITH MOVE to identify a
valid location for the file.
Msg 1834, Level 16, State 1, Server SERVER, Line 2
The file 'd:\msdata\MSSQL\data\1с_work_Log.LDF' cannot be overwritten.
It is being used by database '1с_work'.
Msg 3156, Level 16, State 1, Server SERVER, Line 2
File '1с_work_Log' cannot be restored to
'd:\msdata\MSSQL\data\1с_work_Log.LDF'. Use WITH MOVE to identify a
valid location for the file.
Msg 3013, Level 16, State 1, Server SERVER, Line 2
RESTORE DATABASE is terminating abnormally.
Почему же он обращается к 1c_work - рабочей базе 1с ??
|
Цитата:
Цитата bombording
Почему же он обращается к 1c_work - рабочей базе 1с »
|
Ну потому что он пытается восстановить файлы базы и лога в то место откуда они были отправлены в backup, а так как файлы уже существуют и доступ к ним закрыт вы и получаете такой лог.
|
bombording |
03-08-2011 16:12 1725298 |
Telepuzik, Я так понял что нужно ставитть параметр WITH MOVE в комманду и указывать другие имена для mdf и ldf файлов.... ??
Но ведь если я укажу имена mdf и ldf от тестовой базы, то этоо приведёт опять к ошибке... ведь эти файлы тоже есть. Как быть?
|
Цитата:
Цитата bombording
так понял что нужно ставитть параметр WITH MOVE в комманду и указывать другие имена для mdf и ldf файлов.... ?? »
|
Да воспользуйтесь данным параметром.
Цитата:
Цитата bombording
Но ведь если я укажу имена mdf и ldf от тестовой базы, то этоо приведёт опять к ошибке... ведь эти файлы тоже есть. Как быть? »
|
Вот тут что то совсем не понятно, какая тестовая база? Что вам мешает дать другие имена файлам и базе, если есть база Test1, то почему нельзя назвать базу например Test2?
|
bombording |
04-08-2011 09:44 1725691 |
Telepuzik, Сработало
Код:
USE master
RESTORE DATABASE Test1CBuh FROM DISK = '\\backup\backup\1с_work.bak' WITH
MOVE '1с_work_Data' TO 'D:\1с_workTest_Data.mdf', MOVE '1с_work_Log' TO 'D:\1с_workTest_Log.ldf', REPLACE
А на работающую базу (с которой был сделан backup) это ни как не повлияло?
|
Цитата:
Цитата bombording
А на работающую базу (с которой был сделан backup) это ни как не повлияло? »
|
Повлиять никак не должно. Новая база появилась же? Проверьте рабочую базу все ли с ней нормально.
Цитата:
Цитата Пример использования c сайта MSDN:
E. Make a copy of a database using BACKUP and RESTORE
This example uses both the BACKUP and RESTORE statements to make a copy of the Northwind database. The MOVE statement causes the data and log file to be restored to the specified locations. The RESTORE FILELISTONLY statement is used to determine the number and names of the files in the database being restored. The new copy of the database is named TestDB. For more information, see RESTORE FILELISTONLY.
BACKUP DATABASE Northwind
TO DISK = 'c:\Northwind.bak'
RESTORE FILELISTONLY
FROM DISK = 'c:\Northwind.bak'
RESTORE DATABASE TestDB
FROM DISK = 'c:\Northwind.bak'
WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
GO
|
|
Время: 17:15.
© OSzone.net 2001-