Par exemple, lors remplacement d'une clé primaire "Clustered Primary Key" par une "unique constraint, il est nécessaire de retirer la clé primaire pour la remplacer ensuite par la contrainte (évident n'est-ce pas). Durant le laps de temps entre ces deux opérations, la table reste en libre accès. Il y a donc un risque non négligeable de voir s'insérer des enregistrements indésirables (ne répondant plus au contrainte).
Il convient donc de se protéger contre ce risque!
L'une des options disponibles est de placer la DB en single-user mode.
Note:
Dans notre environnement, nous n'utilisons que des scripts sql.
Et dans ce cadre, il est bien plus facile de placer la DB en single-mode que d'en sortir (arf!!).
Il faut avouer qu'Internet manque cruellement de documentation en la matière. Etant pris au piège pour la Nième fois, je me décide donc documenter cette fonctionalité.
Mettre une DB en Single-user mode
A mon avis, passer en single-user mode est beaucoup trop simple.
A noter que toutes les autres connections SQL sont interrompues.
ALTER DATABASE [TheDatabaseName]
SET SINGLE_USER WITH NO_WAIT
SET SINGLE_USER WITH NO_WAIT
Par contre, pour en sortir, le plus efficace est encore d'utiliser:
C'est ici qu'il est moins facile de trouver la documentation adéquate.
ALTER DATABASE [TheDatabaseName]
SET MULTI_USER
ou encore
EXEC SP_DBOption 'TheDatabaseName', 'single user','false'
Démarrer SqlServer en Single-user mode
Démarrer le moteur SQL en Single-User mode peut s'avérer nécessaire lorsqu'il faut réparer la "master" db.
Voici quelques notes/références annexes:
- Voir l'article "Starting SQL Server in Single-User Mode" sur MSDN.
Aucun commentaire:
Enregistrer un commentaire