2010-08-30 129 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