【问题标题】:Error: "OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC Driver Manager] Data source name not found ..."错误:链接服务器“(null)”的“OLE DB 提供程序“MSDASQL”返回消息“[Microsoft][ODBC Driver Manager] Data source name not found ...”
【发布时间】:2011-02-16 00:37:21
【问题描述】:

如果我执行以下命令:

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 Driver Manager] 数据源名称未找到且无 指定默认驱动程序。

我在 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 机器上运行,但我仍然无法在我的机器上修复此错误。我将使用“批量插入”(请参阅​​下面的 cmets)。

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    解决方案:我刚刚在 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'
        )
    

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

    【讨论】:

    • 感谢您的支持 - 我相信您将来会帮助其他用户。
    • 嘿......至少这改变了我遇到的问题的症状。感谢您抽出宝贵时间发帖。
    • 太棒了!这个问题一直困扰着我。谢谢。
    • 是的!经过数小时的搜索!
    【解决方案2】:

    我刚刚在 x64 Win7 上尝试过它并使它工作。我认为有几个问题。

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

    这行得通:

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

    【讨论】:

    • 该死。我刚试过你的完全相同的字符串,它仍然给出了同样的错误。
    • 您用什么 .csv 文件进行了尝试?我的只有两个词,用逗号分隔,例如:十,四
    • 这很奇怪。如果名称中的 *.txt 和 *.csv 之间没有空格,我得到的错误与您报告的完全相同。
    • @Gravitas:我刚刚尝试了一个只有“十、四”的文件,它可以工作。您得到的错误似乎指向驱动程序本身未被识别(或未正确安装),而不是文件本身未被找到。
    • 我最终选择了“批量插入”来完成这项工作,而且效果非常好。批量插入可能更可靠,因为没有依赖项(它依赖于 Microsoft SQL Server 2008 R2 中包含的功能)。我将把答案奖励给你,因为我只想知道它是否适用于开箱即用的 Win7 x64。我确定如果我重新安装 Win7 x64 它将再次开始工作。话虽如此,互联网上有很多关于这个错误的喋喋不休 - 似乎有很多其他人对这种特殊方法有疑问,没有人真正知道如何解决它。
    猜你喜欢
    • 2016-04-19
    • 2019-06-28
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2014-02-09
    相关资源
    最近更新 更多