Last active
February 22, 2023 14:58
-
-
Save tcartwright/58f4d457ce65018443694c83bf998e7f to your computer and use it in GitHub Desktop.
SQL SERVER: A stored procedure that export the latest record from RESTORE HEADERONLY
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Original script from here: https://karaszi.com/restore-all-databases-from-a-number-of-backup-files | |
Tim C: made a modification so the script adjusts the columns per the SQL Server version | |
*/ | |
IF OBJECT_ID (N'dbo.GetBackupRestoreHeaders') IS NULL BEGIN | |
EXEC('CREATE PROCEDURE dbo.GetBackupRestoreHeaders AS SET NOCOUNT ON;'); | |
END | |
GO | |
ALTER PROCEDURE dbo.GetBackupRestoreHeaders ( | |
@backup_file_path VARCHAR(8000), | |
@backup_type_filter NVARCHAR(128) = 'Database' | |
) | |
AS | |
BEGIN | |
SET NOCOUNT, XACT_ABORT ON | |
IF OBJECT_ID('tempdb..#restore_headeronly') IS NOT NULL BEGIN | |
DROP TABLE #restore_headeronly | |
END | |
CREATE TABLE #restore_headeronly ( | |
BackupName NVARCHAR(128), | |
BackupDescription NVARCHAR(255), | |
BackupType SMALLINT, | |
ExpirationDate DATETIME, | |
Compressed TINYINT, | |
Position SMALLINT, | |
DeviceType TINYINT, | |
UserName NVARCHAR(128), | |
ServerName NVARCHAR(128), | |
DatabaseName NVARCHAR(128), | |
DatabaseVersion BIGINT, | |
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 BIGINT, | |
UnicodeComparisonStyle BIGINT, | |
CompatibilityLevel TINYINT, | |
SoftwareVendorId BIGINT, | |
SoftwareVersionMajor BIGINT, | |
SoftwareVersionMinor BIGINT, | |
SoftwareVersionBuild BIGINT, | |
MachineName NVARCHAR(128), | |
Flags BIGINT, | |
BindingID UNIQUEIDENTIFIER, | |
RecoveryForkID UNIQUEIDENTIFIER, | |
Collation NVARCHAR(128), | |
FamilyGUID UNIQUEIDENTIFIER, | |
HasBulkLoggedData BIGINT, | |
IsSnapshot BIGINT, | |
IsReadOnly BIGINT, | |
IsSingleUser BIGINT, | |
HasBackupChecksums BIGINT, | |
IsDamaged BIGINT, | |
BeginsLogChain BIGINT, | |
HasIncompleteMetaData BIGINT, | |
IsForceOffline BIGINT, | |
IsCopyOnly BIGINT, | |
FirstRecoveryForkID UNIQUEIDENTIFIER, | |
ForkPointLSN NUMERIC(25, 0), | |
RecoveryModel NVARCHAR(128), | |
DifferentialBaseLSN NUMERIC(25, 0), | |
DifferentialBaseGUID UNIQUEIDENTIFIER, | |
BackupTypeDescription NVARCHAR(128), | |
BackupSetGUID UNIQUEIDENTIFIER, | |
CompressedBackupSize BIGINT | |
); | |
DECLARE @major_version INT = CAST(SERVERPROPERTY('ProductMajorVersion') AS INT) | |
-- this column was added in 2012 | |
IF @major_version >= 11 BEGIN | |
ALTER TABLE #restore_headeronly ADD | |
Containment BIGINT | |
END | |
-- these columns were added in 2014 | |
IF @major_version >= 12 BEGIN | |
ALTER TABLE #restore_headeronly ADD | |
KeyAlgorithm NVARCHAR(32), | |
EncryptorThumbprint VARBINARY(20), | |
EncryptorType NVARCHAR(23) | |
END | |
-- cant use explicit columns here because of the version differences | |
INSERT INTO #restore_headeronly | |
EXEC('RESTORE HEADERONLY FROM DISK = ''' + @backup_file_path + '''') | |
-- cant use explicit columns here because of the version differences | |
SELECT * | |
FROM #restore_headeronly b | |
WHERE b.BackupTypeDescription LIKE @backup_type_filter | |
ORDER BY b.Position DESC | |
END | |
GO |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/***********************************************************************************************************/ | |
/***********************************************************************************************************/ | |
/**************EXAMPLE CALL*********************************************************************************/ | |
/***********************************************************************************************************/ | |
/***********************************************************************************************************/ | |
DECLARE @backup_file_path varchar(8000) = 'path to backup.bak' | |
, @backup_type_filter NVARCHAR(128) = 'Database' | |
EXECUTE [Admin].[dbo].[GetBackupRestoreHeaders] | |
@backup_file_path | |
, @backup_type_filter | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment