juin
2010
Comment auditer un fichier backup sous SQL 2005 ?
Voici un script T-SQL pour obtenir les informations suivantes :
–>Nom du compte utilisateur sous lequel le backup est fait
–>Nom du serveur sur lequel le backup est fait
–>Nom de la base de données sauvegardée
–>Version du logiciel qui a créé la sauvegarde
–>Version de la base de donnée sauvegardée
–>Niveau de compatibilité de la sauvegarde
–>Collation utilisée par la base de données backupée
–>le fichier backup est-il compressé ?
–>…
--DECLARE @maTableVar table
SET @FichierBackup = 'E:\Backup\FichierBackup.bak'
-- Variable Table Temporaire
DECLARE @maTableVar table (BackupName nvarchar(128)
,BackupDescription nvarchar(255) NULL
,BackupType smallint
,ExpirationDate datetime NULL
,Compressed tinyint
,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 nvarchar(128)
,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
)
-- Insert dans la table tempo
INSERT INTO @maTableVar
EXEC ('RESTORE HEADERONLY
FROM DISK = N'''+ @FichierBackup + '''
WITH NOUNLOAD');
-- Affichage des infos
SELECT BackupName [NomBackup]
,BackupDescription[Description]
,CASE BackupType
WHEN '1' THEN 'Sauvegarde de base de données'
WHEN '2' THEN 'Sauvegarde Journal des transactions'
WHEN '4' THEN 'Sauvegarde Fichier'
WHEN '5' THEN 'Sauvegarde différentielle de Base de données'
WHEN '6' THEN 'Sauvegarde Fichier différentiel'
WHEN '7' THEN 'Sauvegarde Partielle'
WHEN '8' THEN 'Sauvegarde Partielle différentielle'
ELSE ''
END [Type de sauvegarde]
,ExpirationDate [Date d'expiration du jeu de sauvegarde]
, CASE Compressed
WHEN '0' THEN 'Non'
WHEN '1' THEN 'Oui'
ELSE ''
END [Fichier backup est compressé ?]
,UserName [Utilisateur ayant effectué la sauvegarde]
,ServerName [Serveur sur lequel la sauvegarde est faite]
,DatabaseName [Base de données sauvegardée]
,CASE DatabaseVersion
WHEN '515' THEN 'SQL 7.0'
WHEN '539' THEN 'SQL 2000'
WHEN '611' THEN 'SQL 2005'
WHEN '612' THEN 'SQL 2005'
WHEN '655' THEN 'SQL 2008'
ELSE ''
END 'Version de la base de données à partir de laquelle la sauvegarde a été créée'
,DatabaseCreationDate [Date création de la base]
,ROUND((BackupSize/1024),0) [Taille de la sauvegarde (en Ko)]
,BackupStartDate [Date et Heure démarrage du backup]
,BackupFinishDate [Date et Heure fin du backup]
,CASE CompatibilityLevel
WHEN '80' THEN 'SQL 2000'
WHEN '90' THEN 'SQL 2005'
WHEN '100' THEN 'SQL 2008'
ELSE ''
END [niveau de compatibilité de la base à partir de laquelle la sauvegarde a été créée]
,SoftwareVersionMajor [version du logiciel qui a cré la sauvegarde]
,MachineName [Machine ayant effectuée la sauvegarde]
,Collation [Collation utilisé par la base de données]
FROM @maTableVar
Remarques :
1. ) Ce script ne marche que sous SQL 2005
Si vous essayer de l’exécuter sous SQL Server Management Studio (SSMS)2008, vous aurez une erreur du type :
Msg 213, Niveau 16, État 7, Ligne 1
Le nom ou le numéro de colonne des valeurs fournies ne correspond pas à la définition de la table.
Msg 3013, Niveau 16, État 1, Ligne 1
RESTORE HEADERONLY s’est terminé anormalement.
Dans ce cas exécuter tout simplement la commande :
RESTORE HEADERONLY FROM DISK = N'E:\Backup\FichierBackup.bak'
WITH NOUNLOAD
2.)
Vous ne pouvez pas utiliser ce script pour obtenir les infos d’un fichier backupé sous SQL 2008.
Vous aurez dans ce cas une erreur du type :
Msg 3241, Level 16, State 7, Line 1
La famille de supports sur l’unité ‘E:\Backup\FichierBackup.bak’ est incorrecte. SQL Server ne peut pas la traiter.
Msg 3013, Level 16, State 1, Line 1
RESTORE HEADERONLY s’est terminé anormalement.
/**********************************************
— SQL 2005 – AUDIT FICHIER BACKUP
— Auteur : Etienne ZINZINDOHOUE
**********************************************/