1

我正在运行以下查询来导入 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 启用了 Ad Hoc 分布式查询
  3. 我已通过将注册表项 DisallowAdhocAccess 设置为 0 来修复它
  4. 我已安装 Microsoft Access Database Engine 2010 Redistributable

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

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

4

2 回答 2

2

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

在此线程中有更多关于此的信息,但出于我的目的,“降级”到 32 位实例是一个足够的解决方案。

于 2013-01-08T01:26:14.807 回答
1

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

问候,

马里亚诺 C.

于 2014-08-08T15:43:19.133 回答