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

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

我已经创建了一个传递查询并试图从中调用一个存储过程。

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

ODBC 调用失败”

问题仅出在存储过程上。查询执行良好。

这是我的代码:

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

如果我遗漏了什么,请告诉我?

最佳答案

获取有关“ODBC 调用失败”原因的更多信息。 error 我们可以遍历 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.

当然

The EXECUTE permission was denied on the object 'SAMPLE_TEST', database 'myDb', schema 'dbo'.

更有帮助

ODBC--call failed.

关于sql-server - ODBC 调用存储过程失败 - 通过查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29774178/

相关文章:

vba - 当特定列的单元格更改时显示消息

database - VBA Excel 语法错误查询表达式插入语句中缺少运算符

c# - 从数据集复制到 C# 中的 Access 表?

sql - 检查登录的截断/更改权限

sql - 将整个sql脚本插入变量中

sql - 如何在 SQL 全文 'contains' 函数中转义双引号?

sql - 按输入时对 Access 中的字段进行排序

sql - Varchar(Max) 在 Exec 中不起作用

excel - 在 VBA 中使用 Excel 中的公式创建函数

excel - 无法绕过 SAP GUI 连接中的运行时错误 619