Tjo. Nu kommer det en sån där krånglig fråga igen. ;)
Jag behöver kunna skapa en temporär tabell i minnet på en SQL Server, som inte har en, på disk, fysisk gestaltning (helst) som jag kan lägga till, ändra och radera data från.
en vanlig create table fast du skriver # framför tabellnamnet.
create table #nisse
(
namn varchar(50)
)
insert #nisse (namn) values('jag heter nils')
select * from #nisse
update #nisse set namn = 'jag heter inte nils'
select * from #nisse
drop table #nisse
1. På samma sätt en vilken annan variabel som helst som du deklarerar.
2. Ja men #tbl och @tbl skiljer sig åt i sina begränsningar. Begränsningarna är få, men jag har stött på någon begränsning när man bygger en egen funktion. Minns dock inte exakt hur det var för det går exempelvis utmärkt att returnera en temporärtabell oavsett om den är deklarerad eller skapad på disk. Du kan även skapa index och joins mot tabellen. Begränsningarna
3. När du skapar en temporärtabell genom create table lagras den alltid på disk, det kan iofs vara en fördel eftersom du då inte riskerar att förlora den på samma sätt som när du deklarerar en tabell.
Om du skapar en tabell genom ##tbl blir den dessutom global och kan användas i andra frågor.
När du skapar en tabell genom create #table skall du tänka på att radera tabellen när du är klar med den med drop #tbl även om det oftast är så att den raderas automatiskt. (exempelvis när en SP är slutförd).
All information om din temporärtabell (#tbl) sparas i sysobjects i tempdb. Detta sker inte när du deklarerar din tabell.
Ok, då föreslår jag att du skapar en global temporärtabell
CREATE TABLE ##tbl (ID INT PRIMARY KEY)
INSERT INTO ##tbl VALUES (1)
INSERT INTO ##tbl VALUES (2)
Denna kan du sedan använda att söka i en annan session.
Men om det blir säkrare än att skapa en riktig tabell det vet jag inte. Du kan ju ändra rättigheter om du så vill. Men jag vet inte riktigt vad du vill göra heller.
Ok. Men då kommer tabellen att finnas någonstans på disk antar jag? Det är som sagt något som jag vill undvika så långt som möjligt, det är därför jag vill ha tabellen i minnet och ingen annanstans.
1. Hämta data.
2. Dekryptera data.
3. In i minnet.
4. Sök.
5. Förstör.
Beskriv gärna förfarandet också. Hur hämtar du datan, var dekrypteras den? När skickas den in i minnet? Hur många gånger skall man kunna söka? När skall den förstöras?
263 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25