2013-10-09 3 views
0

Как закрыть соединения, открытые другим приложением? У меня есть приложение, которое не закрывает приложение. Мне нужно найти способ закрыть неактивные подключения к серверу.SQL-соединение не закрыто

Корпоративная библиотека используется для работы с базами данных CRUD, и мне нужно быстрое обходное решение. Я не могу приложение, и я должен написать утилиту, которая закрывает соединения, которые неактивны и старше 15 минут.

Благодарим за помощь!

+1

вам убивать соединений с сервера или что-то физическое, как отключение от сети. Я не знаю, что на уровне приложения есть способ убить соединения в других процессах. –

+0

OK. Как я могу диагностировать, где в коде открываются открытые соединения? К сожалению, это происходит в производственной среде, и это не происходит на стадии постановки. – sunny

ответ

0

может быть, вы можете использовать что-то вроде этого

DECLARE @seconds int = 600 
DECLARE @spid int 
DECLARE @sql char(200) 

DECLARE spid_cursor SCROLL INSENSITIVE CURSOR FOR 
SELECT s.spid 
FROM 
    master..sysprocesses s 
WHERE 
    (datediff(ss, s.last_batch, getdate())) > @seconds 
    AND spid > 50 --only target user processes 

OPEN spid_cursor 

FETCH NEXT FROM spid_cursor INTO @spid 

WHILE @@fetch_status = 0 
BEGIN 
    SELECT @sql = 'kill ' + convert(char(4), @spid) 
    PRINT @sql 
    EXEC(@sql) 
    FETCH NEXT FROM spid_cursor INTO @spid 
END 

DEALLOCATE spid_cursor 
GO 
+0

Это закрывает SPID на SQL, но TCP-соединение остается открытым. Это приводит к превышению предела имени для карты сетевого адаптера локального компьютера. Извините, не работает :( – sunny

Смежные вопросы