我正在尝试将文件插入使用SQL File Streaming的数据库中。当我尝试初始化将要插入的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资源管理器中收到“找不到网络路径”错误。如果我直接在不同环境(测试,生产)中的其他服务器上访问共享,则会收到“访问被拒绝”错误。

最佳答案

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

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

07-24 21:35