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

问题描述 投票:4回答:2

如果我执行以下命令:

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

...然后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

更新2:

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

sql sql-server tsql
2个回答
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')

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'
    )

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

© www.soinside.com 2019 - 2024. All rights reserved.