Cerrar Conexiones | SQL Server Performance Forums

SQL Server Performance Forum – Threads Archive

Cerrar Conexiones

Hola a todos: Tengo una duda, no se como poder desconectar a todos los usuarios que estén conectados a una base de datos. La unica manera que puedo hacerlo es reiniciar el servicio MSSQLServer, y creo que es un poco expeditivo. Supongo que habrá una manera mejor de hacerlo Muchas gracias Salu2
Podes usar sp_who para identificar a los usuarios con sus ID y luego Kill ID.
Te dire que también es expeditivo, pero al menos, selectivo.
Luis Martin
Moderator
SQL-Server-Performance.com One of the symptoms of an approaching nervous breakdown is the belief that one’s work is terribly important
Bertrand Russell
All postings are provided “AS IS” with no warranties for accuracy.
Hay alguna manera de echar a todos los usuarios, que estén conectados a una base de datos. y dejar a los que están en otras bases de datos que puedan seguir trabajando. Gracias
Con el administrador corporativo, seleccionar la base de datos, botón derecho del ratón—>separar base de datoss—-> indica el número de usuarios conectados, si es 0 no hay nadie, pulsar cancelar para no separar la base de datos, si es distinto de 0 pinchar el botón borrar, pide confirmación y si se desea enviar un mensaje de aviso, cuando el número de usuarios sea 0 pinchar en cancelarr
Lo que dice Octavio es cierto, solamente que a veces el EM por ser GUI puede tener problemas o demoras.
De la misma forma puedes seleccionar con sp_who aquellos usuarios que estan conectados a la base en cuestion y luego usar el Kill como describí en el otro post. Luis Martin
Moderator
SQL-Server-Performance.com One of the symptoms of an approaching nervous breakdown is the belief that one’s work is terribly important
Bertrand Russell
All postings are provided “AS IS” with no warranties for accuracy.
Muchas gracias es justo lo que necesitaba, ya que el método del Kill para mi caso es un poco tedioso, ya que puedo tener mas de 200 conexiones con distintos usuarios, si tengo que hacer para cada uno un Kill, cuando haya acabado seguro que se han conectado mas gente. Saludos Nacho
Siempre podés recurrir a un script, o un query que te contruya uno.
Por ejemplo: select ‘Kill ‘ + str(spid)
from master..sysprocesses p,
master..sysdatabases d
where p.status != ‘BACKGROUND’
andd.dbid = p.dbid
and d.name = ‘MiDatabase’
Y si quiero que el resultado de la select se ejecute directamente? como puedo hacerlo para que lo haga todo seguido (listar los SPID y hacer los KILLS) ? Saludos Nacho
Podrías utilizar el siguiente script: Set nocount on Declare @nOrden int
Declare @nOrdenMax int
Declare @cSQL varchar(255) if object_id(‘tempdb..#spid’) is not null
Drop table #spid Select identity(int,1,1) as nOrden ,
d.dbid as dbId,
d.name as dbName,
loginame as LoginName,
spid as SpId,
‘Kill ‘ + str(spid) as cSQL
Into #spid
From master..sysprocesses p,
master..sysdatabases d
Where p.status != ‘BACKGROUND’
And d.dbid = p.dbid
And d.name = ‘MiDatabase’ Select dbId,dbName,spid,LoginName,cSQL
From #spid
Select @nOrden = min(nOrden ),
@nOrdenMax = max(nOrden)
From #spid While @nOrden <= @nOrdenMax
Begin
Select @cSQL = cSQL
From #spid
Where nOrden = @nOrden Exec( @cSQL ) Set @nOrden = @nOrden + 1 End

]]>