2011-02-16 58 views
4

如果我執行以下命令:錯誤:「OLE DB提供程序‘MSDASQL’鏈接服務器‘(空)’返回了消息‘[微軟] [ODBC驅動程序管理器]未發現數據源名稱......’

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] Data source name not found and no default driver specified.

我運行Microsoft SQL Server 2008 R2在Win 7 X64的我也嘗試過在Windows Vista上的32倍,同樣的錯誤。 。

問題:

  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機器上運行,但我仍然無法在我的機器上修復此錯誤。我會用「批量插入」(請參閱​​下面的評論)。

回答

1

我剛剛在64位Win7上試了一下,並使其工作。我認爲有幾個問題。

  1. 我相信你有*.txt;*.csv
  2. 之間添加空格 不包括與文件名

這工作路徑:

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

織補。我剛剛嘗試過完全相同的字符串,但它仍然給出了相同的錯誤。 – Contango 2011-02-16 00:57:22

+0

你試過什麼.csv文件?礦裏只有兩個字,用逗號隔開,例如:十,四 – Contango 2011-02-16 00:59:26

15

解決方案:我剛剛在Win7 x64機器上花了好幾個小時來解決了這個問題,並且很難在網上找到一個好答案,我想我遲遲不會爲此線索做出貢獻。

在我的計算機(Win7,x64,SQL Server 2008 R2)上,管理工具>數據源(ODBC)>驅動程序顯示沒有名爲「Microsoft Text Driver」的驅動程序。但有一個驅動程序標記爲「Microsoft Access Text Driver(* .txt,* .csv)」

我能夠在類似於原始提問者的代碼中包括括號(*。 csv)用逗號和空格,而不是分號。它的工作。

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

請注意,指定驅動器的語法必須完全相同。我可以證明這一點,因爲我經歷了幾次錯誤的迭代。

相關問題