【问题标题】:Using Parameters when connecting SQL Server query to Excel将 SQL Server 查询连接到 Excel 时使用参数
【发布时间】:2016-05-21 10:34:00
【问题描述】:

过去在将 Access 查询连接到 Excel 时,我曾多次这样做,但现在当我尝试使用 SQL Server 查询执行此操作时,我收到一条错误消息

[Microsoft][ODBC SQL Sever Driver]参数号无效

在我什至可以为参数赋值之前。

收到此错误消息后,我开始在网上四处寻找答案,结果发现了这篇文章here。我遵循了这些步骤,这基本上就是我正在做的事情,但我仍然得到同样的错误。这篇文章已经有几年的历史了,所以我不确定自 Excel 2016(我当前的版本)发布以来情况是否发生了变化。

这是不使用 VBA 就无法完成的事情吗?

只是总结一下我的步骤,这就是我所做的:

  • 来自其他来源 > 来自 Microsoft Query
  • 从 MS 查询提示中选择数据库 > 单击 SQL 按钮
  • 粘贴 SQL > 单击返回数据按钮
  • 在“连接属性”窗口中单击“定义”> 用 ? 交换标准代码在命令文本中
  • 点击确定

【问题讨论】:

标签: sql-server excel


【解决方案1】:

我也遇到了这个问题,事实证明,因为我在要执行的过程周围包含了方括号,所以它似乎认为它是一个参数。例如 exec dbo.[myproc] @foo=? 只是更改为... 执行 dbo.myproc @foo=? 工作正常。 我认为在幕后将参数放在一个数组中,而 sql 中的方括号使它感到困惑。希望这可以帮助。很可能是sql native client 11没有以同样的方式处理params,所以你绕过了这个问题。

【讨论】:

  • 这是真正的解决方案。我们可以继续使用非常简单的默认“SQL Server”驱动程序。
【解决方案2】:

看来我可能已经找到了问题所在。通过 MS Query 进行初始连接时,系统会要求您选择数据源。显然有两个 SQL Server 选项,一个名为 SQL Server,另一个名为 SQL Server Native CLient 11.0。最初我选择了SQL Server,在尝试了多种方法来解决这个问题后,我从MS Query中完全删除了数据源,然后重新开始,这次我选择了SQL Server Native Client 11.0,它完全可以正常工作。我不完全确定两者之间的区别是什么,但似乎有所不同。

【讨论】:

    猜你喜欢
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多