Définir une base de données en mode mono-utilisateur

S’applique à : ouiSQL Server (toutes les versions prises en charge)

Cet article explique comment configurer une base de données définie par l’utilisateur en mode mono-utilisateur dans SQL Server en utilisant SQL Server Management Studio ou Transact-SQL. Le mode mono-utilisateur signifie que seul un utilisateur à la fois peut avoir accès à la base de données. Il est généralement destiné à des opérations de maintenance.

Limitations et restrictions

  • Si d'autres utilisateurs sont connectés à la base de données au moment où vous définissez la base de données en mode mono-utilisateur, leurs connexions à la base de données sont fermées sans avertissement.

  • La base de données reste en mode mono-utilisateur même après que l’utilisateur qui a défini l’option est déconnecté. À ce stade, un autre utilisateur (et un seul) peut se connecter à la base de données.

Conditions préalables

  • Avant d'affecter la valeur SINGLE_USER à la base de données, vérifiez que l'option AUTO_UPDATE_STATISTICS_ASYNC a la valeur OFF. Si la valeur de cette option est ON, le thread d'arrière-plan utilisé pour mettre à jour les statistiques se connecte à la base de données et vous ne pourrez pas accéder à celle-ci en mode mono-utilisateur. Pour plus d’informations, consultez Options ALTER DATABASE SET (Transact-SQL).

Autorisations

Nécessite l'autorisation ALTER sur la base de données.

Utiliser SQL Server Management Studio

Pour définir une base de données en mode mono-utilisateur :

  1. Dans l’Explorateur d'objets, connectez-vous à une instance du Moteur de base de données SQL Server, puis développez-la.

  2. Cliquez avec le bouton droit sur la base de données à modifier, puis sélectionnez Propriétés.

  3. Dans la boîte de dialogue Propriétés de la base de données, sélectionnez la page Options.

  4. Dans l'option Restreindre l'accès , sélectionnez Utilisateur unique.

  5. Si d'autres utilisateurs sont connectés à la base de données, un message Ouvrir les connexions apparaît. Pour modifier la propriété et fermer toutes les autres connexions, sélectionnez Oui.

Vous pouvez également définir la base de données pour un accès Multiple ou Restreint en utilisant cette procédure. Pour plus d’informations sur les options de restriction d’accès, consultez Propriétés de la base de données (page Options).

Utiliser Transact-SQL

Pour définir une base de données en mode mono-utilisateur :

  1. Connectez-vous au Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. Cet exemple attribue à la base de données la valeur SINGLE_USER pour obtenir l'accès exclusif. L'exemple affecte ensuite à la base de données AdventureWorks2012 l'état READ_ONLY et rend à tous les utilisateurs l'accès à la base de données.

Avertissement

Pour obtenir rapidement un accès exclusif, l’exemple de code utilise l’option d’arrêt WITH ROLLBACK IMMEDIATE. Suite à celà, toutes les transactions incomplètes sont restaurées et les autres connexions à la base de données AdventureWorks2012 sont immédiatement déconnectées.

USE master;
GO
ALTER DATABASE AdventureWorks2012
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE AdventureWorks2012
SET READ_ONLY;
GO
ALTER DATABASE AdventureWorks2012
SET MULTI_USER;
GO

Étapes suivantes