---
title: "Temporärtabeller i minnet på SQL Server"
type: "forum-thread"
url: "https://www.webforum.nu/amne/webbutveckling/105730-temporärtabeller-i-minnet-på-sql-server"
topic: "Webbutveckling"
topic_url: "https://www.webforum.nu/amne/webbutveckling"
author: "OveRRidE"
published: "2004-06-18T07:01:46.000Z"
updated: "2004-06-18T11:49:24.000Z"
replies: 11
views: 514
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/webbutveckling/105730-temporärtabeller-i-minnet-på-sql-server"
---

# Temporärtabeller i minnet på SQL Server

## #1 — OveRRidE, 2004-06-18T07:01Z

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. 

Jag har hört nåt om IMDB (In Memory DataBase), men tydligen la Microsoft ner den tekniken efter RC2 av Windows 2000. (<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncomser/html/whatimdb.asp>)

Någon som vet hur man gör?

Permalänk: https://www.webforum.nu/p/105730

## #2 — yohpops, 2004-06-18T10:48Z

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
```

Permalänk: https://www.webforum.nu/p/1368910

## #3 — Brimba, 2004-06-18T10:52Z

För att skapa den i minnet gör du:

```
declare @tbl table(username varchar(50))
insert into @tbl (username) values('Brimba')
insert into @tbl (username) values('OveRRidE')
```

Permalänk: https://www.webforum.nu/p/1368914

## #4 — OveRRidE, 2004-06-18T10:54Z

Yeah, that's what I'm talking about! :D

1. Hur länge allokeras den i minnet?
2. Har den några begränsningar?
3. Finns det någon risk att datat lagras på disk (förutom i ev. swap)?

Permalänk: https://www.webforum.nu/p/1368916

## #5 — Brimba, 2004-06-18T11:08Z

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.

Permalänk: https://www.webforum.nu/p/1368921

## #6 — OveRRidE, 2004-06-18T11:15Z

1. Okej, inte så länge då med andra ord? Men om jag vill att tabellen skall finnas så länge servern är vaken?
2. Är det @tbl som rekommenderas då eller? Jag får felmeddelanden på din kod; 

   ```
   Server: Msg 170, Level 15, State 1, Line 1
   Line 1: Incorrect syntax near 'baluba'.
   ```

   .
3. Jag vill att den *inte* skall finnas i fysisk form på servern, det har lite med säkerheten att göra. 
   
   Det jag vill åstakomma är; 1.) Hämta data och joxa lite med det. 2.) Fös in i temporärtabellen i minnet. 3.) Gör en sökning mot  minnestabellen.

Permalänk: https://www.webforum.nu/p/1368923

## #7 — Brimba, 2004-06-18T11:22Z

3\. Skall du hämta data, redigera, söka i en och samma SP?

Permalänk: https://www.webforum.nu/p/1368925

## #8 — OveRRidE, 2004-06-18T11:24Z

Nej, datat måste ut en runda genom ett C++-API först, så det blir inte i en och samma SP, nej.

Permalänk: https://www.webforum.nu/p/1368926

## #9 — Brimba, 2004-06-18T11:32Z

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.

Permalänk: https://www.webforum.nu/p/1368929

## #10 — OveRRidE, 2004-06-18T11:36Z

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. 

Dekrypterad data får aldrig finnas på disken.

Permalänk: https://www.webforum.nu/p/1368932

## #11 — OveRRidE, 2004-06-18T11:49Z

Nu kom jag iallafall på varför jag fick meddelande på din kod. 

> **Professional SQL Server Programming skrev:**
>
> Datatype Name: Table
> Class: Other
> Nature of the data: Brand new in SQL Server 2000. \[..\]

Jag använder SQL Server 7. :l

Permalänk: https://www.webforum.nu/p/1368935

## #12 — Brimba, 2004-06-18T11:49Z

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?

Permalänk: https://www.webforum.nu/p/1368936

---

Tråden på webben: https://www.webforum.nu/amne/webbutveckling/105730-temporärtabeller-i-minnet-på-sql-server
