Bonjour
Dans une application web (IIS + ASP + SQL Server 2005) j'utilise une table temporaire globale pour récolter les informations issues de plusieurs bases de données. Je consulte ensuite cette table à partir de plusieurs pages ASP de manière plus ou moins rapide, en fonction des interactions des utilisateurs.
Mon problème : je constate que la table temporaire que je crée est automatiquement détruite si l'utilisateur n'interagit pas avec le site pendant environ 1 minute.
En gros : tant qu'il y a des consultations assez rapides sur la table temporaire tout va bien. Dès qu'il ne se passe rien pendant un petit moment .... la table n'est plus accessible.
Pour caractériser le problème j'ai créé page1.asp qui crée la table temporaire :
page1.asp :
Et la page2.asp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <% set ConnBase1=server.CreateObject("adodb.connection") ConnBase1.CursorLocation=adUseServer ConnBase1.open "dsn=base1;uid=user;pwd=mdp;" set ConnBase2=server.CreateObject("adodb.connection") ConnBase2.CursorLocation=adUseServer ConnBase2.open "dsn=base2;uid=user;pwd=mdp;" StrSQL = "IF EXISTS (SELECT * FROM TEMPDB..SYSOBJECTS WHERE NAME like '##req8' ) DROP TABLE ##req8" ConnBase1.execute (StrSQL) StrSQL = "create table ##req8 (Id [int],critere1 varchar(200), critere2 varchar(200), origine bit)" ConnBase1.execute (StrSQL) 'Création de l'index StrSQL = "CREATE NONCLUSTERED INDEX [IX_req8_critere] ON ##req8 ( [critere1] ASC, [critere2] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]" ConnBase1.execute (StrSQL) StrSQL = "INSERT INTO ##req8 SELECT Id,societe,nom,'true' FROM Table1 where Nom='TOTO'" ConnBase1.execute(StrSQL) StrSQL = "INSERT INTO ##req8 SELECT Id,societe,nom,'false' FROM Table2 where Nom='TOTO' AND ValeurCodee=28) " ConnBase2.execute (StrSQL) %>
Tant que je demande un rafraichissement régulier de la page2.asp ... tout se passe bien. Si j'arrête pendant un moment (1 min environ) puis que je demande le rafraichissement de la page2.asp, j'obtiens alors l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <% set ConnBase1=server.CreateObject("adodb.connection") ConnBase1.CursorLocation=adUseServer ConnBase1.open "dsn=base1;uid=user;pwd=mdp;" StrSQL = "select count(*) from ##req8" Set RSTemp = ConnBaseClient.execute (StrSQL) response.write ("Nb Enreg : " + cstr(RSTemp(0))) %>
==> la table temporaire a été supprimée par SQL Server.Microsoft OLE DB Provider for ODBC Drivers error '80040e37'
[Microsoft][SQL Native Client][SQL Server]Nom d'objet '##req8' non valide.
Je cherche donc une solution pour augmenter la durée de vie de la table temporaire .... ou tout autre solution !!
Merci !
Partager