Database backup на SQL-сервере (MS Access etc.)
declare @today datetime;
declare @date_affix varchar(128);
declare @filePath varchar(256);
declare @name varchar(256);
select @today = GETDATE;
select @date_affix = '-'+CONVERT(varchar(2DAY(@today+'.'+CONVERT(varchar(2MONTH(@today+'.'+CONVERT(varchar(4YEAR(@today+'-'+CONVERT(varchar(2DATEPART(hh,@today+'h'+CONVERT(varchar(2DATEPART(mi,@today+'m';
declare myCur cursor for select name from sys.databases where owner_sid <> 0x01
open myCur
fetch next from myCur into @db
while @@FETCH_STATUS = 0
begin
-- Щас делаем типа backup
select @filePath = '\\fs01\sqlbu$\'+CONVERT(varchar(db)+@date_affix+'.bak';
select @name = 'FULL BACKUP of ' + @db
BACKUP DATABASE @db TO DISK = @filePath WITH FORMAT, NAME = @name
fetch next from myCur into @db
end
close myCur
deallocate myCur
Старые бэкапы стираются другим скриптом, не sql-job-ом
Короче, ключевое слово :
BACKUP DATABASE @db TO DISK = @filePath WITH FORMAT, NAME = @name
Развернуть из бэкапа можно через sql management studio, или sql командой (щас непомню уже какой).
Вообще, ей проще будет потыкать кнопки, наверное. Это в Management Studio в дереве объектов Management -> Maintenance Plans -> New Plan etc.
Ну, если сервер 2005+
Так же, если сервер 2005+, то можно повесить триггер на DDL-события (изменения данных не получится так отслеживать, конечно и отслеживать все изменения, кем и когда сделаны, а потом всех бить по голове.
Вообще, Ксения, результат
select @@versionв студию, не раз уж просили сказать, какой сервер
Если сама база Access, а не только морда, то черт знает, что с этим делать
Вообще, ей проще будет потыкать кнопки, наверное.Один раз - да, один раз в сутки - уже не проще, лучше job.
up. Понял что написал фигню, осознав что вышепроцитированное было относительно восстановления, а не создания бэкапа.
Нет, именно регулярное создания бэкапа. В настройках планов можно указать, какие базы бэкапить и с какой периодичностью
Восстановление, честно говоря, не совсем то, что бы хотелось: не могу контролировать, кто и когда менял данные. Хочу, поработав в базе, сохранять тексты использованых процедур и результирующие таблички. Но их не настолько мало, чтобы каждый раз экспортировать вручную в Access. И уж тем более Ctrl+C, Ctrl+V процедуры в Word...
Если база данных MSAccess, то вот:
Есть огроменный sql скрипт, примерно 1,1 Гига CREATE/INSERT. Как его выполнить чтобы создать БД (если это возможно)?
MSSQL
thnx
Оставить комментарий
maximovega
Можно ли регулярно делать полную копию базы данных, включая не только таблицы, но и написанные функции и процедуры? Так, словно "фотографировать" её, сохранять содержимое хотя бы папок Tables, Stored Procedures и Scalar-valued Functions?Желательно, чтобы легко переносился обратно.
Вопрос возник в связи с тем, что доступ к важным процедурам имеет слишком много людей, и при этом не все достаточно тактичны, чтобы скопировать чужую процедуру в отдельное окошко, когда хотят запустить её с изменениями. Или, по крайней мере, недостаточно внимательны, чтобы после использования привести её в первоначальную форму.