Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / выбор из N . Резервное копирование. / 7 сообщений из 7, страница 1 из 1
16.01.2018, 10:08
    #39584854
deHiska
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор из N . Резервное копирование.
Добрый день.

Имеется резервный сервер на котором периодически накатывается копия из этого :

select @n = N'V:\1C\ '+REPLACE(CONVERT(VARCHAR, getdate(), 2), '.', '') +'.bak'
BACKUP DATABASE [*****] TO DISK = @n WITH NOFORMAT, NOINIT, NAME = N'*****', NORECOVERY , NOUNLOAD, REPLACE

В самой папке копии хранятся 10 дней, подскажите начальный кусок запроса , для выбора из N числа копий последней дате .
...
Рейтинг: 0 / 0
16.01.2018, 10:21
    #39584869
AlanDenton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор из N . Резервное копирование.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT *
FROM (
    SELECT
          s.database_name
        , s.[type]
        , s.backup_finish_date
        , backup_size =
                    CAST(CASE WHEN s.backup_size = s.compressed_backup_size
                                THEN s.backup_size
                                ELSE s.compressed_backup_size
                    END / 1048576.0 AS DECIMAL(18,2))
        , RowNum = ROW_NUMBER() OVER (PARTITION BY s.database_name, s.[type] ORDER BY s.backup_finish_date DESC)
    FROM msdb.dbo.backupset s
    WHERE s.[type] = 'D'
) t
WHERE t.RowNum = 1
...
Рейтинг: 0 / 0
16.01.2018, 14:33
    #39585130
deHiska
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор из N . Резервное копирование.
Спасибо , далее найденному файлу присвоить имя или же он подтянет имя из найденного для вставки в запрос RESTORE DATABASE [tedt_db] FROM DISK = N'V:\\123123\*.bak ' ?
...
Рейтинг: 0 / 0
16.01.2018, 19:26
    #39585392
Col
Col
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор из N . Резервное копирование.
deHiska
Лень двигатель прогресса, когда давно делал что-то подобное:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
-- 1 - Variable declaration 
DECLARE @dbName sysname 
DECLARE @backupPath NVARCHAR(500) 
DECLARE @cmd NVARCHAR(500) 
DECLARE @fileList TABLE (backupFile NVARCHAR(255)) 
DECLARE @lastFullBackup NVARCHAR(500) 
DECLARE @lastDiffBackup NVARCHAR(500) 
DECLARE @backupFile NVARCHAR(500) 

-- 2 - Initialize variables 
SET @dbName = 'MyDatabase' 
SET @backupPath = 'C:\\backup\' 

-- 3 - get list of files 
SET @cmd = 'DIR /b ' + @backupPath 

INSERT INTO @fileList(backupFile) 
EXEC master.sys.xp_cmdshell @cmd 

-- 4 - Find latest full backup 
SELECT @lastFullBackup = MAX(backupFile)  
FROM @fileList  
WHERE backupFile LIKE '%.BAK'  
   AND backupFile LIKE @dbName + '%' 

SET @cmd = 'RESTORE DATABASE ' + @dbName + ' FROM DISK = '''  
       + @backupPath + @lastFullBackup + ''' WITH NORECOVERY, REPLACE' 
PRINT @cmd 
...
Рейтинг: 0 / 0
17.01.2018, 11:25
    #39585612
deHiska
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор из N . Резервное копирование.
Благодарю за идею.
Дальше буду под свою задачу копать.
...
Рейтинг: 0 / 0
18.01.2018, 13:16
    #39586388
deHiska
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор из N . Резервное копирование.
Подскажите долепил скрипт , но при его выполнении ничего не происходит
USE Master;
GO
SET NOCOUNT ON

DECLARE @DBName sysname
DECLARE @RestoredDBName sysname
DECLARE @BackupPath NVARCHAR(1000)
DECLARE @TSQL NVARCHAR(1000)
DECLARE @FileList TABLE (BackupFile NVARCHAR(255))
DECLARE @LastFullBackup NVARCHAR(500)
DECLARE @LastDifferentialBackup NVARCHAR(500)
DECLARE @BackupFile NVARCHAR(500)

SET @DBName = 'test_db'
SET @RestoredDBName =@DBName + '_Restored'
SET @BackupPath = 'E:\DataSql\backup_test\' +@DBName + '\'

SET @TSQL = 'DIR /b "' + @BackupPath + '"'

INSERT INTO @FileList(BackupFile)
EXEC master.sys.xp_cmdshell @TSQL

SET @LastFullBackup = (SELECT TOP 1 BackupFile FROM @FileList
WHERE BackupFile LIKE '%.BAK' AND BackupFile LIKE @DBName + '%'
ORDER BY BackupFile DESC)

SET @TSQL = 'RESTORE DATABASE ' +@RestoredDBName + ' FROM DISK = N'''
+ @BackupPath + @LastFullBackup + ''' WITH REPLACE,NORECOVERY, NOUNLOAD, MOVE N''' +@DBName + ''' TO N''' +
@BackupPath +@RestoredDBName + '.mdf'', MOVE N''' + @DBName + '_log'' TO N''' +
@BackupPath +@RestoredDBName + '.ldf'''
PRINT @TSQL

SET @TSQL = 'RESTORE DATABASE ' +@RestoredDBName + ' WITH NORECOVERY, NOUNLOAD, REPLACE, STATS = 10'
PRINT @TSQL

Dыдает сообщение :
RESTORE DATABASE test_db_Restored WITH NORECOVERY, NOUNLOAD, REPLACE, STATS = 10

Но по сути ничего не происходит , база остается на месте . без изменений.....
Куда смотреть?
...
Рейтинг: 0 / 0
18.01.2018, 13:20
    #39586390
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор из N . Резервное копирование.
deHiska,

а EXEC где?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / выбор из N . Резервное копирование. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]