Avatar billede dougheffernan Nybegynder
19. januar 2007 - 09:19 Der er 4 kommentarer og
1 løsning

Slette data ældre end 1 år fra dags dato

Forestiller mig en Stored Procedure, som kører hver nat via. et job.
Proceduren skal gennemløbe tabellen og slette alle data hvor feltet dato = dags-dato - 365 dage.

Tabel:
minTabel

Prøvede med en forespørgsel fra Access' query designer (med hak i SQL92 compliant-feltet), men den brokker sig over funktionen Dato()
(som jo er en VBA funktion - hvad skal jeg bruge i SQL Serveren?)
Avatar billede teepee Nybegynder
19. januar 2007 - 10:04 #1
CREATE PROCEDURE dbo.jobDeleteOld AS
BEGIN TRANSACTION
    delete
    from [table]
    where dato < dateadd(m,-12,getDate())
COMMIT TRANSACTION
GO
Avatar billede dougheffernan Nybegynder
19. januar 2007 - 11:39 #2
Ja, jeg nåede selv frem til noget der minder om det.

CREATE PROCEDURE dbo.MaintenanceOfmyTable AS
DELETE FROM [myTable] WHERE convert(varchar(10), myField, 126) = CONVERT(VARCHAR(10), GETDATE()-365, 126)
GO

Jeg bliver dog lidt mistænkelig ved at lade det køre automatisk - hvad hvis en eller anden "piller" ved uret på serveren, så kan jeg risikere at jobbet ender med at slette data som er nyere end den reelle, faktiske d.d.!
Vil implementere en stump SQL som flytter dataene til en arkiv-tabel først.

Tak for hjælpen, teepee.
Vil også implementere dit forslag om at bruge en transaktion.
Avatar billede teepee Nybegynder
19. januar 2007 - 14:42 #3
Lyder fornuftigt. Det er altid en god ide at flytte data til en mellemstation inden det slettes.
Avatar billede arne_v Ekspert
20. januar 2007 - 02:14 #4
hvad er pointen med at sætte eksplicit transaction omkring en enkelt update ?
Avatar billede teepee Nybegynder
22. januar 2007 - 10:29 #5
Jeg har oplevet at låse bliver frigivet hurtigere, når man gør det eksplicit i stored procedures, men egentligt burde der ikke være nogen forskel.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester