Fermer une connection TCP ?

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Med Bouchenafa
Le #19175671
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" 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



wpher56
Le #19179191
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" 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" 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






zoltix
Le #19201691
On 24 avr, 06:57, "wpher56"
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"
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" >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+
wpher56
Le #19203611
>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.
Publicité
Poster une réponse
Anonyme