25. september 2005 - 15:32
Der er
26 kommentarer og 1 løsning
Tøm tabeller.
Hej. Jeg er newbie vedr. stored procedures, og ønsker derfor lidt hjælp til at lave dette: I forbindelse med en hel del tests, har jeg behov for at tømme mange tabeller, og nulstille identity. Det jeg forestiller mig er, at en stored procedure kaldes, og tømmer alle tabeller hvis navn ikke starter med 'sys' eller 'tbl'. Kan dette laves? MVH JoBless
Annonceindlæg fra GlobalConnect
25. september 2005 - 15:51
#1
prøv: CREATE PROCEDURE CLEANUP AS DECLARE @name VARCHAR(32) DECLARE c CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND NOT TABLE_NAME LIKE 'sys%' AND NOT TABLE_NAME LIKE 'tbl%' OPEN c FETCH NEXT FROM c INTO @name WHILE @@FETCH_STATUS = 0 BEGIN EXEC('DROP TABLE ' + @name) FETCH NEXT FROM c INTO @name END CLOSE c DEALLOCATE c GO
25. september 2005 - 15:52
#2
husk at teste på en test database først inden du sletter !!!!!!!!!!!!!!!!!!!
25. september 2005 - 15:56
#3
Jeg tester lige.... Betyder 'DROP TABLE' at den tømmer tabellen, eller at den sletter tabellen ?
25. september 2005 - 16:00
#4
sletter erstat med DELETE FROM hvis du kun vil fjerne data
25. september 2005 - 16:04
#5
ok, vil den så også nulstille Identity's?
25. september 2005 - 16:53
#6
jeg tror at du er nødt til at slette tabellen og oprette igen for at nulstille identity men jeg er ikke sikker så prøv
25. september 2005 - 16:54
#7
PS: hvis du har brug for at nulstille en identity så bør feltet sikkert ikke være identity
25. september 2005 - 16:58
#8
Hvad er den letteste måde at eksekvere den manuelt på ?
25. september 2005 - 17:01
#9
EXEC CLEANUP
25. september 2005 - 17:01
#10
eller bare CLEANUP
25. september 2005 - 17:01
#11
erstat evt. EXEC('DROP TABLE ' + @name) med PRINR @name for at se hvad der sker først :-)
25. september 2005 - 17:11
#12
Den tømmer fint tabellerne, med undetagelse af en enkelt som hedder 'Disk'. Det er sikkert et reserveret ord, hvad skal jeg afgrænse med, for at få denne tabel med ?
25. september 2005 - 17:14
#13
prøv med [Disk]
25. september 2005 - 17:18
#14
Fint, dog nulstilles Identity ikke, men det overlever jeg nu nok.
25. september 2005 - 17:18
#15
Lægger du lige et svar?
25. september 2005 - 17:19
#16
kommer her
25. september 2005 - 17:22
#17
Tak for den speedy hjælp ;=)
28. september 2005 - 16:35
#18
hvis du bruger "truncate tabelNavm" så bliver tabellen tømt, og ID'er starter forfra.
29. september 2005 - 08:08
#19
Hvordan kan jeg sende en parameter med til min stored procedure, således at jeg f.eks. kan bruge denne i den sql-statement som bruges i min SP ?
29. september 2005 - 08:13
#20
Opgaven er at jeg gerne vil have udvidet ovenstående SP, således at den tømmer tabeller som nu, men SP skal modtage et ID, og slå op i en enkelt tabel (en->mange) og slette posterne i alle tabellerne (som nu), hvor feltet ComputerID matcher de oversatte ID'er i opslaget. Er det helt volapyk ?
29. september 2005 - 22:06
#21
du sender vel bare en parameter over til din SP og bruger den til at sætte en WHERE på en DELETE
30. september 2005 - 06:51
#22
ja, men parameteren skal bruges til at slå værdierne op som skal bruges i min where clause. Hvordan sender jeg en parameter med?
30. september 2005 - 07:38
#23
CREATE PROCEDURE CLEANUP @in INTEGER AS og EXEC('xxxxxxxx xxxx ' + @name + ' WHERE id = ' + @id)
30. september 2005 - 07:53
#24
og i sql: cleanup(15) ??
30. september 2005 - 08:17
#25
cleanup 15 eller exec cleanup 15 tror jeg (jeg kalder normalt sp fra programmer)
30. september 2005 - 10:08
#26
Kan den ene sp godt kalde den anden, med en parameter?
30. september 2005 - 10:16
#27
ja
Computerworld tilbyder specialiserede kurser i database-management