Как временно подавить сообщения об ошибках в SSMS? - PullRequest
1 голос
/ 18 июня 2011

Следующая команда пытается повторно заполнить значение идентификатора для всех таблиц в текущей базе данных.

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

Для каждой таблицы, в которой нет столбца идентификаторов, создается сообщение об ошибке.

Сообщение 7997, уровень 16, состояние 1, строка 1 «MyTable» не содержит столбец идентификаторов.

Я хотел бы подавить все сообщения об ошибках для этой единственной строкиКод выше, но не подавлять их для остальной части кода в файле SQL.

Есть идеи?

1 Ответ

1 голос
/ 18 июня 2011

Вы можете сделать что-то вроде этого (не проверено, но я думаю, что вы получите суть):

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...