[Guilde]Автобекапы на MSSQLEXPRESS 2005 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Другие игры / Other games > Rising Force Online > Документация

Документация В этом разделе мы учимся делать что-либо, а уж после задаём вопросы.

Ответ
Опции темы
Непрочитано 17.01.2010, 13:27   #1
Аватар для MMd
Пользователь

Автор темы (Топик Стартер) [Guilde]Автобекапы на MSSQLEXPRESS 2005

Сегодняшний гайд будет о автобекапах в MSSQLEXPRESS 2005 ввиду отсутствия SQL Agent из за безплатности данной программы.

Приступим.

1.Открываем SQL managment studio, В левом верхнем углу жмем на "New Query".
2.Вставляем вот этот запрос:
Код:
CREATE PROCEDURE [dbo].[BackupDatabases]
(
    @BackupDir varchar(400),
    @DatabaseName sysname = null,
    @BackupType int = 0 -- 0=Full, 1=Differential, 2=Log
)
AS

-- -- Begin Test Code
-- DECLARE @BackupDir varchar(400)
-- SET @BackupDir = 'D:\SQLBackups\Daily\'
-- -- End Test Code

-- Create worker table
DECLARE @DBNames TABLE
(
    RowID int IDENTITY PRIMARY KEY,
    DBName varchar(500)
)

-- Grab the Database Names from master DB
INSERT INTO @DBNames (DBName)
SELECT Name FROM master.sys.databases
WHERE name = @DatabaseName
  OR @DatabaseName IS NULL
ORDER BY Name

-- The below databases are not valid to backup
IF @BackupType = 0
BEGIN
    DELETE @DBNames WHERE DBName IN ('tempdb', 'NorthWind', 'pubs')
END
ELSE IF @BackupType = 1
BEGIN
    DELETE @DBNames WHERE DBName IN ('tempdb', 'NorthWind', 'pubs', 'master')
END
ELSE IF @BackupType = 2
BEGIN
    DELETE @DBNames WHERE DBName IN ('tempdb', 'NorthWind', 'pubs', 'master', 'msdb', 'model')
END

IF (@BackupType < 0 OR @BackupType > 2)
    OR NOT EXISTS (SELECT 1 FROM @DBNames)
BEGIN
    RETURN;
END


-- Declare Session Variables
DECLARE @Now datetime
DECLARE @TodayStr varchar(20)
DECLARE @BackupName varchar(100)
DECLARE @BackupFile varchar(100)
DECLARE @DBName varchar(300)
DECLARE @LogFileName varchar(300)
DECLARE @SQL varchar(2000)
DECLARE @Loopvar int

-- Begin looping over Databases in the Work Table
SELECT @Loopvar = min(rowID)
FROM @DBNames

WHILE @Loopvar IS NOT NULL
BEGIN

-- Database Names have to have [dbname] format since some names have a - or _ in the name
SET @DBName = '['+(SELECTEND
ELSE IF @BackupType = 1
BEGIN
    DELETE @DBNames WHERE DBName IN ('tempdb', 'NorthWind', 'pubs', 'master')
END
ELSE IF @BackupType = 2
BEGIN
    DELETE @DBNames WHERE DBName IN ('tempdb', 'NorthWind', 'pubs', 'master', 'msdb', 'model')
END

IF (@BackupType < 0 OR @BackupType > 2)
    OR NOT EXISTS (SELECT 1 FROM @DBNames)
BEGIN
    RETURN;
END


-- Declare Session Variables
DECLARE @Now datetime
DECLARE @TodayStr varchar(20)
DECLARE @BackupName varchar(100)
DECLARE @BackupFile varchar(100)
DECLARE @DBName varchar(300)
DECLARE @LogFileName varchar(300)
DECLARE @SQL varchar(2000)
DECLARE @Loopvar int

-- Begin looping over Databases in the Work Table
SELECT @Loopvar = min(rowID)
FROM @DBNames

WHILE @Loopvar IS NOT NULL
BEGIN

-- Database Names have to have [dbname] format since some names have a - or _ in the name
SET @DBName = '['+(SELECT DBName FROM @DBNames WHERE RowID = @LoopVar)+']'

-- Set the current date and time
SET @Now = getdate()

-- Create backup file date and time in DOS format yyyy_hhmmss
Set @TodayStr = convert(varchar, @Now, 112)+ '_'+replace(convert(varchar, @Now, 108), ':', '')

-- Create a variable holding the total path\filename.ext for the log backup
Set @BackupFile = @BackupDir+REPLACE(REPLACE(@DBName, '[',''), ']','')+'-'+ @TodayStr + '-FULL.BAK'

-- Provide the backup a SQL na15">''', NOSKIP, NOFORMAT'
END
ELSE IF @BackupType = 1
BEGIN
    SET @SQL = 'BACKUP DATABASE ' + @DBName + ' TO DISK = ''' + @BackupFile + ''' WITH DIFFERENTIAL, INIT, NAME = ''' +@BackupName+''', NOSKIP, NOFORMAT'
END
ELSE IF @BackupType = 2
BEGIN
    SET @SQL = 'BACKUP LOG ' + @DBName + ' TO DISK = ''' + @BackupFile + ''' WITH INIT, NAME = ''' +@BackupName+''' , NOSKIP, NOFORMAT'
END

-- Execute the SQL Command 
EXEC(@SQL)

-- Goto the Next Database
SELECT @Loopvar = min(rowID)
FROM @DBNames
WHERE RowID > @LoopVar
END
И выполняем его в базу Master.(Пояснение: это создаст нужную процедуру в базе master для Автобекапов.)
Закрываем менеджер.

3.Далее идем пуск>панель управления и там находим назначение заданий(task sheduler) заходим в папку и жмем пкм>создать>новое задание.

4.Открываем наше новое задание и вставляем в выполнить:
Код:
sqlcmd -S .\SQLEXPRESS -Q "EXEC BackupDatabases @BackupDir='C:\AutoBackUpSQL\', @DatabaseName='RF_World', @BackupType=0"
Где @BackupDir='C:\AutoBackUpSQL\' указываем куда будут складироваться наши бекапы.
Где @DatabaseName='RF_World' название нашей базы.

5.Переходим на вкладку расписание и выставляем время в которое хотите чтобы делались бекапы.(Если хотите делать каждый час или 2 или 3 без разницы жмем на дополнительно и ставим птичку на повторять задание)
Где каждые: ставим через сколько будет повоторяться задание.
Далее выбераем выполнять до:
И там ставим XX:59 поясняю, допустим у вас задание начинает работу с 9:00 мы выставляем 8:59 и оно будет выполняться круглосуточно.
Вот и все.

(П.С. желательно поставьте пароль на пользователя.)
Помог - спасибку.
MMd.
__________________
Да, я флудер.
Но еслиб все были флудерами с такими же знаниями как у меня, то мы давно переплюнули бы корейцев.

Ищутся спецы во флэше и Актив Скрипте-для разработки веб обвязки.Обращаться в ЛС или в асю.
"Все что создал человек, можно взломать - идеальной защиты не существует" (c)MMd
MMd вне форума Ответить с цитированием
Непрочитано 08.02.2010, 07:23   #2
Аватар для nelegal
Пользователь

По умолчанию Re: [Guilde]Автобекапы на MSSQLEXPRESS 2005

вообще то есть уже такое и в картинках ))
__________________
Консультации по настройке сервера в аське НЕДАЮ!!!
nelegal вне форума Отправить сообщение для nelegal с помощью ICQ Ответить с цитированием
Непрочитано 14.02.2010, 22:56   #3
Новичок

По умолчанию Re: [Guilde]Автобекапы на MSSQLEXPRESS 2005

копипаст с ed. Автор гайда я (Mansion©)
Junke вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2020 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 23:04. Часовой пояс GMT +3.

Вверх