powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как программно в MS SQL Server узнать номер последней разности в файле бэкапа?
5 сообщений из 5, страница 1 из 1
Как программно в MS SQL Server узнать номер последней разности в файле бэкапа?
    #39672729
okwell5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Каждую ночь делается полный бэкап, в течение дня каждые три часа делается разность в этот же файл с полной копией. Часто требуется восстановить из такого файла бэкапа в тестовую базу. Мне приходится каждый раз руками кликать на базу правой -> восстановить, указывать файл, отмечать галочками полный и разностный бэкап, и только после этого жму кнопку "Скрипт" и выполняю.
Хочу избавиться от этой рутины. Причина повторения этих действий заключается в том, что мне неизвестен номер разностной копии в заданном файле, в этом и вопрос.
Например, выполняю я такой скрипт:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
USE [master]
RESTORE DATABASE [test1] FROM  DISK = N'D:\Backups\backup20180708.bak' WITH  FILE = 1,  
MOVE N'OneC_ECM' TO N'G:\MSSQLDB\test1.mdf',  
MOVE N'OneC_ECM_log' TO N'E:\Logs\test1_log.ldf',  
NORECOVERY,  NOUNLOAD,  REPLACE,  STATS = 5

RESTORE DATABASE [test_ECM_CorpSoft] FROM  DISK = N'D:\Backups\backup20180708.bak' 
WITH  FILE = 9,  NOUNLOAD,  STATS = 5


Первый набор - это полный бэкап, 9й - это разность (как видите, в этом же файле, но с другим номером 9).
Как мне получить это число 9?

Перед тем как задать вопрос, поискал, конечно же, в интернете - не нашел своего вопроса. Поискал на этом форуме, нашел лишь:
http://www.sql.ru/forum/1110606/vostanovlenie-bd-iz-differencialnoy-rezervnoy-kopii
Почитал вот эти ссылки:
1) https://docs.microsoft.com/ru-ru/sql/relational-databases/backup-restore/restore-files-and-filegroups-over-existing-files-sql-server?view=sql-server-2017
2) https://docs.microsoft.com/ru-ru/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-2017
В последней ссылке, кстати, есть мой пример, но также указываются конкретные номера резервных наборов.

Как узнать максимальный (а точнее последний актуальный) номер резервного набора разностной копии внутри одного файла?
...
Рейтинг: 0 / 0
Как программно в MS SQL Server узнать номер последней разности в файле бэкапа?
    #39672740
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
okwell5 Как мне получить это число 9?
Полагаю анализируя результат
RESTORE HEADERONLY FROM DISK = 'D:\Backups\backup20180708.bak'
GO

Position smallint Position of the backup set in the volume (for use with the FILE = option).

https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-headeronly-transact-sql?view=sql-server-2017
...
Рейтинг: 0 / 0
Как программно в MS SQL Server узнать номер последней разности в файле бэкапа?
    #39672754
okwell5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257, Спасибо за подсказку! Это действительно то, что мне нужно. Только как я могу управлять этой информацией? Например, в какую-то переменную или таблицу?
Код: sql
1.
2.
3.
4.
5.
6.
select * from 
(
RESTORE HEADERONLY   
FROM DISK = N'D:\Backups\backup20180708.bak'   
WITH NOUNLOAD
)


Код: plaintext
1.
2.
3.
Сообщение 156, уровень 15, состояние 1, строка 3
Неправильный синтаксис около ключевого слова "RESTORE".
Сообщение 102, уровень 15, состояние 1, строка 6
Неправильный синтаксис около конструкции ")"
Может, я что-то делаю не так, прошу еще одну подсказку.
...
Рейтинг: 0 / 0
Как программно в MS SQL Server узнать номер последней разности в файле бэкапа?
    #39672757
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Например, в какую-то переменную или таблицу?

Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
declare @BackupInfo table
(
BackupName nvarchar(128),
BackupDescription nvarchar(255),
BackupType smallint,
ExpirationDate datetime,
Compressed bit,
Position smallint,
DeviceType tinyint,
UserName nvarchar(128),
ServerName nvarchar(128),
DatabaseName nvarchar(128),
DatabaseVersion int,
DatabaseCreationDate datetime,
BackupSize numeric(20,0),
FirstLSN numeric(25,0),
LastLSN numeric(25,0),
CheckpointLSN numeric(25,0),
DatabaseBackupLSN numeric(25,0),
BackupStartDate datetime,
BackupFinishDate datetime,
SortOrder smallint,
[CodePage] smallint,
UnicodeLocaleId int,
UnicodeComparisonStyle int,
CompatibilityLevel tinyint,
SoftwareVendorId int,
SoftwareVersionMajor int,
SoftwareVersionMinor int,
SoftwareVersionBuild int,
MachineName nvarchar(128),
Flags int,
BindingID uniqueidentifier,
RecoveryForkID uniqueidentifier,
Collation nvarchar(128),
FamilyGUID uniqueidentifier,
HasBulkLoggedData bit,
IsSnapshot bit,
IsReadOnly bit,
IsSingleUser bit,
HasBackupChecksums bit,
IsDamaged bit,
BeginsLogChain bit,
HasIncompleteMetaData bit,
IsForceOffline bit,
IsCopyOnly bit,
FirstRecoveryForkID uniqueidentifier,
ForkPointLSN numeric(25,0),
RecoveryModel nvarchar(60),
DifferentialBaseLSN numeric(25,0) ,
DifferentialBaseGUID uniqueidentifier,
BackupTypeDescription nvarchar(60),
BackupSetGUID uniqueidentifier,
CompressedBackupSize bigint,
containment tinyint,
KeyAlgorithm nvarchar(32),
EncryptorThumbprint varbinary(20),
EncryptorType nvarchar(32)
)

insert into @BackupInfo
exec ('RESTORE HEADERONLY FROM DISK = ''D:\Backups\backup20180708.bak''')

select * from @BackupInfo
...
Рейтинг: 0 / 0
Как программно в MS SQL Server узнать номер последней разности в файле бэкапа?
    #39672759
okwell5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257, Круто! Теперь я смогу это заскриптовать в агенте по расписанию. Спасибо за помощь!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как программно в MS SQL Server узнать номер последней разности в файле бэкапа?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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