SQLFileStream异常“找不到网络路径”

时间:2010-08-30 22:43:51

标签: c# sql sql-server filestream

我正在尝试将文件插入到使用SQL文件流的数据库中。当我尝试初始化将要插入的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配置方式的设置。在数据库级别,我已将文件流访问级别设置为:“已启用完全访问权限”。

为Transact-SQL访问启用FILESTREAM:选中
为文件I / O流访问启用FILESTREAM:选中
Windows共享名称:DVDB1FS
允许远程客户端具有对FILESTREAM数据的流式访问:已选中

关于可能导致这种情况的任何建议都会很棒。我已成功在其他环境中使用这个完全相同的代码而没有问题,因此我知道它必须是某种配置问题。重要的是要注意,如果我尝试访问Windows共享// servername / DVDB1FS,我还会收到Windows资源管理器中的“找不到网络路径”错误。如果我直接在不同环境中的其他服务器上访问共享(测试,生产),则会收到“访问被拒绝”错误。

2 个答案:

答案 0 :(得分:3)

不同的错误消息表示DNS或防火墙问题。确定filePathName.Value是什么,并尝试从无法连接的服务器ping其主机名部分。如果主机名无法解决DNS问题。

更可能是防火墙问题。如果是这种情况see this MSDN article

答案 1 :(得分:0)

我遇到了同样的问题"无法找到网络路径"。我认为这是因为我试图将FileStream与SQL Server身份验证(而不是Windows / NTFS身份验证)一起使用。

Microsoft文档指出:" SQL登录不适用于FILESTREAM容器。"

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

以下Microsoft Connect文章有一些解决方法,但我没有尝试过。

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