OVH Cloud OVH Cloud

close toute les connexion à une database !

3 réponses
Avatar
Ch.
je dois restaurer une table !
seulement il lui faut l'acces en exclusif !
mais quand je fais alter database mabase set single_user
ca mouline sans fin !


donc je vais prendre une solution plus brutale genre celle qui est presente
dans lentrepirse manager à savoir quand on fait un detacher la base
le close connection !


toutefois j'aimerais cloturer toute les connexions à une base mais en T-SQL
je ne le trouve pas dans la doc ..

3 réponses

Avatar
Philippe T [MS]
Bonjour,

Il y a toujours la solution brutale :

<<<
DECLARE @command NVARCHAR(500)
DECLARE @nt_username SYSNAME
DECLARE @spid INT

DECLARE active_users CURSOR LOCAL FOR
SELECT RTRIM(nt_username), spid
FROM master.dbo.sysprocesses
WHERE (dbid = (SELECT dbid FROM master.dbo.sysdatabases WHERE (name =
'MyTest')))
AND (DATALENGTH(RTRIM(nt_username)) > 0)

OPEN active_users
FETCH NEXT FROM active_users INTO @nt_username, @spid

WHILE (@@fetch_status = 0)
BEGIN
SELECT @command = 'KILL ' + CONVERT(nvarchar, @spid)
EXECUTE master.dbo.sp_executesql @command

FETCH NEXT FROM active_users INTO @nt_username, @spid
END
DEALLOCATE active_users








----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France

"Ch." wrote in message
news:%
je dois restaurer une table !
seulement il lui faut l'acces en exclusif !
mais quand je fais alter database mabase set single_user
ca mouline sans fin !


donc je vais prendre une solution plus brutale genre celle qui est
presente dans lentrepirse manager à savoir quand on fait un detacher la
base
le close connection !


toutefois j'aimerais cloturer toute les connexions à une base mais en
T-SQL je ne le trouve pas dans la doc ..



Avatar
Fred BROUARD
Oui, mais pendant le traitement il y en a qui peuvent se reconnecter.

Mieux vaut un :
ALTER DATABASE ...
SET SINGLE_USER WITH ROLLBACK IMMEDIATE.

C'est sur et consistant !!!!

A +

Philippe T [MS] a écrit:
Bonjour,

Il y a toujours la solution brutale :

<<<
DECLARE @command NVARCHAR(500)
DECLARE @nt_username SYSNAME
DECLARE @spid INT

DECLARE active_users CURSOR LOCAL FOR
SELECT RTRIM(nt_username), spid
FROM master.dbo.sysprocesses
WHERE (dbid = (SELECT dbid FROM master.dbo.sysdatabases WHERE (name =
'MyTest')))
AND (DATALENGTH(RTRIM(nt_username)) > 0)

OPEN active_users
FETCH NEXT FROM active_users INTO @nt_username, @spid

WHILE (@@fetch_status = 0)
BEGIN
SELECT @command = 'KILL ' + CONVERT(nvarchar, @spid)
EXECUTE master.dbo.sp_executesql @command

FETCH NEXT FROM active_users INTO @nt_username, @spid
END
DEALLOCATE active_users


----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France

"Ch." wrote in message
news:%

je dois restaurer une table !
seulement il lui faut l'acces en exclusif !
mais quand je fais alter database mabase set single_user
ca mouline sans fin !


donc je vais prendre une solution plus brutale genre celle qui est
presente dans lentrepirse manager à savoir quand on fait un detacher la
base
le close connection !


toutefois j'aimerais cloturer toute les connexions à une base mais en
T-SQL je ne le trouve pas dans la doc ..









--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Philippe T [MS]
Bonjour,

Tu as entièrement raison.

----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France

"Fred BROUARD" wrote in message
news:%
Oui, mais pendant le traitement il y en a qui peuvent se reconnecter.

Mieux vaut un :
ALTER DATABASE ...
SET SINGLE_USER WITH ROLLBACK IMMEDIATE.

C'est sur et consistant !!!!

A +

Philippe T [MS] a écrit:
Bonjour,

Il y a toujours la solution brutale :

<<<
DECLARE @command NVARCHAR(500)
DECLARE @nt_username SYSNAME
DECLARE @spid INT

DECLARE active_users CURSOR LOCAL FOR
SELECT RTRIM(nt_username), spid
FROM master.dbo.sysprocesses
WHERE (dbid = (SELECT dbid FROM master.dbo.sysdatabases WHERE (name =
'MyTest')))
AND (DATALENGTH(RTRIM(nt_username)) > 0)

OPEN active_users
FETCH NEXT FROM active_users INTO @nt_username, @spid

WHILE (@@fetch_status = 0)
BEGIN
SELECT @command = 'KILL ' + CONVERT(nvarchar, @spid)
EXECUTE master.dbo.sp_executesql @command

FETCH NEXT FROM active_users INTO @nt_username, @spid
END
DEALLOCATE active_users


----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France

"Ch." wrote in message
news:%

je dois restaurer une table !
seulement il lui faut l'acces en exclusif !
mais quand je fais alter database mabase set single_user
ca mouline sans fin !


donc je vais prendre une solution plus brutale genre celle qui est
presente dans lentrepirse manager à savoir quand on fait un detacher la
base
le close connection !


toutefois j'aimerais cloturer toute les connexions à une base mais en
T-SQL je ne le trouve pas dans la doc ..









--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************