Sauvegarde : présentation générale.

Disposer d’au moins une copie d’une base de données opérationnelle en cas d’incident majeur est la tache la plus fondamentale de tout administrateur de bases de données.
Effecter une sauvegarde de bases de données est la méthode la plus fréquente pour accomplir cette tâche. Cependant, qu’effectuer une sauvegarde de base de données soit une opération fréquente ne signifie pas qu’elle est banale. Récupérer une base de données en répondant à des exigences de travail qui imposent une indisponibilité limitée et un taux maximal de pertes de données.

Sauvegarde complète.

Cette méthode de sauvegarde est toujours disponible, quelque soit le mode de récupération configuré pour une base de données.

Une sauvegarde n’est pas instantanée et susceptible de s’effectuer tandis que des utilisateurs sont connectés à la base de données et émettent des requêtes. SQL Serveur verouille la base de données , bloquant toutes les transactions, lors d’une sauvegarde.

exemple :
BACKUP DATABASE nom_base TO DISK ‘nom_dossier
om_fichier’ WITH INIT

Sauvegarde différentielle.

Différence entre une sauvegarde différentielle et une sauvegarde incrementielle. La sauvegarde différentielle contient toute l’information depuis la dernière sauvegarde complète.

exemple :
BACKUP DATABASE nom_base TO DISK ‘nom_dossier
om_fichier’ WITH DIFFERENTIAL

Sauvegarde du journal de transaction.

Vous ne pouvez effectuer une sauvegarde du journal de transactions que pour une base de données dont le mode de récupération est fixé à complet ou à journalisé en bloc et qui n’a pas encore executé de transactions journalisées de façon minimale. Une sauvegarde du journal de transactions n’est autorisée qu’apres une sauvegarde complete.

Une sauvegarde du journal sauvegarde le journal actif. Elle débute au numéro de séquence de journal LSN où a pris fin la précédente sauvegarde de journal. SQL Server sauvegarde alors toutes les transactions jusqu’à trouver une transaction ouverte. La sauvegarde se termine alors.
Tous les LSN sauvegardes peuvent alors etre supprimé du journal des transactions, ce qui permet au système de reemployer l’espace du journal.

exemple :
BACKUP LOG nom_base TO DISK ‘nom_dossier
om_fichier’ WITH INIT

Sauvegarde de groupe de fichiers.

Une sauvegarde de groupes de fichiers constitue une stratégie alternative aux sauvegardes complètes. Vous choissisez la sauvegarde par groupe de fichier lorsque la taille de la base rend peu pratique la sauvegarde et la restauration de la totalite de la base. Si vous restaurez un ou plusieurs groupes de fichiers à l’aide de sauvegarde effectuées à des moments différents, une sauvegarde du journal des transactions est une exigence minimale pour amener les groupes de fichiers à un état cohérent à un moment donné.

exemple:
BACKUP DATABASE nom_base GROUPE DE FICHIERS = ‘nom_groupe’ TO DISK ‘nom_dossier
om_fichier’ WITH INIT

sauvegarde miroir

Chaque opération de sauvegarde crée une unique copie des données sur disque ou sur bande. Il revient à l’administrateur de créer plusieurs copies pour protéger l’entreprise contre toute defaillance du support de sauvegarde.

exemple :

BACKUP DATABASE nom_base GROUPE DE FICHIERS = ‘nom_groupe’ TO DISK ‘nom_dossier
om_fichier’ WITH INIT MIRROR TO ‘nom_dossier
om_fichier’, ‘nom_dossier
om_fichier’

Sauvegarde partielle.

Il est possible qu’une base de donnée possèdent quelques groupes de fichiers en lecture seule et un groupe en lecture/ecriture.

AVEC L’option READ_WRITE_FILEGROUPS, on ne sauvegarde pas les groupes en lecture seule.

un tutorial sur la sauvegarde avec sql express :
http://www.asp-php.net/tutorial/sql-server/sauvegarder-bases-de-donnees-sql-express.php?page=6

INDEX.

La syntaxe d’utilisation de CREATE INDEX est la suivante :

CREATE [UNIQUE] [CLUSTEREDNONCLUSTERED] INDEX nom_index ON nom_table
( nom_colonne, nom_colonne… ) WITH options ON nom_groupe_de_fichier.

Un index CLUSTERED contient les données de la table. Par conséquent, il ne peut y avoir qu’un seul index Clustered par table. En contrepartie, Microsoft met en garde contre l’utilisation de cette structure quand les enregistrements sont de taille importante car on ne peut alors mettre que peu d’enregistrements dans un noeud de l’arbre, ce qui risque de faire perdre à l’index une partie de son efficacité.

Un index est performant pour la recherche sur
- une clef : SELECT * FROM Film WHERE Titre=’Gladiator’
- un intervalle : SELECT * FROM Film WHERE Annee BETWEEN 1999 AND 2001
- ou une partie de la clé : SELECT * FROM Film WHERE Titre LIKE ‘G%’

Les options :

PAD_INDEX : utilisé avec le paramètre FILL_FACTOR; indique qu’il faut laisser de l’espace dans les noeuds branches et pas seulement dans les noeuds feuilles.
FILL_FACTOR : spécifie le degre de remplissage de chaque noeud feuille; pourcentage compris entre 0 et 100. 0 est une valeur particulière, la gestion est laissée à sql server.
DROP_EXISTING : indique que si il existe deja un index portant ce nom, cet index sera supprimé puis recree avec la nouvelle définition.
ONLINE : commande de sql server 2005 enterprise , les tables sont accessibles en requete et modification durant les opérations d’indexation.
SORT_IN_TEMPDB : par default, OFF, les résultats des tris sont calculés dans la base courante. Sur ON, les résultats des tris sont stockées dans TEMPDB.

exemple :

CREATE CLUSTERED INDEX item_index ON INVENTORY(item) WITH ( PAD_INDEX=ON,FILLFACTOR=50 )