juin
2010
Comment auditer un fichier backup sous SQL 2000 ?
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 @SQL VARCHAR(1000);
--Modifier la ligne en indiquant le chemin de votre fichier de backup à analyser
SET @FichierBackup = 'E:\BACKUP\monFichierBackup.bak'
-- Créer une table temporaire
IF OBJECT_ID('msdb.dbo.maTableTempo', 'U') IS NOT NULL
DROP TABLE msdb.dbo.maTableTempo
CREATE TABLE msdb.dbo.maTableTempo (
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 bigint
,DatabaseCreationDate datetime
,BackupSize numeric(20,0)
,FirstLSN numeric(25,0)
,LastLSN numeric(25,0)
,CheckpointLSN numeric(25,0)
,DifferentialBaseLsn 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));
SET @SQL = 'INSERT INTO msdb.dbo.maTableTempo EXEC (''RESTORE HEADERONLY FROM DISK = N'''''+ @FichierBackup + ''''' WITH NOUNLOAD'')'
--print (@SQL);
EXEC (@SQL);
IF (@@ERROR = 0)
-- S'il n'y a pas d'erreur, afficher les informations du fichier backup
BEGIN
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 msdb.dbo.maTableTempo
--Supprimer la table temporaire
DROP TABLE msdb.dbo.maTableTempo ;
END
Remarques :
1. ) Ce script ne marche que sous SQL 2000
Si vous essayer de l’exécuter sous SQL Server Management Studio (SSMS)2005 ou 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.
2.)
Vous ne pouvez pas utiliser ce script pour obtenir les infos d’un fichier backupé sous SQL 2005 ou SQL 2008.
Vous aurez dans ce cas une erreur du type :
Serveur : Msg 3205, Niveau 16, État 2, Ligne 1
Trop d’unités de sauvegarde spécifiées pour la sauvegarde ou la restauration. Seules 64 sont autorisées.
Serveur : Msg 3013, Niveau 16, État 1, Ligne 1
RESTORE HEADERONLY s’est terminé anormalement.
/**************************************************
— SQL 2000 – INFORMATIONS DU FICHIER BACKUP
— Auteur : Etienne ZINZINDOHOUE
*************************************************/