25 июля 2006, 12:45
Категории
MS SQL и ограничение длины строк
На собственном опыте обнаружил странное поведение своего MS SQL сервера. Если в таблицу добавляется значение типа (N)VARCHAR или (N)CHAR, и это значение длиннее ограничения, то текст не обрезался, транзакция не проходила, и IIS вываливался с ошибкой 500, чем вгонял в недоумение админов.
Server: Msg 8152, Level 16, State 9, Line 1 String or binary data would be truncated. The statement has been terminated.
Выяснилось, что виной этому была опция ANSI_WARNINGS. В документации говорят, она по-умолчанию выключена, но это зависит от настроек конкретного сервера.
Если её выключить, то строки будут сами обрезаться, и запросы будут успешно исполняться.
Есть два способа отключения:
- Выполнить в начале запрос:
SET ANSI_WARNINGS OFF - Для всех соединений одновременно, используя хранимую процедуру:
sp_dboption 'DatabaseName', 'ANSI warnings', 'FALSE'.
![Validate my RSS feed [Valid RSS]](/img/valid-rss.png)