以下命令尝试重新设置当前数据库中所有表的标识值。
exec sp_MSforeachtable @command1 = 'DBCC CHECKIDENT(''?'', RESEED, 1)'
为没有标识列的每个表生成错误消息。
Msg 7997,Level 16,State 1,Line 1'MyTable'不包含标识列。
我想抑制上面这一行代码的所有错误消息,但不要为SQL文件中的其余代码禁止它们。
有什么想法吗?
答案 0 :(得分: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