Исправления значений логических полей MS SQL

При некотором стечении обстоятельств в инфобазе под управлением СУБД MS SQL может сложится ситуация, когда в логических полях таблиц может находиться значение NULL а не TRUE или FALSE (1 или 0), как это должно быть. Вследствие чего могут неправильно работать картотечные фильтры, накладываемые на логические поля, а так же может не пройти реорганизация инфобазы по ошибке.

Для устранения ошибки в будущем, в инструментарий 7.5 и Turbo 9 внесены необходимые изменения (build 293). Для исправления данных в уже существующих базах можно воспользоваться принудительной реорганизацией инфобазы или воспользоваться приложенным в архиве SQL-скриптом. Который проанализирует структуру всех таблиц в базе и в случае, если в таблице логическое поле содержит NULL, то заменит его на 0. По завершении работы, скрипт выдает диагностические сообщения о том, какие поля в каких таблицах подверглись изменениям.

Для размещения sql-скрипта в информационной базе можно выполнить команду:

«C:\Program Files\Microsoft SQL Server\80\Tools\Binn\osql.exe» -E -d<ИмяБазы> -ifix_bit_fields_all_tables.sql

Для ручного запуска процедуры обновления значения логических полей достаточно в Query Analyzer или в аналогичном средстве интерактивного запуска запросов выполнить запрос:

sp_fix_bit_fields_all_tables

либо выполнить команду:

«C:\Program Files\Microsoft SQL Server\80\Tools\Binn\osql.exe» -E -d<ИмяБазы> -Q «sp_fix_bit_fields_all_tables»

 
doc/mssql_fix_bit_fields.txt · Последние изменения: 2016/04/15 15:26 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki