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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <wpher56@gmail.com> wrote in message
news:uFJ45eAxJHA.1212@TK2MSFTNGP04.phx.gbl...
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
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
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
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" <com.hotmail@bouchenafa> wrote in message
news:1FC770DC-FFC4-441D-9353-0693EF1B0420@microsoft.com...
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" <wpher56@gmail.com> wrote in message
news:uFJ45eAxJHA.1212@TK2MSFTNGP04.phx.gbl...
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
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
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+
On 24 avr, 06:57, "wpher56" <wphe...@gmail.com> 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" <com.hotmail@bouchenafa> wrote in message
> 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" <wphe...@gmail.com> wrote in message
>news:uFJ45eAxJHA.1212@TK2MSFTNGP04.phx.gbl...
>> 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
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+
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.
>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.
>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.