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

Откуда:
Сообщений: 3
Добрый день, всем, подскажите как лучше ежедневно восстанавливать базу на втором сервере
1. На сервере 1 делаю ночной полный бекап, копирую бекап на сервер 2 (там хранятся три последних архива) нужно восстановить последний архив через план обслуживания если можно.
Нашел на просторах интернета скрипт, но увы он не работает помогите его поправить. Спасибо!

USE Master
GO
DECLARE @backup_filename varchar(100);

DECLARE @files table (ID int IDENTITY, FileName varchar(100))
insert into @files execute xp_cmdshell 'dir "D:\Arhive-SQL\tkdb\" /b'
set @backup_filename = 'D:\Arhive-SQL\tkdb\' + (select top 1 FileName from @files where FileName is not null order by ID desc )
RESTORE DATABASE [DataBase]
FROM DISK = @backup_filename WITH FILE = 1,
MOVE 'DB_Clients' TO 'E:\DATA\DB_Clients.mdf',
MOVE 'DB_Clients_log' TO 'E:\DATA\DB_Clients.ldf',
NOUNLOAD, REPLACE, STATS = 10
GO

В результате на SQL 2014 - ошибка

SQL Server заблокировал доступ к процедура "sys.xp_cmdshell" компонента "xp_cmdshell", поскольку он отключен в результате настройки конфигурации безопасности сервера. Использование "xp_cmdshell" может быть разрешено администратором при помощи хранимой процедуры sp_configure. Дополнительные сведения о включении "xp_cmdshell" см. в электронной документации по "xp_cmdshell".
Сообщение 8114, уровень 16, состояние 12, строка 8
Ошибка при преобразовании типа данных varchar к nvarchar.

Прочитал в интернете что xp_cmdshell лучше не включать, т.к. образуется огромная бреш в безопасности
13 июл 19, 19:04    [21926200]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из бекапа с помощью скрипта  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33680
Блог
Ded20Ded,

Вы можете получить инфу о бэкапах из логов исходного сервера
13 июл 19, 19:38    [21926210]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из бекапа с помощью скрипта  [new]
Ded20Ded
Member

Откуда:
Сообщений: 3
Критик, сервера находятся в разных местах, по версии тоже разные первый 2008 и второй 2014
14 июл 19, 14:08    [21926383]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из бекапа с помощью скрипта  [new]
Ded20Ded
Member

Откуда:
Сообщений: 3
Если лог файл буду передавать в месте с бекапам, то возможно
Критик, если такая возможно есть что нужно исправить? Так как больше пока ни кто не смог ни чем помочь.
14 июл 19, 14:12    [21926386]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из бекапа с помощью скрипта  [new]
court
Member

Откуда:
Сообщений: 2017
Ded20Ded
Добрый день, всем, подскажите как лучше ежедневно восстанавливать базу на втором сервере
1. На сервере 1 делаю ночной полный бекап, копирую бекап на сервер 2 (там хранятся три последних архива) нужно восстановить последний архив через план обслуживания если можно.
Нашел на просторах интернета скрипт, но увы он не работает помогите его поправить. Спасибо!

USE Master
GO
DECLARE @backup_filename varchar(100);

DECLARE @files table (ID int IDENTITY, FileName varchar(100))
insert into @files execute xp_cmdshell 'dir "D:\Arhive-SQL\tkdb\" /b'
set @backup_filename = 'D:\Arhive-SQL\tkdb\' + (select top 1 FileName from @files where FileName is not null order by ID desc )
RESTORE DATABASE [DataBase]
FROM DISK = @backup_filename WITH FILE = 1,
MOVE 'DB_Clients' TO 'E:\DATA\DB_Clients.mdf',
MOVE 'DB_Clients_log' TO 'E:\DATA\DB_Clients.ldf',
NOUNLOAD, REPLACE, STATS = 10
GO


В результате на SQL 2014 - ошибка

SQL Server заблокировал доступ к процедура "sys.xp_cmdshell" компонента "xp_cmdshell", поскольку он отключен в результате настройки конфигурации безопасности сервера. Использование "xp_cmdshell" может быть разрешено администратором при помощи хранимой процедуры sp_configure. Дополнительные сведения о включении "xp_cmdshell" см. в электронной документации по "xp_cmdshell".
Сообщение 8114, уровень 16, состояние 12, строка 8
Ошибка при преобразовании типа данных varchar к nvarchar.

Прочитал в интернете что xp_cmdshell лучше не включать, т.к. образуется огромная бреш в безопасности


// Нашел на просторах интернета скрипт, но увы он не работает помогите его поправить

дык, тебе сам сервер всё "объяснил" и "рассказал", что ещё нужно ? :)

Использование "xp_cmdshell" может быть разрешено администратором при помощи хранимой процедуры sp_configure

sp_configure 'show advanced options',1
reconfigure with override
go
sp_configure 'xp_cmdshell',1
reconfigure with override
go
14 июл 19, 16:43    [21926413]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из бекапа с помощью скрипта  [new]
SERG1257
Member

Откуда:
Сообщений: 2729
А так ли надо лезть в файловую систему на TSQL
Вы ж этот скрипт джобом запускаете?
Ну так и сделайте лишний шаг для поиска последнего файла.
Например на powershell это будет типа

$lastBackup=dir 'D:\Arhive-SQL\tkdb' | sort name -Descending | select -First 1 -ExpandProperty FullName
Тепеть этот файл можно будте или переименовать или будет сделать линк
mklink 'D:\Arhive-SQL\tkdb\yourBackupFile.bak' $lastBackup

а потом спокойно восстанавливайтесь с D:\Arhive-SQL\tkdb\yourBackupFile.bak
не забудьте его (линк) удалить потом

Далее в вашем RESTORE скрипте нет шага "убить все активные сессии" -- alter database [DataBase] set offline with rollback immediate
Так и задумано? ибо если останется хоть одна сессия RESTORE вернет ошибку
14 июл 19, 18:44    [21926431]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление базы из бекапа с помощью скрипта  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33680
Блог
Ded20Ded,

если этот второй сервер тестовый, то я бы просто включил эту процедуру,
если боевой, то можно восстанавливать, например, через SSIS, там есть средства работы с файловой системой
15 июл 19, 15:28    [21926875]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить