SQL Server使用OPENROWSET重复出错

时间:2013-01-05 13:51:50

标签: sql-server windows-server-2008

我正在运行以下查询来导入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服务器的网络服务的临时文件夹。
  2. 我使用sp_configure
  3. 启用了Ad Hoc Distributed Queries
  4. 我已将注册表项DisallowAdhocAccess设置为0
  5. 我已安装Microsoft Access数据库引擎2010可再发行组件
  6. 该系统是运行SQL Server 2012 Express的Windows 2008 Server,但该问题也已与SQL Server 2008一起复制。

    此时任何随机的想法都值得赞赏:)。谢谢!

2 个答案:

答案 0 :(得分:1)

答案结果很简单,但非常缺乏文档:MSDASQL驱动程序与64位SQL Server安装无法很好地协同工作。

this thread中有更多相关信息,但就我的目的而言,“降级”到32位实例是一个充分的解决方案。

答案 1 :(得分:1)

它有效。只需确保驱动程序的名称是完全正确的,如控制面板ODBC数据源(64位)中所示。在我的情况下,正确的名称是"' Driver = {Microsoft Access Text Driver(* .txt,* .csv)}",我在我的机器中使用Windows 8.1 64位。

此致

MarianoC。