SQL - Eliminar Conexiones SqlServer

 
Vista:

Eliminar Conexiones SqlServer

Publicado por druz (35 intervenciones) el 09/10/2003 19:10:34
hola,

Necesito ayuda de un Dba, estoy trabajando con Sql server 2000 y con IIS 5 y Con paginas Asp.
Tengo un sitio web donde se realizan actividades de fondos de pensión y tengo una Dll que se conecta a la base de datos, pero el problema es que no cierra las conexiones, por lo tal aparece el sql server con muchas conexiones para un usuario que entro al sitio web.

Quien sabe como desconectar las conexiones a Sql server?
Cual es la mejor tecnica para crear un dll para el uso de conexiones a base de datos?

Nota: yo veo las conexiones del sql server en current activity ->process info
</druz>

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Eliminar Conexiones SqlServer

Publicado por Isaías Islas (5072 intervenciones) el 09/10/2003 19:47:02
¿Como desconectar a los usuarios?

KILL <Spid>

donde <Spid> es el ID de la conexion

Ahora bien, SQL Server de Microsoft, en un tiempo si no detecta actividad del <Spid> (usuario) procede a su desconexion en automatico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Eliminar Conexiones SqlServer

Publicado por Isaias (1921 intervenciones) el 05/05/2023 18:50:13
No creo que Microsoft haya implementado la desconexión en automático, no hasta la visión 2022, por eso es que se hizo el siguiente código para desconectar a las conexiones por mas 24 horas sin interactuar con la instancia, recuerden que cada conexión consume 4k de memoria:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DECLARE @user_spid INT
DECLARE CurSPID CURSOR FAST_FORWARD
FOR
SELECT SPID
FROM master.dbo.sysprocesses (NOLOCK)
WHERE spid>50 -- avoid system threads
AND status='sleeping' -- only sleeping threads
AND DATEDIFF(HOUR,last_batch,GETDATE())>=24 -- thread sleeping for 24 hours
AND spid<>@@spid -- ignore current spid
OPEN CurSPID
FETCH NEXT FROM CurSPID INTO @user_spid
WHILE (@@FETCH_STATUS=0)
BEGIN
PRINT 'Killing '+CONVERT(VARCHAR,@user_spid)
EXEC('KILL '+@user_spid)
FETCH NEXT FROM CurSPID INTO @user_spid
END
CLOSE CurSPID
DEALLOCATE CurSPID
GO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Eliminar Conexiones SqlServer

Publicado por Alberto (1 intervención) el 04/05/2023 23:49:19
Sé que fue hace años, pero le puede servir a alguien:
USE master
DECLARE curkillproc
CURSOR FOR
SELECT spid,dbs.name AS dbname
FROM master..sysprocesses pro, master..sysdatabases dbs
WHERE pro.dbid = dbs.dbid
AND dbs.name = 'NOMBRE DE LA BD'
FOR READ ONLY
DECLARE @varspid AS integer
DECLARE @vardbname AS varchar(256)
DECLARE @numUsers AS integer
SET @numUsers = 0
OPEN curkillproc
FETCH NEXT FROM curkillproc
INTO @varspid, @vardbname
WHILE @@fetch_status = 0
BEGIN
EXEC('kill ' + @varspid)
SET @numUsers = @numUsers + 1
FETCH NEXT FROM curkillproc INTO @varspid, @vardbname
END
CLOSE curkillproc
DEALLOCATE curkillproc
SELECT @numUsers as NumUsersDisconnected
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar