Библиотека внешних процедур (namssql.dll) Назад В начало Вперед

Библиотека реализует внешние хранимые процедуры MS SQL сервера, используемые в триггерах таблиц БД и для управления сервером. Библиотека загружается процессом MS SQL сервера и должна быть расположена в путях, доступных ему. Инсталлятор базы данных устанавливает библиотеку в каталог с исполняемым модулем MS SQL сервера.

Внешние процедуры для управления вспомогательной службой (NAPServer):

Посредством библиотеки namssql.dll механизм, обеспечивающий работу триггеров с множественными блокировками, осуществляет пересылку информации о заблокированных записях из вспомогательной службы Галактики NAPServer в MS SQL Server.

Буфер обмена блокировками ограничен и по умолчанию равен 20.

Поэтому корректная работа может выполняться только до тех пор, пока общее количество одновременно заблокированных записей в одной таблице не превысит 20.

В случае превышения заданного размера буфера обмена блокировками механизм обмена не сможет полностью передать в триггер, анализирующий блокировки, информацию о блокировках, триггер откатит обрабатываемую транзакцию и выдаст ошибку с кодом 50014:

Locked records buffer is overflowed in <trigger_name>.

Эта ошибка будет получена процессом, вызвавшим транзакцию. В частности драйвер ms70drv.dll запишет её в журнал ms70drv.log.

Также данная ошибка будет зафиксирована в журнале MS SQL Server. Настройка оповещения администратора при возникновении такой ошибки на сервере выполняется согласно документации на MS SQL Server, например, см. Alerts в SQL Server Agent.

При возникновении такой ситуации размер буфера блокировок необходимо увеличить.

Это выполняется с помощью внешней хранимой процедуры na_lockbuffersize.

Если вызвать её без параметров, будет возвращён текущий размер буфера:

Current locks buffer size is <значение>

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

na_lockbuffersize <значение>

Размер буфера может быть в пределах от 1 до 65535. Если задаваемый размер выходит за диапазон, или допущена другая ошибка в параметре, то выдается подсказка:

Usage: na_lockbuffersize [1..65535].

Установленное значение действительно в пределах текущей сессии библиотеки namssql.dll, поэтому если выгрузить библиотеку (dbcc namssql(free)) или перегрузить MS SQL Server, то размер буфера обмена блокировками вновь примет значение по умолчанию 20.