Получить полную информацию об ошибке сервера MS SQL для смешанного запроса MS Access ADO - PullRequest
1 голос
/ 14 марта 2019

Я выполняю запрос, используя ADO:

Dim connLocal As ADODB.Connection

    Set connLocal = CurrentProject.Connection

    strSQL = "INSERT INTO dbo_tbl_ErrorLog SELECT tbl_ErrorLog.* FROM tbl_ErrorLog;"

    On Error GoTo ErrorSQL
    connLocal.Execute strSQL
    .....
ErrorSQL:
    lErrNo = Err.Number
    strErrDesc = Err.Description
    If InStr(1, strErrDesc, "ODBC") Then
        Dim i As Long
        Dim strErr As String
        For i = 0 To connLocal.Errors.Count - 1
            strErrDesc = strErrDesc & vbCrLf & connRemote.Errors(i).Number & " - " & connLocal.Errors(i).Description
        Next i
    End If
    .....

В запросе таблица dbo_tbl_ErrorLog связана с таблицей MS SQL, tbl_ErrorLog - связана с таблицей MS Access.

В случае ошибки SQL-запроса я получаю сообщение об ошибке:

-2147467259 - ODBC - сбой вызова.

И когда я пытаюсь получить подробности об ошибке, коллекция connLocal.Errors содержит только один элемент "ODBC - сбой вызова". Можно ли получить полную информацию об ошибке в случае смешанного запроса?

1 Ответ

1 голос
/ 14 марта 2019

Через ADO, к сожалению, не так далеко, как я знаю.

Механизм базы данных Access не передает ошибки из источников данных ODBC в ADO.

Ваше соединение ADO одно с Access Database Engine, и оно получает только те ошибки, которые оно вызывает.

Если вам нужно отследить эту конкретную ошибку, вы можете сделать это, включив трассировку ODBC для соединения ODBC, которое вы используете для подключения Access к SQL-серверу. Журнал трассировки должен включать все ошибки, выдаваемые SQL Server, а также запросы, которые Access использует для перемещения данных на сервер SQL.

Если у вас есть достаточные разрешения, вы также можете запросить журнал ошибок с помощью sp_readerrorlog после возникновения ошибки, либо используя сквозной запрос, либо отдельное соединение ADO с SQL Server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...