Bonjour,
Je voudrais une PS ou une commande pour deconnecter tous les utilisateurs d'une base de données.
Merci.
Version imprimable
Bonjour,
Je voudrais une PS ou une commande pour deconnecter tous les utilisateurs d'une base de données.
Merci.
bonjour mohamed
pour deconnecter les users, tu fais:
xxx=saisir son spidCode:
1
2
3 sp_who will xxx
ok ?
C'est plutot kill spid au lieu de will.Citation:
pour deconnecter les users, tu fais:
Code :
sp_whowill xxx
xxx=saisir son spid
Mais moi je veux deconnecter tous les utilisateurs d'une base de données et je ne voudrai pas utiliser un curseur qui va parcourir tous les users.
Je voudrais quelque chose du type "deconnect_all".
Merci.
Vous avez deux solutions
ou viaCode:
1
2 sp_dboption N'Mabase',N'single',N'true'
Code:
1
2
3
4 ALTER DATABASE Mabase SET SINGLE_USER GO
la deuxieme solution de laurent est cool
n'est ce pas?
Ce n'est pas ma méthode, en fait, je l'ai piqué de SQLPro, tu auras l'occasion de le découvrir.Citation:
Envoyé par LOEMBA
Merci à vous tous!!
Seulement je suis un peu embété pcq en fait je ne voulais pas qu'une seule personne accede à la fois à ma BdD!!
Ce que je voulais c'était deconnecter tout le monde et restaurer la base de données!!
Par la suite, les gens peuvent se reconnecter!!
Il n'y a pas de soucis à ce faire :
Procédure :
Code:
1
2
3
4 sp_dboption N'Mabase',N'single',N'true' --code de Sauvegarde ici sp_dboption N'Mabase',N'single',N'false'
Qqch du genre
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 create proc sp__TontonFlingueur (@db varchar(30)=NULL) AS /* * Auteur : Fabien Celaia * Date : 18/05/2006 * Desc : Déconnecte tous les utilisateurs d'une base * Parm : - */ BEGIN set nocount on declare @c_spid char(5) declare @cmd varchar(30) declare user_cur cursor for select convert(varchar(5),spid) from master..sysprocesses where dbid=db_id(coalesce(@db, db_name())) and spid <> @@spid and sid > 0 open user_cur fetch next into @c_spid WHILE @@FETCH_STATUS = 0 begin select @cmd = 'Kill '+@c_spid exec (@cmd) fetch next into @c_spid end close user_cur deallocate user_cur END
Tu peut toujours en avoir qui se reconnecte pendant l'exécution de la proc...
Moir je préfère :
ALTER DATABASE ... SET SINGLE USER WITH ROLLBACK IMMEDIATE
A +
Citation:
Envoyé par SQLpro
Oui, mais pour ça, il faut du 2005. De plus, cela ne répond pas directement à la question puisque
- un utilisateur peut rester connecté
- la demande est de déconnecter, pas d'empêcher les connexions futures
Quant à la solution de Frédéric, ne pas oublier de redonner les accès après coupure !
Code:
1
2
3 ALTER DATABASE ... SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE ALTER DATABASE ... SET MULTI_USER WITH NO_WAIT