2011-06-18 54 views
1

以下命令嘗試重新設置當前數據庫中所有表的標識值。如何暫時抑制SSMS中的錯誤消息?

exec sp_MSforeachtable @command1 = 'DBCC CHECKIDENT(''?'', RESEED, 1)' 

將爲每個沒有標識列的表生成錯誤消息。

Msg 7997,Level 16,State 1,Line 1'MyTable'不包含標識列。

我想爲上面的這一行代碼抑制所有的錯誤消息,但不抑制SQL文件中其餘代碼的所有錯誤消息。

有什麼建議嗎?

回答

1

你可以做這樣的事情(未經測試,但我認爲你會得到要點):

declare tbls cursor for 
select object_name([object_id]) 
from sys.identity_columns 
where objectproperty([object_id], 'IsMSShipped') = 0 
declare @tbl_name sysname, @cmd nvarchar(max) 
open tbls 

while(1=1) 
begin 
    fetch next from tbls into @tbl_name 
    if(@@fetch_status <> 0) 
     break 
    set @cmd = 'DBCC CHECKIDENT(''' + @tbl_name + ''', RESEED, 1)' 
    exec(@cmd) 
end 
close tbls 
deallocate tbls 
+0

只是讓你知道,「WITH NO_INFOMSGS」隱藏所有,但錯誤。感謝您的選擇! –