webForumDet fria alternativet

DELETE

17 svar · 370 visningar · startad av Nöff

NöffMedlem sedan nov. 2003569 inlägg
#1

DELETE FROM tabell1 WHERE projektID=10

Om tabell1 innehåller en halv miljon rader med projektID=10 så funkar inte detta. Den bara dör typ.. står och tuggar i flera minuter och så händer ingenting. Vad är egentligen fel?. Pallar den inte trycket? MSDE?

magnusfernstromMedlem sedan mars 20033 686 inlägg
#2

Det är möjligt att den inte pallar. Men hur i allsin dar får du över en halv miljon poster! :o

OveRRidEMedlem sedan feb. 200112 078 inlägg
#3

magnusfernstrom skrev:

Det är möjligt att den inte pallar. Men hur i allsin dar får du över en halv miljon poster! :o

Inga problem. ;)

Vilken DBMS handlar det om? SQL Server?

NöffMedlem sedan nov. 2003569 inlägg
#4

det är en MSDE. Jag menar.. det är ju helt OK om den skriker och säger att den inte pallar, men här händer absolut nada. jag har satt command.timeout till 500 sek.. den exekverar klart men ändå så är ALLA poster kvar???. jätteskumt.. hur ska man egentligen kunna DELETE posterna?.

OveRRidEMedlem sedan feb. 200112 078 inlägg
#5

Ah, jag tyckte det stod MSDN. :o

Kan du ta bort data i andra tabeller? Finns det något sätt du kan testa och se ifall du kan ta bort typ 1000 rader i från tabellen överhuvudtaget? Kör du frågan i Query Analyzer eller från kod?

NöffMedlem sedan nov. 2003569 inlägg
#6

jepp. testade denna:

DELETE FROM tabell1 WHERE projektID=5 AND ID>(SELECT MIN(ID) FROM tabell1 WHERE projektID=5) AND ID<(SELECT MIN(ID) FROM tabell1 WHERE projektID=5)+1000; SELECT COUNT(ID) FROM tabell1

den delete:ade några st , men så fort jag körde frågan igen så ville den inte längre

OveRRidEMedlem sedan feb. 200112 078 inlägg
#7

Visserligen, en halv miljon rader är ganska mycket data för transaktionsloggen att komma ihåg. Allt som du raderar ur databasen, måste ju även transaktionsloggen kunna återskapa vid en restore. Har din logg växt i storlek? Är det mycket data eller är det bara massa tal och skräp i fälten?

NöffMedlem sedan nov. 2003569 inlägg
#8

Nej, det är riktiga data som tillhör olika projekt. jag vill kunna delete:a 1 projekt bara. Jag undrar hur man ska gå till väga egentligen. kan man slå av transaktionsloggen kanske?.

loggen är förresten på 555 meg.

LaspMedlem sedan juli 200012 980 inlägg
#9

Det finns en samkörningsfunktion som rensar vissa logguppgifter.

NöffMedlem sedan nov. 2003569 inlägg
#10

Det finns en samkörningsfunktion som rensar vissa logguppgifter.

OK, hur använder man den?.

OveRRidEMedlem sedan feb. 200112 078 inlägg
#11

Nöff skrev:

Nej, det är riktiga data som tillhör olika projekt. jag vill kunna delete:a 1 projekt bara. Jag undrar hur man ska gå till väga egentligen. kan man slå av transaktionsloggen kanske?.

loggen är förresten på 555 meg.

Transaktionsloggen är där vare sig du vill eller inte. Jag tror faktiskt inte att du kan inaktivera den, även om man kan göra den lite 'mindre viktigt' så att säga, genom att sänka Recovery Interval och lite sånt.

555 MB? Hur mycket av det är ledigt / allokerat?

Lasp skrev:

Det finns en samkörningsfunktion som rensar vissa logguppgifter.

Vad menar du då? CHECKPOINT?

NöffMedlem sedan nov. 2003569 inlägg
#12

555 MB? Hur mycket av det är ledigt / allokerat?

Hmm. jag kollade bara filstorleken. det finns ju ingen query analyser för MSDE.

OveRRidEMedlem sedan feb. 200112 078 inlägg
#13

Nöff skrev:

Hmm. jag kollade bara filstorleken. det finns ju ingen query analyser för MSDE.

Nej, men det finns väl en (Enterprise) Manager?

Klicka på databasen » Space allocated

NöffMedlem sedan nov. 2003569 inlägg
#14

Nej, men det finns väl en (Enterprise) Manager?

Nä tyvärr, det finns inga hjälpverktyg alls för MSDE. bara en ikon i nedersta högra hörnet där det står om den är igång eller inte.

OveRRidEMedlem sedan feb. 200112 078 inlägg
#15

Testa ifall den här lilla nifty saken kan hjälpa dig då. Det är ett substitut till EN som kallas DbaMGR.

http://www.asql.biz/Public/clicks.php?id=5

/red. Äsch, den klarar ju inte att visa LOG-filer, kasst. :l

NöffMedlem sedan nov. 2003569 inlägg
#16

hmm, vad kan man göra med den?

NöffMedlem sedan nov. 2003569 inlägg
#17

har kollat runt på lite sajter och grejer. Och delete:a massiva poster verkar vara ett generellt problem verkar det som.. Vissa skaparn ny tabell och bara tar ut det som dom vill ha kvar ur den gamla och lägger i den nya och raderar den gamla.. Ja.. hmm, vilket är det bästa sättet. Det enklaste :) ... Helst alltihop i en enda SQL sats.

OveRRidEMedlem sedan feb. 200112 078 inlägg
#18

Jo, det går ju. Du kan ju göra en SP av det här, om du nu kan lägga till SP's i MSDE. Annars får du väl göra ett anrop per rad.

CREATE TABLE #tmpTable(C1 INT Primary Key, C2 VARCHAR(255))
INSERT INTO #tmpTable SELECT * FROM orgTable WHERE Id <> 10
TRUNCATE TABLE orgTable
INSERT INTO orgTable SELECT * FROM #tmpTable
TRUNCATE TABLE #tmpTable

(Du får givetvis redigera första raden så att du får en kopia av din ursprungstabell)

Nöff skrev:

hmm, vad kan man göra med den?

Den fungerar som en EM ungefär, fast med lite annorlunda funktionalitet.

141 ms totalt · 3 externa anrop · v20260731065814-full.30151723
138 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)