Скрипт для переноса пользовательских сообщений

by Alexey Knyazev 18. февраля 2011 00:48

Пользовательские сообщения, как и системные, хранятся в системном представлении sys.messages (master..sysmessages для более ранних версий). Сообщения с идентификаторами, меньшими 50000, являются системными.
Для переноса пользовательских сообщения, написал скрипт, который динамически генерит скрипт для создания этих самых сообщений. Код работает, как для SQL Server 2000, так и выше:

use master 
declare @command varchar(8000) 
, @i int 
, @max_error int 
set @command = '/* Скрипт для переноса пользовательских сообщений */' + char(13) 
+ 'use master '+ char(13)+ 'go' + char(13) 

select @i = 50000, @max_error = max( error ) from sysmessages 
where error > 50000 

while @i <= @max_error 
begin 
select @command = @command 
+ ' if not exists ( select * from sysmessages where error = ' + convert( varchar, error ) + ' )' 
+ ' exec sp_addmessage @msgnum = ' + convert( varchar, error ) 
+ ', @severity = ' + convert( varchar, severity ) 
+ ', @with_log = ' + case dlevel when 128 then 'true' else 'false' end 
+ ', @lang = ''us_english''' 
+ ', @replace = ''replace''' 
+ ', @msgtext = N''' + description + '''' 
+ char(13) 
from sysmessages 
where error between @i + 1 and @i + 10 
print @command 
set @command = '' 
set @i = @i + 10 
end

Tags: , , , ,

SQL Server

Добавить комментарий

  Country flag

biuquote
  • Комментарий
  • Предпросмотр
Loading