OVH Cloud OVH Cloud

Portée des tables temporaires avec ASP

2 réponses
Avatar
Beedjees
Bonjour,

Dans mon code ASP, j'exécute parfois des script TSQL du genre :
<%
sql = "CREATE TABLE #tmp (id INT PRIMARY KEY) INSERT INTO #tmp(id) VALUES(1)"
rs.open sql, conn
%>

Or plus loin dans ma page asp, je peux encore accéder à la table temporaire
que j'ai créée. Il est vrai que je n'ai pas fait de "DROP TABLE" ni fermé ma
connexion "conn"

Je voudrais savoir si je peux réutiliser cette table et les donnés que j'y
ai insérées. Par exemple si je fais en bas de page ASP :
<%
sql = "SELECT id FROM #tmp"
rs.open sql, conn
%>
Suis je sûr de récupérer la valeur "1".
Pour info, il peut y avoir plusieurs personnes qui lancent la page ASP...
Je travaille avec SQL server 2000 et IIS 6

Merci

2 réponses

Avatar
SQLpro [MVP]
une table temporaire créé avec un seule dièse est locale.
Son "vrai" nom n'est d'ailleurs pas celui que vous donnez mais la
concaténation du nom donné, d'une série d'underscore et d'un tag
numérique qui identifie la session.

Pour le voir :
SELECT * FROM tempdb.INFORMATION_SCHEMA.TABLES

Ainsi deux sessions différentes auront deux table temporaires locales
différentes.

Si vous voulez des tables temporaires globales, mettez deux dièses dans
le nom.

Attention : les objets temporaires ne sont libérés que :
1) par la déconnexion
2) par un ordre DROP de la connexion qui l'a créée.
Si vous ne libérer pas ces objets (connexions permanente) vous risquez
de saturer la tempdb, puis le disque et enfin le serveur. Dans ce cas
vous avez toutes les chances de perdre vos données.

A +




Beedjees a écrit :
Bonjour,

Dans mon code ASP, j'exécute parfois des script TSQL du genre :
<%
sql = "CREATE TABLE #tmp (id INT PRIMARY KEY) INSERT INTO #tmp(id) VALUES(1)"
rs.open sql, conn
%>

Or plus loin dans ma page asp, je peux encore accéder à la table temporaire
que j'ai créée. Il est vrai que je n'ai pas fait de "DROP TABLE" ni fermé ma
connexion "conn"

Je voudrais savoir si je peux réutiliser cette table et les donnés que j'y
ai insérées. Par exemple si je fais en bas de page ASP :
<%
sql = "SELECT id FROM #tmp"
rs.open sql, conn
%>
Suis je sûr de récupérer la valeur "1".
Pour info, il peut y avoir plusieurs personnes qui lancent la page ASP...
Je travaille avec SQL server 2000 et IIS 6

Merci




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Racimo
Utiliser les tables temporaires à portée globale OU des tables non temporaire

pour celà utiliser 2 dièses au lieu d'un seul

##temp
Cordialement

Racimo
"Beedjees" a écrit :

Bonjour,

Dans mon code ASP, j'exécute parfois des script TSQL du genre :
<%
sql = "CREATE TABLE #tmp (id INT PRIMARY KEY) INSERT INTO #tmp(id) VALUES(1)"
rs.open sql, conn
%>

Or plus loin dans ma page asp, je peux encore accéder à la table temporaire
que j'ai créée. Il est vrai que je n'ai pas fait de "DROP TABLE" ni fermé ma
connexion "conn"

Je voudrais savoir si je peux réutiliser cette table et les donnés que j'y
ai insérées. Par exemple si je fais en bas de page ASP :
<%
sql = "SELECT id FROM #tmp"
rs.open sql, conn
%>
Suis je sûr de récupérer la valeur "1".
Pour info, il peut y avoir plusieurs personnes qui lancent la page ASP...
Je travaille avec SQL server 2000 et IIS 6

Merci