/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
SQL Server 2000: Arbejde med temporære tab~
Fra : Thomas Sørensen


Dato : 31-03-04 19:48

Jeg har behov for at oprette og arbejde med en række temporære tabeller i
SQL Server 2000, hvilke skal være tilgængelige igennem hele sessionen og kun
for den kaldende applikation. Problemet er, at der kan forekomme flere
simultane instanser af den kaldende applikation, resulterende i flere
sessioner som ikke må interferere med hinanden. Kaldene sker fra Excel via
en ADO connection i VBA.

Den overordnede procedure er som følger:

1. Åben ADO connection
2. Eksekver en række stored procedures til udvælgelse af data og oprettelse
af en række temporære tabeller
3. Udfør x antal forespørgsler fra VBA rettet mod de temporære tabeller til
4. Luk ADO connection

Jer har overvejet og forsøgt med både lokale og globale temporære tabeller,
der hver især har deres fordele og ikke mindst ulemper, som gør begge
uegnede til formålet:

- Lokale tabeller er kun tilgængelige indenfor den stored procedure som har
oprettet dem og bliver således slettet når proceduren afsluttes. Jeg skal
bruge dem gennem hele sessionen!
- Globale tabeller er tilgængelige gennem hele sessionen, men desværre også
for alle andre sessioner, der afvikles simultant og som gør brug af de samme
tabeller. Jeg har behov for at tabellerne kun er tilgængelige for netop den
session som de blev oprettet under.


Håber nogen har en god ide til, hvordan man omgås problemet...

På forhånd tak

Thomas Hvalsø
t.s@tele2adsl.dk



 
 
Kristian Damm Jensen (31-03-2004)
Kommentar
Fra : Kristian Damm Jensen


Dato : 31-03-04 19:53

Thomas Sørensen wrote:
> Jeg har behov for at oprette og arbejde med en række temporære
> tabeller i SQL Server 2000, hvilke skal være tilgængelige igennem
> hele sessionen og kun for den kaldende applikation. Problemet er, at
> der kan forekomme flere simultane instanser af den kaldende
> applikation, resulterende i flere sessioner som ikke må interferere
> med hinanden. Kaldene sker fra Excel via en ADO connection i VBA.
>
> Den overordnede procedure er som følger:
>
> 1. Åben ADO connection
> 2. Eksekver en række stored procedures til udvælgelse af data og
> oprettelse af en række temporære tabeller
> 3. Udfør x antal forespørgsler fra VBA rettet mod de temporære
> tabeller til
> 4. Luk ADO connection
>
> Jer har overvejet og forsøgt med både lokale og globale temporære
> tabeller, der hver især har deres fordele og ikke mindst ulemper, som
> gør begge uegnede til formålet:
>
> - Lokale tabeller er kun tilgængelige indenfor den stored procedure
> som har oprettet dem og bliver således slettet når proceduren
> afsluttes. Jeg skal bruge dem gennem hele sessionen!

Hvis det er muligt, kandu indkapsle hele sessionen i en stored procedure
som kalder de andre. Det forudsætter dog et vist minimumskendskab til hvad
der skal ske i sessionen. Ubrugeligt, hvis der er for meget
brugerinteraktion.

Alternativt kan du oprette dem uden for det første kald af stored
procedure. Så burde de være tilgængelige for hele sessionen, også de stored
procedures du kalder.

> - Globale tabeller er tilgængelige gennem hele sessionen, men
> desværre også for alle andre sessioner, der afvikles simultant og som
> gør brug af de samme tabeller. Jeg har behov for at tabellerne kun er
> tilgængelige for netop den session som de blev oprettet under.

Hvis du ender med at bruge globale tabeller kan du benyttes @@spid til at
identificere den del af tabellen som en specifik session har adgang til -
og så sørge for at der ryddes op som det første i sessionen.


--
Kristian Damm Jensen damm (at) ofir (dot) dk
To announce that there must be no criticism of the President, or that
we are to stand by the President, right or wrong, is not only
unpatriotic and servile, but is morally treasonable to the American
public. -- Theodore Roosevelt


Thomas Sørensen (01-04-2004)
Kommentar
Fra : Thomas Sørensen


Dato : 01-04-04 05:22

Hej Kristian

Jeg takker for dit forslag... Jeg var ikke klar over, at man fra en stored
procedure kan tilgå lokale temporære tabeller, som er oprettet inden kaldet
af proceduren, men det lader til at fungere upåklageligt... Dette er
formentlig løsningen på problemet.


M.v.h.

Thomas Hvalsø

"Kristian Damm Jensen" <REdammMOVE@ofir.dk> skrev i en meddelelse
news:c4f42s$2hd8n3$1@ID-146708.news.uni-berlin.de...
> Thomas Sørensen wrote:
> > Jeg har behov for at oprette og arbejde med en række temporære
> > tabeller i SQL Server 2000, hvilke skal være tilgængelige igennem
> > hele sessionen og kun for den kaldende applikation. Problemet er, at
> > der kan forekomme flere simultane instanser af den kaldende
> > applikation, resulterende i flere sessioner som ikke må interferere
> > med hinanden. Kaldene sker fra Excel via en ADO connection i VBA.
> >
> > Den overordnede procedure er som følger:
> >
> > 1. Åben ADO connection
> > 2. Eksekver en række stored procedures til udvælgelse af data og
> > oprettelse af en række temporære tabeller
> > 3. Udfør x antal forespørgsler fra VBA rettet mod de temporære
> > tabeller til
> > 4. Luk ADO connection
> >
> > Jer har overvejet og forsøgt med både lokale og globale temporære
> > tabeller, der hver især har deres fordele og ikke mindst ulemper, som
> > gør begge uegnede til formålet:
> >
> > - Lokale tabeller er kun tilgængelige indenfor den stored procedure
> > som har oprettet dem og bliver således slettet når proceduren
> > afsluttes. Jeg skal bruge dem gennem hele sessionen!
>
> Hvis det er muligt, kandu indkapsle hele sessionen i en stored procedure
> som kalder de andre. Det forudsætter dog et vist minimumskendskab til hvad
> der skal ske i sessionen. Ubrugeligt, hvis der er for meget
> brugerinteraktion.
>
> Alternativt kan du oprette dem uden for det første kald af stored
> procedure. Så burde de være tilgængelige for hele sessionen, også de
stored
> procedures du kalder.
>
> > - Globale tabeller er tilgængelige gennem hele sessionen, men
> > desværre også for alle andre sessioner, der afvikles simultant og som
> > gør brug af de samme tabeller. Jeg har behov for at tabellerne kun er
> > tilgængelige for netop den session som de blev oprettet under.
>
> Hvis du ender med at bruge globale tabeller kan du benyttes @@spid til at
> identificere den del af tabellen som en specifik session har adgang til -
> og så sørge for at der ryddes op som det første i sessionen.
>
>
> --
> Kristian Damm Jensen damm (at) ofir (dot) dk
> To announce that there must be no criticism of the President, or that
> we are to stand by the President, right or wrong, is not only
> unpatriotic and servile, but is morally treasonable to the American
> public. -- Theodore Roosevelt
>



Søg
Reklame
Statistik
Spørgsmål : 177493
Tips : 31966
Nyheder : 719565
Indlæg : 6408479
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste