2009-07-24 14 views
2

Je voudrais savoir comment (et par extension si c'est possible) mettre SQL Server 2005 en mode mono-utilisateur en utilisant des instructions SQL?Quel SQL est requis pour mettre SQL Server 2005 en mode mono-utilisateur?

J'ai trouvé ces instructions sur le MSDN, mais hélas, ils nécessitent SSMS.

http://msdn.microsoft.com/en-us/library/ms345598(SQL.90,loband).aspx

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

  1. Dans l'Explorateur d'objets, connectez à une instance de SQL Server 2005 Database Engine, puis développez cette instance.
  2. Cliquez avec le bouton droit sur la base de données à modifier, puis cliquez sur Propriétés.
  3. Dans la boîte de dialogue Propriétés de la base de données, cliquez sur la page Options. Dans l'option Restreindre l'accès, sélectionnez Unique.
  4. Si d'autres utilisateurs sont connectés à la base de données, un message Open Connections s'affiche. Pour modifier la propriété et fermez toutes les autres connexions, cliquez sur Oui *

Répondre

6

Ce qui suit devrait fonctionner:.

ALTER DATABASE [MyDatabase] SET SINGLE_USER WITH NO_WAIT 
GO 

avec

ALTER DATABASE [MyDatabase] SET MULTI_USER WITH NO_WAIT 
GO 

pour le remettre à multi-utilisateurs

+3

Il convient de noter que cette déclaration échoueront s'il y a des opérations en cours au sein de la base de données. Vous devez émettre ROLLBACK AFTER ou ROLLBACK IMMEDIATE dans un tel scénario. –

0

Par base de données, vous pouvez définir le mode mono-utilisateur avec:

ALTER DATABASE database_name SET SINGLE_USER 

Si d'autres utilisateurs sont connectés et utilisent la base de données, alors vous devrez d'abord tuer leurs spids sinon cela échouera. Vous pouvez écrire un script qui, en fait, SELECT à partir de sysprocesses et émet une commande KILL pour chaque spid listé par rapport à votre cible dbid.

+0

Je ne suis pas sûr que tuer SPID est une bonne idée - à moins qu'il ne soit absolument nécessaire;) – Frozenskys

+0

Merde, je prends cette base de données et je prends maintenant !! Plus sérieusement, oui, il vaut la peine de vérifier que les spids sont sûrs à tuer. Je suis habitué à travailler sur des bases de données de développement, donc essayer d'amener certains développeurs à abandonner les connexions après avoir donné beaucoup d'avertissement est normalement une cause perdue. –

+0

Utilisez ROLLBACK pour éviter l'émission de KILL par SPID. Qui peut se reconnecter – gbn

0

Voir msdn

alter database X 
set single_user 
5

Essayez

alter database adventureWorks set SINGLE_USER with rollback immediate 

Si vous souhaitez donner suffisamment de temps pour exécuter déjà les transactions à remplir gracieusement vous pouvez émettre les éléments suivants:

alter database adventureWorks set SINGLE_USER with rollback after 60 seconds