Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Трассировка OLE DB SQL Server / 17 сообщений из 17, страница 1 из 1
11.04.2005, 14:06:44
    #33008266
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Работаю с SQL Server из VB6 через ADODB.
ADO возвращает ошибку
-2147217887(80040e21) Multiple-step OLE DB generated errors и т.д.
Возможен ли перехват ошибок OLE DB средствами трассировки SQL Sеrver?
...
Рейтинг: 0 / 0
11.04.2005, 14:11:17
    #33008282
HungryEars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
А какая версия ADO?
...
Рейтинг: 0 / 0
11.04.2005, 14:20:46
    #33008320
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Похоже на 2.8. Документация установлена от 2.8.
А как можно определить версию самого ADO?

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
11.04.2005, 14:28:09
    #33008364
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
VB показывает референции на 2.0, 2.1, 2.5, 2.6, 2.7, 2.8.
Считаем 2.8.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
11.04.2005, 14:31:49
    #33008377
HungryEars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Версию можно посмотреть в реестре:
Код: plaintext
HKEY_CLASSES_ROOT\ADODB.Connection\CurVer

Что касается трассировки, то в профайлере есть такое событие - OLEDB Error. Но не уверен, поможет ли поймать вашу ошибку.
У меня такая же ошибка года 3 тому назад проявлялась при работе с MSSQL 2000 через ADO из Delphi. Только вот с чем была связана проблема и как я ее решил - убей не помню ) Киньте свой SQL, может вспомню.
...
Рейтинг: 0 / 0
11.04.2005, 14:36:01
    #33008393
tpg
tpg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Va1entin
Похоже на 2.8. Документация установлена от 2.8.
А как можно определить версию самого ADO?

Posted via ActualForum NNTP Server 1.1
http://support.microsoft.com/default.aspx?kbid=301202&product=mdac
...
Рейтинг: 0 / 0
11.04.2005, 14:53:36
    #33008463
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Dim KodNmkl1 As Long
    Dim NameNMKL1 As String

    ConnectToDB
    
    'On Error GoTo ErrH:
    
    Set cmd = CreateObject("ADODB.Command")
    cmd.CommandText = "get_****"
    cmd.CommandType = 4
    cmd.Parameters.Append cmd.CreateParameter("@KodGruza", 3, 1, 4, CLng(KodGruza))
    cmd.Parameters.Append cmd.CreateParameter("@level", 3, 1, 4, CLng(1))
    Set cmd.ActiveConnection = Con
    
    Set rs = CreateObject("ADODB.Recordset")
    Set rs.Source = cmd
    rs.CursorType = 3 'adOpenStatic
    rs.Open
    
    KodNmkl1 = rs("ID")
    NameNMKL1 = rs("Name")
    
        
    rs.Close
    Set rs = Nothing
    Set cmd = Nothing
    
    DisconnectDB
    

Ошибка возникает на rs.Open.
ConnectToDB и DisconnectDB работают в аналогичных процедурах.
Аналогичные процедуры таким же образом возвращающие данные работают.
Set nocount on в процедуре установлен.
Все права на выполнение установлены.
...
Рейтинг: 0 / 0
11.04.2005, 14:55:57
    #33008468
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Ага, т.е. это даже не басик, это вбскрипт. Ну а что на сервер приходит? В смысле, в профайлере какой код?
...
Рейтинг: 0 / 0
11.04.2005, 14:58:35
    #33008483
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Это VB6.

Profiler показывает SQL-запрос вызова процедуры с параметрами.
exec get_Code 46217, 1

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
11.04.2005, 15:13:11
    #33008537
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Va1entinЭто VB6.
В таком случае я не понимаю, зачем вы используете позднее связывание. Вот напиши вы так:
Код: plaintext
Set rs = New ADODB.Recordset
и кучи проблем сразу же смогли бы избегнуть. Ну да ладно, не тот форум, все-таки.

У объекта ADODB.Connection есть коллекция Errors, вот по ней пробегитесь в цикле For Each ... Next - там все, что вернул MSSQL, и будет.
...
Рейтинг: 0 / 0
11.04.2005, 15:19:26
    #33008568
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Использую позднее связывание,
потому что с ранним уже были какие-то проблемы,
точно уже не помню, какие, надо разбираться в старом коде.

Пробежался уже и по ADODB.Errors.
Коллекция ADODB.Errors возвращает одну ошибку,
текст и номер которой я уже приводил.
-2147217887(80040e21)

Может кто-нибудь всё-таки знает как разобраться с ошибками ADO DB...
Заранее спасибо :-)

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
11.04.2005, 15:20:56
    #33008575
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Sorry, не тот форум!

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
11.04.2005, 15:23:10
    #33008586
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Использую позднее связывание,
потому что с ранним уже были какие-то проблемы,
точно уже не помню, какие, надо разбираться в старом коде.

Пробежался уже и по ADODB.Errors.
Коллекция ADODB.Errors возвращает одну ошибку,
текст и номер которой я уже приводил.

-2147217887(80040e21)


Может кто-нибудь всё-таки знает как разобраться с ошибками ADO DB...
Заранее спасибо :-)
...
Рейтинг: 0 / 0
11.04.2005, 15:40:05
    #33008643
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
OLE DB.
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
11.04.2005, 15:44:57
    #33008662
HungryEars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Я бы попробовал повызывать ту же хранимую процедуру с теми же параметрами ("exec get_Code 46217, 1") другими способами. Для начала - в Query Analyser, потом из VB через ADODB.Connection.Execute(). Интересно, проявится ли ошибка.
MSDN смотрели? Вот статейка оттуда, может поможет:
...
Рейтинг: 0 / 0
11.04.2005, 17:26:13
    #33008984
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
         Set rs = New ADODB.Recordset
          rs.CursorLocation = adUseClient
 100      Set cmd = New ADODB.Command
 110      set cmd.ActiveConnection=con
 120      cmd.CommandType = adCmdStoredProc
 140      Set p = cmd.Parameters
          cmd.Parameters.Append cmd.CreateParameter("@KodGruza", adInteger, adParamInput, , CLng(KodGruza))
          cmd.Parameters.Append cmd.CreateParameter("@level", adInteger, adParamInput, ,  1 )
 190      rs.Open cmd, , adOpenStatic, adLockReadOnly

    KodNmkl1 = rs!ID
    NameNMKL1 = rs!Name
...
Рейтинг: 0 / 0
11.04.2005, 18:04:10
    #33009113
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трассировка OLE DB SQL Server
Спасибо за ответы.
Ошибка крылась в тексте процедуры (её писал не я).
В процедуре формировался динамический запрос,
поэтому когда процедура вызывалась под логином конечного пользователя
из скомпилированного кода, возникали проблемы с правами
на выборку из таблиц, используемых в динамическом запросе.
После раздачи соотвествующих прав на выборку данных
из таблиц всё заработало так как и было первоначально задумано.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Трассировка OLE DB SQL Server / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]