Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fermer une connection TCP ?

4 réponses
Avatar
wpher56
Bonjour
j'ai un souci avec mon serveur SQL Server 2005: une requête toute simple sur
une vue d'une base Oracle définie dans un Linked Server ne ferme pas la
connection TCP. En fin de journée, j'ai plus de 1000 connections ouvertes
(ESTABLISHED) que je ferme manuellement le lendemain, sinon le serveur
plante complètement après 4 jours environ. En attendant que je trouve
pourquoi ces connections restent ouvertes, je souhaiterais faire un petit
batch pour fermer automatiquement les connections TCP vers 4h du matin. Mais
je ne trouve pas comment faire. Si qq1 peut m'aider, ce serait vraiment
sympa, merci d'avance
Pierrot

4 réponses

Avatar
Med Bouchenafa
On googlant un peu tu devrais trouver pas de scripts qui font un curseur sur
les connections ouvertes et qui les KILL une par une
Une autre astuce serait cependant de passer la base en SINGLE_USER puis de
la remettre en MULTI_USER tout de suite après

ALTER DATABASE NomDeTaDB
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE NomDeTaDB
SET MULTI_USER

Cela fermera toutes les connections ouvertes sur une base de données

--
Bien Cordialement
Med Bouchenafa

"wpher56" wrote in message
news:
Bonjour
j'ai un souci avec mon serveur SQL Server 2005: une requête toute simple
sur une vue d'une base Oracle définie dans un Linked Server ne ferme pas
la connection TCP. En fin de journée, j'ai plus de 1000 connections
ouvertes (ESTABLISHED) que je ferme manuellement le lendemain, sinon le
serveur plante complètement après 4 jours environ. En attendant que je
trouve pourquoi ces connections restent ouvertes, je souhaiterais faire un
petit batch pour fermer automatiquement les connections TCP vers 4h du
matin. Mais je ne trouve pas comment faire. Si qq1 peut m'aider, ce serait
vraiment sympa, merci d'avance
Pierrot



Avatar
wpher56
Merci pour tes informations. Le problème est que les connections ouvertes
sont celles qui vont de mon serveur SQL Server vers le serveur Oracle, PAS
les connections à la base de données depuis les postes clients. J'ai
actuellement 3 connections à la base de données (dans sys.dm_exec_sessions),
et 1200 connections ESTABLISHED vers le serveur Oracle depuis hier à
00:00:01. C'est ces connections-là que je kille manuellement le matin en
arrivant et dont j'aimerais automatiser le processus, en attendant de
trouver pourquoi elles restent ouvertes (ESTABLISHED).
Pierrot




"Med Bouchenafa" wrote in message
news:
On googlant un peu tu devrais trouver pas de scripts qui font un curseur
sur les connections ouvertes et qui les KILL une par une
Une autre astuce serait cependant de passer la base en SINGLE_USER puis de
la remettre en MULTI_USER tout de suite après

ALTER DATABASE NomDeTaDB
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE NomDeTaDB
SET MULTI_USER

Cela fermera toutes les connections ouvertes sur une base de données

--
Bien Cordialement
Med Bouchenafa

"wpher56" wrote in message
news:
Bonjour
j'ai un souci avec mon serveur SQL Server 2005: une requête toute simple
sur une vue d'une base Oracle définie dans un Linked Server ne ferme pas
la connection TCP. En fin de journée, j'ai plus de 1000 connections
ouvertes (ESTABLISHED) que je ferme manuellement le lendemain, sinon le
serveur plante complètement après 4 jours environ. En attendant que je
trouve pourquoi ces connections restent ouvertes, je souhaiterais faire
un petit batch pour fermer automatiquement les connections TCP vers 4h du
matin. Mais je ne trouve pas comment faire. Si qq1 peut m'aider, ce
serait vraiment sympa, merci d'avance
Pierrot






Avatar
zoltix
On 24 avr, 06:57, "wpher56" wrote:
Merci pour tes informations. Le problème est que les connections ouvert es
sont celles qui vont de mon serveur SQL Server vers le serveur Oracle, PA S
les connections à la base de données depuis les postes clients. J'ai
actuellement 3 connections à la base de données (dans sys.dm_exec_ses sions),
et 1200 connections ESTABLISHED vers le serveur Oracle depuis hier à
00:00:01. C'est ces connections-là que je kille manuellement le matin e n
arrivant et dont j'aimerais automatiser le processus, en attendant de
trouver pourquoi elles restent ouvertes (ESTABLISHED).
Pierrot

"Med Bouchenafa" wrote in message

news:

> On googlant un peu tu devrais trouver pas de scripts qui font un curseu r
> sur les connections ouvertes et qui les KILL une par une
> Une autre astuce serait cependant de passer la base en SINGLE_USER puis de
> la remettre en MULTI_USER  tout de suite après

> ALTER DATABASE NomDeTaDB
> SET SINGLE_USER
> WITH ROLLBACK IMMEDIATE
> GO
> ALTER DATABASE NomDeTaDB
> SET MULTI_USER

> Cela fermera toutes les connections ouvertes sur une base de données

> --
> Bien Cordialement
> Med Bouchenafa

> "wpher56" wrote in message
>news:
>> Bonjour
>> j'ai un souci avec mon serveur SQL Server 2005: une requête toute si mple
>> sur une vue d'une base Oracle définie dans un Linked Server ne ferme pas
>> la connection TCP. En fin de journée, j'ai plus de 1000 connections
>> ouvertes (ESTABLISHED) que je ferme manuellement le lendemain, sinon l e
>> serveur plante complètement après 4 jours environ. En attendant qu e je
>> trouve pourquoi ces connections restent ouvertes, je souhaiterais fair e
>> un petit batch pour fermer automatiquement les connections TCP vers 4h du
>> matin. Mais je ne trouve pas comment faire. Si qq1 peut m'aider, ce
>> serait vraiment sympa, merci d'avance
>> Pierrot



Comment et pourquoi ce serveur se connecte chez toi ?
Pourquoi ne pas simplement interdire a ton serveur oracle de se
connecter a ton serveur ou inversement?

ALTER proc [dbo].[rp_kill_db_Users]
(@loginName varchar(200),@dbname varchar(50))
as

Declare @dbid int,
@spid int,
@str nvarchar(128)

select dbid from master..sysdatabases
where name = @dbname

select @dbid = dbid from master..sysdatabases
where name = @dbname

declare spidcurs cursor for
select spid from master..sysprocesses where loginame like
'%'+@loginName+'%'
open spidcurs
fetch next from spidcurs into @spid
While @@fetch_status = 0
Begin
Select @str = 'Kill '+convert(nvarchar(30),@spid)
print @str
exec(@str)
fetch next from spidcurs into @spid
End
Deallocate spidcurs


A+
Avatar
wpher56
>Comment et pourquoi ce serveur se connecte chez toi ?



C'est mon serveur SQL Serveur qui se connecte sur le serveur Oracle OID.
Parce que la requête se fait sur une table Oracle.

Pourquoi ne pas simplement interdire a ton serveur oracle de se
connecter a ton serveur ou inversement?



??? Parce que, comme je l'ai dit ci-dessus, la requête lit une table Oracle
!
La raison en est que Oracle contient les données administratives dont
l'application qui utilise SQL Serveur a besoin.