MS SQL + Delphi

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
paparocii
Сообщения: 7
Зарегистрирован: 24 авг 2011, 16:52

MS SQL + Delphi

Сообщение paparocii »

Добрый день

Жизнь заставила, в процессе перехода с Pervasive на MS SQL, переношу все хозяйство написанное на Delphi.

Из delphi коннектюсь к MS SQL напрямую с использованием SDAC (для оракла использую ODAC, поэтому выбор пал на SDAC).

Собственно, вопросы:
1. Не получаются DML запросы: на Insert, Update ругается что-то типа:
Сообщение 17750, уровень 16, состояние 0, процедура na_getflagsfast, строка 1
Не удалось загрузить динамическую библиотеку namssql.dll или одну из библиотек, на которые она ссылается. Причина: 1114(Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).).
Сообщение 17750, уровень 16, состояние 0, процедура na_getmultipleinfo, строка 1
Не удалось загрузить динамическую библиотеку namssql.dll или одну из библиотек, на которые она ссылается. Причина: 1114(Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).).
Сообщение 50012, уровень 11, состояние 1, процедура T$KATORG_U, строка 65
Call master..na_getmultipleinfo in T$KATORG_U return an error (NAP: 1, RPC: 1792)
Сообщение 3609, уровень 16, состояние 1, строка 5
Транзакция завершилась в триггере. Выполнение пакета прервано.
Что с этой ошибкой делать - не знаю.

2. Похоже что из-за NAP сервера. Он то работает, то не работает. Очень не стабилен. "Изучаю литературу", пока не понятно из-за чего

3. Nrec при insert запросом в MS SQL будет генерироваться триггером (как в Oracle), или же нужно "вычислять" max(nrec)+1 как в Pervasive. Есть ли надежда что nrec генерируется триггером?
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: MS SQL + Delphi

Сообщение n0where »

1. А почему не сделать стандартными средствами? без Напа? С другой стороны в MSSQL почемуто не даёт делать update нескольким записям, если одной - то все ок. Если нескольким - ошибка. Спасались через курсор
3. Не надейтесь
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
spark
Местный житель
Сообщения: 478
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: MS SQL + Delphi

Сообщение spark »

paparocii писал(а):Добрый день

Жизнь заставила, в процессе перехода с Pervasive на MS SQL, переношу все хозяйство написанное на Delphi.

Из delphi коннектюсь к MS SQL напрямую с использованием SDAC (для оракла использую ODAC, поэтому выбор пал на SDAC).

Собственно, вопросы:
1. Не получаются DML запросы: на Insert, Update ругается что-то типа:
Сообщение 17750, уровень 16, состояние 0, процедура na_getflagsfast, строка 1
Не удалось загрузить динамическую библиотеку namssql.dll или одну из библиотек, на которые она ссылается. Причина: 1114(Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).).
Сообщение 17750, уровень 16, состояние 0, процедура na_getmultipleinfo, строка 1
Не удалось загрузить динамическую библиотеку namssql.dll или одну из библиотек, на которые она ссылается. Причина: 1114(Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).).
Сообщение 50012, уровень 11, состояние 1, процедура T$KATORG_U, строка 65
Call master..na_getmultipleinfo in T$KATORG_U return an error (NAP: 1, RPC: 1792)
Сообщение 3609, уровень 16, состояние 1, строка 5
Транзакция завершилась в триггере. Выполнение пакета прервано.
Что с этой ошибкой делать - не знаю.

2. Похоже что из-за NAP сервера. Он то работает, то не работает. Очень не стабилен. "Изучаю литературу", пока не понятно из-за чего

3. Nrec при insert запросом в MS SQL будет генерироваться триггером (как в Oracle), или же нужно "вычислять" max(nrec)+1 как в Pervasive. Есть ли надежда что nrec генерируется триггером?
3. Да, Nrec будет выдаваться триггером.

Чтобы делать апдейты групповые, нужно или триггер выключать, а потом включать, или курсором...
spark
Местный житель
Сообщения: 478
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

Re: MS SQL + Delphi

Сообщение spark »

n0where писал(а):1. А почему не сделать стандартными средствами? без Напа? С другой стороны в MSSQL почемуто не даёт делать update нескольким записям, если одной - то все ок. Если нескольким - ошибка. Спасались через курсор
3. Не надейтесь
1. Это так триггеры написаны. При их отключении все апдейтится хорошо.
3. Почему нет? Триггер же нреки выдает. Мы делаем вставку извне без вычисления нреков.
LaaLaa

Re: MS SQL + Delphi

Сообщение LaaLaa »

Если не ошибаюсь то для групповой вставки записей лучше поиспользовать храимые вьюхи. Для каждой таблицы есть созданная в ms sql вьюха.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: MS SQL + Delphi

Сообщение RAJAH »

Похожие проблемы после переустановки napsrv. Галактика стала выдавать "внутреннюю ошибку интерфейса доступа к базе данных". В ms70drv.log сбрасывается множество сообщений типа:

Код: Выделить всё

04.06.2014 14:06:45 [RUSSIA81#USER]:
DECLARE @CurDT DATETIME, @AtlDate INT, @AtlTime INT
SELECT @CurDT=GETDATE()
SELECT @AtlDate=dbo.ToAtlDate(@CurDT), @AtlTime=dbo.ToAtlTime(@CurDT)
INSERT INTO CONTOUREVENTS(ATL_LASTUSER,ATL_OWNER,ATL_ORIGINOFFICE,ATL_LASTDATE,ATL_LASTTIME,ATL_NREC,TYPEEVENT,CCONTOUR,CMODULE,CUSER,COMMENTEVENT) VALUES( ?,?,?,@AtlDate,@AtlTime,?,?,?,?,?,?)
IF @@ERROR=0 AND @@ROWCOUNT>0 SELECT Sys#UL FROM CONTOUREVENTS WHERE ATL_NREC=?
04.06.2014 14:06:45 [RUSSIA81#USER]:
  42000: [Microsoft][ODBC SQL Server Driver][SQL Server]Call master..na_getmultipleinfo in CONTOUREVENTS_I return an error (NAP: 1000, RPC: 1024)
В Query Analyzer запрос также аналогичную ошибку показывает:

Код: Выделить всё

Call na_getallupdelinfo in X$JOURNALCONFIG_U return an error (NAP: 1000, RPC: 0)
chkmssql прогонял на триггеры и хранимки, исправил - не помогло. Что можно попробовать?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: MS SQL + Delphi

Сообщение edward_K »

в 99% смена nap-а порождает необходимость смены MS70DRV.dll
для начала убедитесь что MS70DRV.dll от той же даты или новее и nap соответствует версии Галактики.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: MS SQL + Delphi

Сообщение RAJAH »

ms70drv.dll новее - 5.5.18.1 против 5.5.18 у napsrv.
Вопрос снят: кардинальное решение - удаление базы и восстановление.
Ответить