[ HermanBG @ 13.08.2010. 11:53 ] @
Cao,

Hteo bih da jednom sql komandom ili upitom obrisem sve tabele u bazi, ali da ne obrisem bazu jer zelim da sacuvam sve stored procedures, sve view-ove i sl.

Dakle nesto kao DROPP ALL TABLES (sto ne postoji)

Imate li ideju?
[ mmix @ 13.08.2010. 12:52 ] @
nema takve komande, moras da enumerirses sve objekte tipa tabela i da ih dropujes ednu po jednu u petlji
[ Vic @ 13.08.2010. 12:54 ] @
Ili drop database.
[ AMD guy @ 13.08.2010. 13:02 ] @
Probaj ovo

Code (sql):
DECLARE
@SQL VARCHAR(4000),
@int_counter INT,
@int_max INT

DECLARE @TABLES TABLE(
ident INT IDENTITY(1,1) PRIMARY KEY,
TABLE VARCHAR(256))

INSERT @TABLES(TABLE)
SELECT name FROM sysobjects WHERE xtype = 'U'

SELECT
@int_counter = 1,
@int_max = (SELECT MAX(ident) FROM @TABLES))

WHILE @int_counter <= @int_max
BEGIN

SELECT @SQL = 'DELETE ' + TABLE
FROM @TABLES WHERE ident = @int_counter

SELECT @int_counter = @int_counter + 1
END
 


Ovo ce raditi samo ako nemas foreign keys i ne zezaj se sa sistemskim bazama(sysobjects), opasno je.
P.S.
Ne odgovaram za posledice ovog skripta :)

ovo sam nasao na dbforumu.
[ Fedya @ 13.08.2010. 13:46 ] @
Citat:
HermanBG: Hteo bih da jednom sql komandom ili upitom obrisem sve tabele u bazi, ali da ne obrisem bazu jer zelim da sacuvam sve stored procedures, sve view-ove i sl.


Ono sto bih ti ja preporucio je da scriptujes bazu (ako koristis SSMS kliknes desnim na bazu Tasks -> Generate Scripts...) koja ti uvek moze biti korisna ako hoces da pocistis bazu. Nakon toga drop-ujes bazu i rekreiras sve iz scripta.

Kod koji ti je AMD dao ce raditi samo ako nemas nikakvih constraint-a na tabelama, nemas triggera i sl. Ukoliko ih imas oni ce biti obrisani zajedno sa tabelama (pretpostavljam da to ne zelis). Takodje imaju vidu da ce ti taj drop napuniti transaction log. U slucaju da imas spoljnih kljuceva kod uopste nece raditi.