我正在使用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--调用失败”。在混合查询的情况下是否可以检索完整的错误详细信息?
答案 0 :(得分:1)
不幸的是,通过ADO,据我所知还没有。
Access数据库引擎不会将错误从ODBC数据源传播到ADO。
您的ADO连接是Access数据库引擎的一个,并且仅接收它引起的错误。
如果需要跟踪此特定的错误,可以通过enabling ODBC tracing来完成用于将Access连接到SQL Server的ODBC连接。跟踪日志应包括SQL Server引发的所有错误,以及Access用于将数据移至SQL Server的查询。
如果您有足够的权限,还可以使用传递查询或与SQL Server的单独ADO连接,在引发错误后使用sp_readerrorlog
查询错误日志。