07. marts 2013 - 10:56Der er
6 kommentarer og 1 løsning
Slet data udenom transaction log
SQL Express 2012 benyttes på nogle pc'ere, som jeg kun har yderst begrænset adgang til. Jeg kan sende scripts, men det må ikke indeholde komma!!
Jeg har brug for at slette f.eks. 40.000.000 records uden at transaction loggen vokser fra 6 MB til 20+ MB da harddisken på denne pc vil blive totalt fyldt op. Data skal _aldrig_ bruges igen, hvorfor jeg kan gå udenom transaction log.
Jeg kan ikke lave en drop/create da jeg ikke skal slette alle data og der _vælter_ data ind i databasen imens jeg sletter.
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Alt i SQL kører implicit i en TRANSACTION så det er som sådan ikke muligt.
Med mindre du kan køre en TRUNCATE på den table, så kan du godt.
Hvordan kan en log på 20+ MB ... fylde en disk op ... :-S Ja, hvis den fylder 10000000000 MB kan den jo nok ... men det er meget små tal jeg synes vi snakker om her.
Hvorfor løser det ikke problemet er sætte den til "Simple Recovery Mode" ... Så bliver "trans log" jo tømt efter deletion er done ... dog har den stadig "reserveret" pladsen til fremtidig brug.
Du kan dog så derefter køre en "shrink" på din log fil, hvis det er vigtig for dig at have pladsen. Men dette vil jeg stærkt fraråde ...
Grunden til at der er transactions og det ikke som sådan kan slås fra af hvad jeg lige ved, er fordi hvad hvis den går ned? hardreset? disk fuld og mange andre grunde ... så ville den ikke kunne recover fra det.
WHILE @BatchSize <> 0 BEGIN DELETE TOP (@BatchSize) FROM [dbo].[UnknownTable] SET @BatchSize = @@rowcount END
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.