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

S'applique à : SQL Server

Cet article explique comment définir une base de données utilisateur en mode mono-utilisateur dans SQL Server à l’aide de SQL Server Management Studio ou de 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.

Limites

  • 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 la déconnexion de l’utilisateur qui a défini l’option. À ce stade, un autre utilisateur (et un seul) peut se connecter à la base de données.

Prérequis

  • 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. Lorsque cette option est définie sur 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 SET d’ALTER DATABASE (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 Serveret 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 AdventureWorks2022 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 AdventureWorks2022 sont immédiatement déconnectées.

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