2010-08-30 137 views
4

我試圖將文件插入到使用SQL文件流的數據庫中。當我嘗試初始化將要插入的SqlFileStream對象時,我收到一個文件異常,指出無法找到網絡路徑。SQLFileStream異常「未找到網絡路徑」

在考慮中的代碼如下:

using (SqlFileStream sqlStream = new SqlFileStream(filePathName.Value, fileToken.Value, FileAccess.Write)) 
           { 
            byte[] buffer = new byte[512 * 1024]; // 512Kb 
            int bytesRead = fs.Read(buffer, 0, buffer.Length); 
            while (bytesRead > 0) 
            { 
             sqlStream.Write(buffer, 0, bytesRead); 
             bytesRead = fs.Read(buffer, 0, buffer.Length); 
            } 
           } 

該代碼在第一行失敗,則創建SqlFileStream時。以下是我如何配置FILESTREAM的設置。在數據庫級別,我已將Filestream訪問級別設置爲:「已啓用完全訪問」。

對Transact-SQL訪問啓用FILESTREAM:經過
啓用文件I/O流訪問FILESTREAM:經過
Windows共享名稱:DVDB1FS
允許遠程客戶端啓用流訪問FILESTREAM數據:經過

任何可能導致這種情況的建議都會很棒。我已經在其他環境中成功地使用了完全相同的代碼,所以我知道它必須是某種配置問題。請注意,如果我嘗試訪問Windows共享// servername/DVDB1FS,我還會從Windows資源管理器收到「未找到網絡路徑」錯誤。如果我直接在不同環境中的另一臺服務器上訪問共享(測試,生產),則會收到「訪問被拒絕」錯誤。

回答

3

不同的錯誤消息意味着它的DNS或防火牆問題。確定什麼是filePathName.Value,並嘗試從無法連接的服務器ping它的主機名部分。如果主機名不解決其DNS問題。

它更可能是一個防火牆問題。如果是這種情況see this MSDN article

+1

當我ping通主機名「DV-DB1」,它解析爲10.10.10.10這與在iSCSI陣列相關的IP地址。我最終添加了一個主機條目到system32/drivers/etc/hosts文件,並將其指向服務器的正確IP地址。不知道爲什麼會這樣做,但無論如何,我們有一個解決辦法,直到網絡管理員可以查看它。謝謝! – 2010-08-31 15:47:50

0

我得到了同樣的問題「無法找到網絡路徑」。我認爲這是因爲我試圖使用FileStream和SQL Server身份驗證(而不是Windows/NTFS身份驗證)。

Microsoft文檔注意到:「SQL登錄將不適用於FILESTREAM容器。」

https://msdn.microsoft.com/en-au/library/gg471497%28v=sql.130%29.aspx

下面的Microsoft連接的文章有一些解決方法,但我沒有嘗試。

https://connect.microsoft.com/SQLServer/feedback/details/416460/sql-server-authentication-filestream

相關問題