2013-03-11 147 views
1

我已經創建了一個名爲Public的文件夾,並取名爲C:\驅動器的根目錄,並與「Everyone」共享。我也給了NETWORK SERVICE讀取權限。但是,當我發佈的SQL Server 2008 R2以下查詢,錯誤是「\\ FOO \ PUBLIC \ my.csv」不是一個有效的路徑:使用openrowset的無效UNC路徑

SELECT * 
FROM OPENROWSET (
    'Microsoft.ACE.OLEDB.12.0', 
    'Text;Database=\\FOO\public\my.csv; ', 
    'SELECT * from my.csv' 
    ) 

ACE的64位驅動程序安裝。我在Windows 7 x64上。這是一個64位版本的SQL Server。我的電腦的機器名稱是「FOO」。它不適用於簡單的c:\public路徑。

OLE DB提供程序 「Microsoft.ACE.OLEDB.12.0」 鏈接服務器 「(空)」 返回了消息「 '\ FOO \ PUBLIC \ my.csv' 不是一個有效的路徑。確保 那路徑名拼寫正確,並且您已連接到文件所在的服務器 「。

我已經配置了服務器,以便:

exec sp_configure 'show advanced options', 1 
RECONFIGURE; 
exec sp_configure 'Ad Hoc Distributed Queries', 1 
RECONFIGURE; 

還有什麼檢查?謝謝

+0

如果這是一個64位/提供商的問題,你會得到一個提供商的錯誤消息,但你不是。你在這裏的路徑是相對於你的SQL Server安裝而不是你的客戶端。你的服務器和客戶端在同一臺機器上嗎? – 2013-03-12 06:26:17

+0

我已經嘗試把該文件夾放在服務器和我的開發PC的根目錄上,並試圖從兩個SSMS這個查詢。是否包含在「每個人」中的內置O/S身份像NT SERVICE? – Tim 2013-03-12 11:06:04

+0

當你輸入'EXEC master..xp_cmdshell'DIR \\ FOO \ public''時會發生什麼。 Yuo可以使用它來「查看」SQL Server看到的內容。另外我注意到在你的錯誤信息中FOO之前只有一個反斜槓 - 這是一個錯字還是錯誤信息? – 2013-03-12 23:07:03

回答

0

問題已修復。該數據庫應該只指向該文件夾,不包括該文件:

 'Text;Database=\\FOO\public; '