【问题标题】:SQL Server repeated error with OPENROWSETSQL Server 使用 OPENROWSET 重复错误
【发布时间】:2013-01-05 13:51:49
【问题描述】:

我正在运行以下查询来导入 csv 文件:

SELECT * FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=D:\Documents\;', 'SELECT * from file.csv') AS something

我收到此错误:

OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "(null)".

这是我尝试解决问题的方法,但都不够:

  1. MsSQL 和 IIS 可以访问相关文件夹和文件。他们还可以访问运行 SQL Server 的网络服务的临时文件夹。
  2. 我已使用 sp_configure 启用了即席分布式查询
  3. 我已通过将注册表项 DisallowAdhocAccess 设置为 0 来修复它
  4. 我已安装 Microsoft Access Database Engine 2010 Redistributable

系统是运行 SQL Server 2012 Express 的 Windows 2008 Server,但 SQL Server 2008 也出现了该问题。

在这一点上,任何随机的想法都值得赞赏:)。谢谢!

【问题讨论】:

  • 您是否启用了 Ad Hoc DISTRIBUTED 查询?
  • 确实如此。我已在我的帖子中添加了说明...
  • 如果您尝试使用进程监视器查看,它甚至会尝试打开文件吗?如果是这样,这会产生任何错误吗?

标签: sql-server windows-server-2008


【解决方案1】:

答案很简单,但文档很少:MSDASQL 驱动程序不能很好地与 64 位安装的 SQL Server 一起工作。

this thread 中有更多关于此的信息,但就我而言,“降级”到 32 位实例就足够了。

【讨论】:

    【解决方案2】:

    它有效。只需确保驱动程序的名称与控制面板 ODBC 数据源(64 位)中显示的完全一致。在我的例子中,正确的名称是“'Driver={Microsoft Access Text Driver (*.txt, *.csv)}”,我在我的 Windows 8.1 64 位机器上使用它。

    问候,

    马里亚诺C.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      相关资源
      最近更新 更多