【问题标题】:"Executing SQL directly; no cursor." error in Access 2007 VB code“直接执行 SQL;没有游标。” Access 2007 VB 代码中的错误
【发布时间】:2012-07-29 19:16:56
【问题描述】:

我有一个存储过程,我从 Access 2007 数据库中的 VB 代码运行。通常代码运行良好;但是有时我会收到以下错误:

错误 #-2147217900 由 Microsoft OLE DB 提供程序生成 ODBC 驱动程序 [Microsoft][SQL Server Native Client 10.0][SQL Server]直接执行SQL;没有光标。

我已经对此进行了相当多的研究,但我没有想出太多。我看到有两个来源:一个原因是权限不足,另一个与存储过程本身的问题有关。我知道权限不是问题。此外,无论我运行多少次,存储过程在管理工作室中都运行得非常好。

请帮忙!!!

【问题讨论】:

    标签: sql-server-2008 ms-access stored-procedures vb6 ms-access-2007


    【解决方案1】:

    与同事一起发现了问题。从根本上说,核心问题是真正的问题被通用错误消息混淆了。在这种情况下,“无光标”错误。诀窍是弄清楚实际的错误消息是什么。考虑到这一点,一位同事将 ODBC 驱动程序从我的帖子中提到的“SQL Server Native Client 10”更改为较旧的 MS SQL Server 驱动程序;虽然较新的版本 10 混淆了错误,但较旧的驱动程序揭示了存储过程中的实际错误(由于我自己的测试,我认为最初不是这种情况)。所以最重要的是,有两点可以从中得到:首先,如果您遇到此错误,请尝试上述技巧以尝试揭示实际错误;第二个注意事项,在这种情况下,真正的问题是驱动程序隐藏了编程问题。

    【讨论】:

    • 这里的情况相同。试过这个解决方案,我能找到的唯一旧版本的原生客户端是9,我的平台(win8.1)不支持这个版本。还有其他技巧可以揭示真正的错误吗?
    • 对。就我而言,真正的问题是一个空的 IN 范围。 WHERE UserId IN ()
    【解决方案2】:

    当您收到此错误时,您应该弄清楚将哪些参数传递给存储过程。打印出您传递给存储过程对象的变量。我会特别注意非字母数字字符,例如单引号或转义字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多