Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос через ADO выполняется 3 раза, как исправить?  [new]
FBoris
Member

Откуда:
Сообщений: 40
Добрый день. Выполняю через подключенный 'Microsoft ActiveX Data Objects 2.7 Library' к SQL Server 2000 запрос из Navision
select 1000

В профайлере вижу

exec sp_reset_connection
go
declare @P1 int
set @P1=0
declare @P2 int
set @P2=98305
declare @P3 int
set @P3=311300
declare @P4 int
set @P4=0
exec sp_cursoropen @P1 output, N'select 1000', @P2 output, @P3 output, @P4 output
select @P1, @P2, @P3, @P4
go
declare @P1 int
set @P1=0
declare @P2 int
set @P2=229378
declare @P3 int
set @P3=294916
declare @P4 int
set @P4=0
exec sp_cursoropen @P1 output, N'select 1000', @P2 output, @P3 output, @P4 output
select @P1, @P2, @P3, @P4
go
SET NO_BROWSETABLE ON
go
SET FMTONLY ON select 1000 SET FMTONLY OFF
go
SET NO_BROWSETABLE OFF
go
select 1000
go

, т.е. запрос select 1000 выполняется несколько раз.
Строка подключения
ConnectionString := 'Provider=SQLOLEDB.1;Password=Пароль;Persist Security Info=True;User ID=Логин;Initial Catalog=
База данных;Data Source=Сервер;
Причем если запрос будет выполнятся минуту через Query Analyzer, то из моей программы получится 3 минуты.
Если вставлять командой insert строчку, то вставится в таблицу несколько строк.

Всё это появляется в профайлере при выполнении команды Open. Как исправить?

К сообщению приложен файл. Размер - 145Kb
25 дек 14, 13:19    [17050873]     Ответить | Цитировать Сообщить модератору
 Re: Запрос через ADO выполняется 3 раза, как исправить?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37051
И при чем здесь MSSQL? Он должен, что ли, уметь выполнять запросы от Navision через один?
25 дек 14, 13:22    [17050898]     Ответить | Цитировать Сообщить модератору
 Re: Запрос через ADO выполняется 3 раза, как исправить?  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
set rs.activeconnection = connection
rs.open sql,,...

не надо передавать параметр connection в метод open, а надо заранее присваиваить
25 дек 14, 13:28    [17050953]     Ответить | Цитировать Сообщить модератору
 Re: Запрос через ADO выполняется 3 раза, как исправить?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Многократно может вызываться из-за особенностей yield, вы лучше на форум по C# обратитесь.
Вы на чтение каждого столбца будете дергать запрос. Проблема в Navision.
25 дек 14, 13:50    [17051109]     Ответить | Цитировать Сообщить модератору
 Re: Запрос через ADO выполняется 3 раза, как исправить?  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
FBoris, запрос после SET FMTONLY ON это не настоящее выполнение, это получение метаданных
25 дек 14, 13:54    [17051138]     Ответить | Цитировать Сообщить модератору
 Re: Запрос через ADO выполняется 3 раза, как исправить?  [new]
Guest123456
Guest
Запрос выполняется всего дважды.
Первый раз мы запрашиваем серверный курсор с определёнными параметрами прокрутки и управления параллелизмом.
Сервер через выходные параметры sp_cursoropen говорит нам, чтобы мы их (параметрами прокрутки и управления параллелизмом) скорректировали.
И повторно курсор открывается уже с указанными сервером параметрами.
25 дек 14, 14:06    [17051225]     Ответить | Цитировать Сообщить модератору
 Re: Запрос через ADO выполняется 3 раза, как исправить?  [new]
FBoris
Member

Откуда:
Сообщений: 40
Да получилось, спасибо большое Konst_One.
25 дек 14, 14:07    [17051235]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить