Архив за день: 24.05.2011

При миграции БД с SQL Server 2000 на SQL Server 2005 выяснилось, что строка

RAISERROR ('test error %S', 16, 1, @test)

из-за неверно написанного %S вместо %s в SQL Server 2000 работает просто неверно (возвращает только первый символ параметра), а в SQL Server 2005 не создает процедуру совсем:
Msg 2787, Level 16, State 1, Line 6
Invalid format specification: ‘%S’.

Т.к. такое написание могло встретиться в любой процедуре, найдем их все:

SELECT name FROM sys.procedures WHERE CHARINDEX ( '%S', OBJECT_DEFINITION(object_id) COLLATE Latin1_General_CS_AS) >0

После исправления RAISERROR работает правильно.

May 2011
M T W T F S S
« Apr   Jun »
 1
2345678
9101112131415
16171819202122
23242526272829
3031