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

Откуда:
Сообщений: 1
Доброе утро. Установлена версия SQL Express. Необходимо делать авто-бэкап, но в это версии нету агента для автонастройки. Просисал ручками:

DECLARE @name VARCHAR(50) -- Имена баз данных
DECLARE @path VARCHAR(256) -- Папке для файлов резервного копирования
DECLARE @fileName VARCHAR(256) -- Имя файла
DECLARE @fileDate VARCHAR(20) -- Чать имени файла, дата архива.

SET @path = 'D:\Backup\'

SET @filedate=REPLACE(REPLACE(CONVERT(VARCHAR(20),GETD ATE(),20),':','.'),' ','_')

DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb','ReportServer$SQ LEXPRESS','ReportServer$SQLEXPRESSTempDB')

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName

FETCH NEXT FROM db_cursor INTO @name
END

CLOSE db_cursor
DEALLOCATE db_cursor

Создал батник с содержанием sqlcmd -S SERVER\sqlexpress -i "C:\Backup.sql" и поместил в планировщик.

ВОПРОС: Скрипт бэкапит то одну базу то все 5, то как захочет. В чем причина? Как правильней написать сценарий, где ошибка?
Заранее спасибо.
27 фев 14, 11:58    [15638577]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь новичку с бэкапом баз SQL 2008  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20614
Пластмасса
В чем причина?

В неспособности отличить MS SQL от MySQL.
27 фев 14, 12:00    [15638606]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь новичку с бэкапом баз SQL 2008  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20614
Пластмасса
Как правильней написать сценарий
Что будет, если при выполнении BACKUP DATABASE первой базы произойдёт ошибка?
27 фев 14, 12:02    [15638616]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь новичку с бэкапом баз SQL 2008  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Пластмасса
В чем причина? Как правильней написать сценарий, где ошибка?
нужно использовать DSQL:
EXEC('BACKUP DATABASE ' + quoted(@name)+' TO DISK = N'''+@fileName + '''');
И, конечно же, писать в соответствующем форуме

Модератор: Тема перенесена из форума "MySQL".


Сообщение было отредактировано: 27 фев 14, 15:22
27 фев 14, 12:10    [15638679]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь новичку с бэкапом баз SQL 2008  [new]
o-o
Guest
Cygapb-007
нужно использовать DSQL:
EXEC('BACKUP DATABASE ' + quoted(@name)+' TO DISK = N'''+@fileName + '''');


зачем бы это лепить динамику там, где и без нее неплохо?

BACKUP DATABASE { database_name | @database_name_var }
TO <backup_device>

<backup_device>::=
{
{ logical_device_name | @logical_device_name_var }
| { DISK | TAPE } =
{ 'physical_device_name' | @physical_device_name_var }
27 фев 14, 15:54    [15640872]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь новичку с бэкапом баз SQL 2008  [new]
o-o
Guest
Пластмасса

ВОПРОС: Скрипт бэкапит то одну базу то все 5, то как захочет. В чем причина? Как правильней написать сценарий, где ошибка?
Заранее спасибо.


задайте еще и выходной файл: sqlcmd -S SERVER\sqlexpress -i "C:\Backup.sql" -o "C:\backup_report.txt"

ну и в скрипте можно вывести еще и название базы,
чтобы потом удобнее было читать отчет о проделанном:
...
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
print @name
BACKUP DATABASE @name TO DISK = @fileName
print ''
...


у меня все нормально отработало из виндового планировщика,
выдав 2 ошибки: на снэпшот и на базу в оффлайне, но это абсолютно не помешало остальное забэкапить
27 фев 14, 19:04    [15642371]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить