views:

39

answers:

1

I am trying to insert a file into a database which uses SQL File Streaming. When I try to initialize the SqlFileStream object that I will be inserting with I receive a File Exception stating that the network path could not be found.

The code in question is below:

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);
                                    }
                                }

The code fails at the first line when SqlFileStream is created. Below are my settings on how FILESTREAM is configured. At the database level I have set the Filestream access level to: "Full access enabled".

Enable FILESTREAM for Transact-SQL access: Checked
Enable FILESTREAM for file I/O streaming access: Checked
Windows share name: DVDB1FS
Allow remote clients to have streaming access to FILESTREAM data: Checked

Any suggestion on what may be causing this would be great. I have successfully used this exact same code in other environments without issue, so I know it must be a configuration issue of some sort. It may be important to note that if I try to access the windows share //servername/DVDB1FS I also receive a "Network path was not found" error from Windows Explorer. If I access the share directly on a different server in a different environment (Test, Production) I receive an "Access is denied" error.

A: 

The different error messages mean its either a DNS or firewall issue. Determine what filePathName.Value is, and try to ping the hostname part of it from the server you cannot connect from. If the host name does not resolve its a DNS issue.

Its more likely a firewall issue. If that is the case see this MSDN article.

Justin Dearing
When I pinged the host name "DV-DB1" it resolved to 10.10.10.10 which is the IP address associated with the iSCSI array. I ended up adding a host entry to the system32/drivers/etc/hosts file and pointed it to the correct IP address for the server. Not sure why this was behaving this way, but at any rate we have a work around until the network administrator can look into it. Thanks!
Dan Waterbly