mercredi 24 juin 2009

Stocker de grand fichiers sur un lecteur USB.

Les lecteurs USB sont généralement formatés en FAT32. Ce qui est bien pratique pour l'interopérabilitié entres les différents systèmes d'exploitations (WinXp, Vista, Linux, MacOS, etc).
Ce système de fichier FAT32 limite donc la taille des fichiers à maximum 4Go, ce qui est très confortable dans la plupart des cas.

Cependant, cela peut présenter des problèmes pour de grands fichiers comme les backups.
Par exemple, le simple backup de ma base de donnée de traivail faisant 15 Go à lui tout seul.

Il est cependant possible d'outrepasser cette limitation de FAT32 en utilisant le système de fichier NTFS.
Pour ce faire, deux choix s'offrent à nous:
  1. Formatter le lecteur USB en NTFS
  2. Convertir le system de fichier de FAT32 à NTFS.
Formatter le lecteur USB en NTFS
La première solution consiste à formatter le lecteur USB en NTFS.
Pour ce faire, suivre les opérations décrites ci-après (issu de l'article de Max Thrane).
  1. Ouvrir "My Computer".
    Right-click sur le lecteur USB (Kingston drive) et selectionner "Formattage".
  2. Selectionner NTFS comme system de fichier dans la drop-down list.
    Note: Si NTFS n'est pas disponible dans les options, fermer la fenêtre de "Formattage" et exécuter les étapes 4-9.
  3. Selectionner "Formattage rapide" (Quick Format) comme option de formattage.
    Cliquer sur "Start".
  4. Pour rendre le format NTFS disponible:
    Clique droit sur "My Computer" et selectionner l'entrée  "propriété" (Properties).
  5. Selectionne l'onglet "Matériel" (Hardware) et cliquer sur le gestionnaire de périphérique (Device Manager).
  6. Etendre la liste des lecteurs (Disk drives) et clique droit sur le lecteur USB (Kingston drive) afin d'obtenir le menu contextuel.
    Selectionner l'entrée "Propriétés" dans le menu contextuel.
  7. Cliquer sur l'onglet "Policies" et selectionner l'option "Optimisé pour les performances" (Optimize for performance).
  8. Cliquer sur "OK".
  9. Répéter les étapes 1-3.
Conversion de FAT32 en NTFS
Une autre option du Microsoft Knowledge Based (article KB307881) consiste à utiliser un utilitaire de conversion (convert.exe) localisé dans le répertoire System32.

Effets de la conversions en NTFS

Usure des memory sticks (flash drive)
Le nombre de cycles de lectures/écritures est limité pour les memory stick (Flash Memory)
Un système de fichier NTFS usera le memory stick plus rapidement. Cependant, pour un memory stick de bonne qualité, la différence ne devrait pas être notable pour la plupart des utilisateurs.
Le système de fichier NTFS est plus lent, particulièrement lors de l'écriture d'un grand nombre de petits fichiers (parce qu'il accroit le nombre de cycles). Dans ce cas, considérer l'utilisation d'un utilitaire d'archivage (zip)
Utilisation obligatoire de l'utilitaire Windows "Safe Removal Utility"
Lorsque le lecteur USB est formaté en NTFS il est impératif d'utiliser le "safe removal utility" de Windows avant de débrancher le lecteur. L'utilitaire "safe removal utility" est disponible dans la zone de notification du bureau Windows (System Tray).
L'utilisation de cet utilitaire permet de s'assurer que les données stockées dans le cache NTFS sont bien enregistrées (écrites) sur le lecteur USB avant son débranchement. Cela concerne bien évidement tout type de lecteur USB formaté en NTFS.

lundi 22 juin 2009

Citation issue de Calvin & Hobbes

Une des choses remarquables de la vie, c'est que rien ne va jamais tout à fait mal, tout peut toujours empirer.

Calvin et Hobbes (Intégrale vol 4)
Bill Watterson 
Page 62

ISBN: 2-258-07229-8
Editions: Hors Collection

mercredi 3 juin 2009

Détail des backups les plus récents
La petite requête SQL suivante permet de connaître les backup effectués par SQL Server durant les 7 derniers jours.
Il est ainsi très facile d'avoir un aperçu sans avoir besoin de la Management Console de SQL Server.

---------------------------------------------------------------------------------
--Database Backups for all databases For Previous Week
---------------------------------------------------------------------------------
SELECT 
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
   msdb.dbo.backupset.database_name, 
   msdb.dbo.backupset.backup_start_date, 
   msdb.dbo.backupset.backup_finish_date,
   msdb.dbo.backupset.expiration_date,
   CASE msdb..backupset.type 
       WHEN 'D' THEN 'Database' 
       WHEN 'L' THEN 'Log' 
   END AS backup_type, 
   msdb.dbo.backupset.backup_size, 
   msdb.dbo.backupmediafamily.logical_device_name, 
   msdb.dbo.backupmediafamily.physical_device_name,  
   msdb.dbo.backupset.name AS backupset_name,
   msdb.dbo.backupset.description
FROM   msdb.dbo.backupmediafamily 
   INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
WHERE  (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7) 
ORDER BY 
   msdb.dbo.backupset.database_name,
   msdb.dbo.backupset.backup_finish_date

Le backup le plus récent par DB
Cette requête SQL présente, par base de donnée, les informations du dernier backup connu.
-------------------------------------------------------------------------------------------
--Most Recent Database Backup for Each Database
-------------------------------------------------------------------------------------------
SELECT 
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
   msdb.dbo.backupset.database_name, 
   MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date
FROM   msdb.dbo.backupmediafamily 
   INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
WHERE  msdb..backupset.type = 'D'
GROUP BY
   msdb.dbo.backupset.database_name 
ORDER BY 
   msdb.dbo.backupset.database_name

Vérification des dernières 24 heures
Y a t'il des DB non backupés ces dernières 24 heures?
-------------------------------------------------------------------------------------------
--Databases Missing a Data (aka Full) Back-Up Within Past 24 Hours
-------------------------------------------------------------------------------------------
--Databases with data backup over 24 hours old
SELECT
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,
   msdb.dbo.backupset.database_name,
   MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date,
   DATEDIFF(hh, MAX(msdb.dbo.backupset.backup_finish_date), GETDATE()) AS [Backup Age (Hours)]
FROM    msdb.dbo.backupset
WHERE     msdb.dbo.backupset.type = 'D' 
GROUP BY msdb.dbo.backupset.database_name
HAVING      (MAX(msdb.dbo.backupset.backup_finish_date) > DATEADD(hh, - 24, GETDATE())) 

UNION 

--Databases without any backup history
SELECT     
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
   master.dbo.sysdatabases.NAME AS database_name, 
   NULL AS [Last Data Backup Date], 
   9999 AS [Backup Age (Hours)] 
FROM
   master.dbo.sysdatabases LEFT JOIN msdb.dbo.backupset
       ON master.dbo.sysdatabases.name  = msdb.dbo.backupset.database_name
WHERE msdb.dbo.backupset.database_name IS NULL AND master.dbo.sysdatabases.name <> 'tempdb'
ORDER BY 
   msdb.dbo.backupset.database_name


Merci à Tim Ford de MsSqlTips.com pour son article "Script to retrieve SQL Server database backup history; last week, most recent and no backups".