错误:"OLE DB提供程序"MSDASQL"用于链接服务器"(null)"返回消息"[Microsoft] [ODBC驱动程序管理器]未找到数据源名称..."

Con*_*ngo 4 sql t-sql sql-server

如果我执行以下命令:

select 
    * 
from 
    OpenRowset (
        'MSDASQL',
        'Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir=C:\;',
        'select top 10 * from C:\x.csv'
    )
Run Code Online (Sandbox Code Playgroud)

...然后Microsoft SQL Server Management Studio响应:

[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序.

我在Win 7 x64上运行Microsoft SQL Server 2008 R2.我也在Windows Vista x32上试过它,同样的错误.

问题:

  1. 有没有人在Win 7 x64上成功运行此命令?
  2. 你们中的任何人都知道可能导致T-SQL命令失败的原因吗?

更新1:

如果您收到提及"即席查询"的错误,请运行以下命令以消除它:

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
Run Code Online (Sandbox Code Playgroud)

更新2:

它适用于开箱即用的Win7 x64机器,但我仍然无法在我的机器上修复此错误.我会选择"批量插入"(请参阅​​下面的评论).

小智 15

解决方案:我刚刚在Win7 x64机器上花了几个小时来解决这个问题,而且很难在网上找到一个好的答案,我以为我会在这个问题上为这个问题做出贡献.

在我的计算机(Win7,x64,SQL Server 2008 R2)上,管理工具>数据源(ODBC)>驱动程序,不显示名为"Microsoft Text Driver"的驱动程序.但是有一个标有"Microsoft Access Text Driver(*.txt,*.csv)"的驱动程序

我能够在代码中更改驱动程序名称,类似于原始提问者包含括号(*.txt,*.csv)的逗号和空格,而不是分号.它奏效了.

select 
    * 
from 
    OpenRowset (
        'MSDASQL',
        'Driver={Microsoft Access Text Driver (*.txt, *.csv)};DefaultDir=C:\;',
        'select top 10 * from C:\x.csv'
    )
Run Code Online (Sandbox Code Playgroud)

请注意,指定驱动器的语法必须完全相同.我可以担保,因为我经历了几次错误的迭代.


Mar*_*ins 1

我刚刚在 x64 Win7 上尝试过并成功运行。我认为有几个问题。

  1. 我相信你必须在*.txt;和之间添加一个空格*.csv
  2. 不要在文件名中包含路径

这有效:

select * from OpenRowset('MSDASQL', 
         'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=c:\;', 
         'select top 10 * from x.csv')
Run Code Online (Sandbox Code Playgroud)