ODBC调用与存储过程失败 - 通过查询

时间:2015-04-21 13:50:56

标签: sql-server vba ms-access stored-procedures linked-tables

我创建了一个pass through查询并尝试从中调用存储过程。

我能够成功地在sql server数据库上执行查询但是当涉及到存储过程时,我收到的错误是:

ODBC call Failed"

问题仅在于存储过程。查询正在执行。

这是我的代码:

Dim qdf As DAO.QueryDef, rst As ADODB.Recordset
Dim DatabaseName As String
Dim Server As String
ServerName = "XXXX"
DatabaseName = "XXX"
Set qdf = CurrentDb.CreateQueryDef("")
 strConnectionString = "ODBC;DRIVER={sql server};" & _
        "DATABASE=" & DatabaseName & ";" & _
        "SERVER=" & ServerName & ";" & _
        "Trusted_Connection=YES;"
qdf.Connect = strConnectionString
qdf.SQL = " EXEC [dbo].[SAMPLE_TEST]"
qdf.ReturnsRecords = True
Set rst = qdf.OpenRecordset
Debug.Print rst!RecordCount
rst.Close
Set rst = Nothing

如果我遗漏了任何东西,请告诉我?

2 个答案:

答案 0 :(得分:5)

获取有关“ODBC - 调用失败”原因的更多信息。错误我们可以遍历DBEngine.Errors集合,看看是否有其他消息可能更具描述性。例如,使用代码

    qdf.Connect = strConnectionString
    qdf.SQL = " EXEC [dbo].[SAMPLE_TEST]"
    qdf.ReturnsRecords = True
    On Error GoTo oops
    Set rst = qdf.OpenRecordset
    Debug.Print rst!RecordCount
    rst.Close
    Set rst = Nothing
    Exit Sub
oops:
    Dim dbeError As Error
    For Each dbeError In DBEngine.Errors
        Debug.Print "(" & dbeError.Number & "): " & dbeError.Description
    Next
End Sub

我们可能会在VBA立即窗口中看到以下内容:

(229): [Microsoft][ODBC SQL Server Driver][SQL Server]The EXECUTE permission was denied on the object 'SAMPLE_TEST', database 'myDb', schema 'dbo'.
(3146): ODBC--call failed.

当然

  

对象'SAMPLE_TEST',数据库'myDb',架构'dbo'上的EXECUTE权限被拒绝。

比仅仅

更有帮助
  

ODBC - 调用失败。

答案 1 :(得分:0)

再次查看您的代码。你没有运行qry

你需要做qry.execute吗?