Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ne radi mi NOCHECK sa procedurom sp_MSForEachTable

[es] :: MS SQL :: Ne radi mi NOCHECK sa procedurom sp_MSForEachTable

[ Pregleda: 1647 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Ne radi mi NOCHECK sa procedurom sp_MSForEachTable27.01.2010. u 22:44 - pre 173 meseci
Hocu da sa nedokumentiranom procedurom sp_MSForEachTable drop-am sve tabele u testnoj bazi. Napisao sam tsql kod
Code:
EXEC sp_MSForEachTable 'DROP TABLE ? NOCHECK CONSTRAINT ALL'

ali mi se javlja greska
Citat:
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'NOCHECK'.

Gdje grijesim? Druge komande poput print (exec sp_MSforeachtable 'print ''?''' ) rade. Inace ovu komandu sam prepravio od originalne koja glasi ovako (ona samo brise podatke iz tabela)
Citat:
CREATE PROCEDURE sp_EmplyAllTable
AS
EXEC sp_MSForEachTable ‘ALTER TABLE ? NOCHECK CONSTRAINT ALL’
EXEC sp_MSForEachTable ‘DELETE FROM ?’
EXEC sp_MSForEachTable ‘ALTER TABLE ? CHECK CONSTRAINT ALL’
GO

PS. baza je na sql server 2008
...
 
Odgovor na temu

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Re: Ne radi mi NOCHECK sa procedurom sp_MSForEachTable28.01.2010. u 10:07 - pre 173 meseci
Pa zar stvarno nitko ne koristi ovu proceduru za brzo brisanje tabela iz baze?! Postoji li bolji nacin za brzo "praznjenje" baze od svih tabela?

Do sada sam koristio donju skriptu, ali ona je spora jer pobrise fk i onda stane pa moram raditi F5 dokle god se ne pobrise i zadnji fk.
Code:
USE "testbaza"
SELECT name INTO #tables from sys.objects where type = 'U'
while (SELECT count(1) FROM #tables) > 0
begin
declare @sql varchar(max)
declare @tbl varchar(255)
SELECT top 1 @tbl = name FROM #tables
SET @sql = 'drop table ' + @tbl
exec(@sql)
DELETE FROM #tables where name = @tbl
end
DROP TABLE #tables; 

...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Ne radi mi NOCHECK sa procedurom sp_MSForEachTable28.01.2010. u 10:13 - pre 173 meseci
Sto jednostavno ne skriptujes bazu, dropujes istu i rekreiras?
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Re: Ne radi mi NOCHECK sa procedurom sp_MSForEachTable28.01.2010. u 10:21 - pre 173 meseci
Citat:
mmix: Sto jednostavno ne skriptujes bazu, dropujes istu i rekreiras?


Hm nisam db admin pa samim time nisam upoznat sa tvojom prvom izjavom "sto ne skriptujes bazu". Sta si mislio pod ovim?

U medjuvremenu mi je kolega poslao skriptu koja dropa sve tabele iz neke baze, prije toga uklanja sve fk-ove i jos ispisuje koje tabele su obrisane. Skripta se nalazi ispod
Code:
--brise i sve FKove
use imeTvojeBaze --pazi da ti ovdje ne ostane ime aktivne baze!!!!!!!!
declare @i int
set @i = 0
while (@i<99)
begin
   declare @table_name varchar(100)
   declare table_list cursor for
      select name from sysobjects o2 where xtype='U' and
         not exists (
            select * from sysforeignkeys k
               join syscolumns c1 on (k.fkeyid = c1.id and c1.colid=k.fkey)
               join syscolumns c2 on (k.rkeyid = c2.id and c2.colid=k.rkey)
            where c2.id = o2.id and c1.id <> o2.id
         )
   open table_list
   fetch next from table_list into @table_name   
   while @@fetch_status = 0
   begin
      print 'dropping table '+@table_name
      exec ('drop table '+@table_name)   
      fetch next from table_list into @table_name
   end   
   close table_list
   deallocate table_list
   set @i = @i+1
end

...
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

Član broj: 28246
Poruke: 790
82.117.202.*

Jabber: fedya@elitesecurity.org
Sajt: devtechgroup.com


+34 Profil

icon Re: Ne radi mi NOCHECK sa procedurom sp_MSForEachTable28.01.2010. u 10:39 - pre 173 meseci
Ne mogu da shvatim cemu toliko komplikovanje. Jednostavno uradis DROP DATABASE i kreiras je.
Every hamster has his day.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Ne radi mi NOCHECK sa procedurom sp_MSForEachTable28.01.2010. u 10:40 - pre 173 meseci


Ispratis wizard i tako generises SQL skriptu koja kreira izabrane objekte, cela sema baze (u sql 2008 cak i podaci) tako moze da se prebaci u SQL format i tako prenese ili sacuva. A ako ti je cilj samo da ubijes sve tabele u bazi, onda ti i skriptovanje ne treba, samo dropuj bazu ne vidim sto se maltretiras da obrises sve tabele?

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
Prikačeni fajlovi
 
Odgovor na temu

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Re: Ne radi mi NOCHECK sa procedurom sp_MSForEachTable28.01.2010. u 10:50 - pre 173 meseci
Citat:
Fedya: Ne mogu da shvatim cemu toliko komplikovanje. Jednostavno uradis DROP DATABASE i kreiras je.

ucis se pogresno. dosta online baza podataka ti nece dati dropanje i rekreiranje baze. pogotovo kada radis remote db administration. sta ces onda?

Citat:
mmix
Ispratis wizard i tako generises SQL skriptu koja kreira izabrane objekte, cela sema baze (u sql 2008 cak i podaci) tako moze da se prebaci u SQL format i tako prenese ili sacuva. A ako ti je cilj samo da ubijes sve tabele u bazi, onda ti i skriptovanje ne treba, samo dropuj bazu ne vidim sto se maltretiras da obrises sve tabele?

probat cu ovo. hvala!
...
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

Član broj: 28246
Poruke: 790
82.117.202.*

Jabber: fedya@elitesecurity.org
Sajt: devtechgroup.com


+34 Profil

icon Re: Ne radi mi NOCHECK sa procedurom sp_MSForEachTable28.01.2010. u 11:18 - pre 173 meseci
Ja sam ti rekao otprilike isto sto i mmix, samo sam za razliku od njega, podrazumevao da znas osnove SSMS-a.

Ako nemas prava da uradis backup/restore baze onda sa tom bazom nemoj ni raditi (ili bar ni slucajno nemoj pokusavati da obrises podatke iz takve baze ).
A ako mozes da uradsi restore mozes poterati create script (koji ti je mmix lepo, slikovito, objasnio) na bilo kom serveru i napraviti prazan backup i restoreovati ga preko tvoje baze gde ti je zabranjen drop

(a izjavu 'ucis se pogresno' necu da komentarisem )
Every hamster has his day.
 
Odgovor na temu

Koce
DBA
Serbia, Belgrade

Član broj: 59217
Poruke: 144
*.static.isp.telekom.rs.



+1 Profil

icon Re: Ne radi mi NOCHECK sa procedurom sp_MSForEachTable28.01.2010. u 11:34 - pre 173 meseci
Nemoj da radis drop i create, napunice ti log, uradi truncate, ako je to ono sto ti treba.
 
Odgovor na temu

[es] :: MS SQL :: Ne radi mi NOCHECK sa procedurom sp_MSForEachTable

[ Pregleda: 1647 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.