2009-05-19 14 views
0

我有一個Microsoft SQL Server 2008與許多數據庫,其中大部分都有一個日誌表。我希望能夠安排腳本在每個數據庫(動態)中運行和截斷Logs表。我想我必須得到每個用戶數據庫的名稱,然後截斷包含日誌表的數據庫中的表日誌。單個腳本如何截斷每個數據庫中的特定表?

最後我用的語句是:

EXEC sp_MSForEachDB 'Use [?]; IF EXISTS (SELECT * FROM sys.tables WHERE name = "Logs" and type="U")TRUNCATE TABLE Logs' 
+0

哪個版本的SQL Server(Enterprise,Express,Standard)? – 2009-05-19 19:45:32

+0

標準版64位,謝謝。 – notandy 2009-05-19 19:57:40

回答

7

這有點黑客,因爲存儲過程是未公開的,但試試這個:

EXEC sp_MSForEachDB 'Use ?; TRUNCATE TABLE Logs' 
+0

+1,這是一個很好的解決方案,爲什麼有-1這個? – 2009-05-19 20:01:34

-1

在2008年的最簡單的事情如果它當時沒有在生產中使用的話,是這樣的

編寫一個腳本,在動態sql中做到這一點

Alter Database <mydb> set recovery simple 
go 

Checkpoint 
go 

Alter Database <mydb> set recovery full 
go 
相關問題