Leer Blob Varbinary SQL de la base de datos

Estoy trabajando en guardar archivos en sql blob en una columna varbinary (max), y ahora tengo el lado seguro de las cosas funcionando (creo).

Lo que no puedo entender es cómo leer los datos, dado que estoy recuperando mis valores de DB utilizando un procedimiento almacenado, debería poder acceder a los datos de la columna como ds.Tables [0] .Rows [0] [ "blobData"]; Entonces, ¿es necesario que tenga un SQLCommand, etc. como he visto en ejemplos como el siguiente:

private void OpenFile(string selectedValue)
{
    String connStr = "...connStr";
    fileName = ddlFiles.GetItemText(ddlFiles.SelectedItem);

    using (SqlConnection conn = new SqlConnection(connStr))
    {
        conn.Open();
        using (SqlCommand cmd = conn.CreateCommand())
        {
            cmd.CommandText = "SELECT BLOBData FROM BLOBTest WHERE testid = " + selectedValue;

            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    int size = 1024 * 1024;
                    byte[] buffer = new byte[size];
                    int readBytes = 0;
                    int index = 0;

                    using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
                    {
                        while ((readBytes = (int)dr.GetBytes(0, index, buffer, 0, size)) > 0)
                        {
                            fs.Write(buffer, 0, readBytes);
                            index += readBytes;
                        }
                    }
                }
            }
        }
    }

¿Hay una manera más simple de hacer esto cuando puedo acceder a la columna que necesito sin el comando sqlcommand?

Espero haber sido lo suficientemente claro en mi pregunta, si no es así, ¡pregunte y elaboraré!

ACTUALIZAR:

La situación ahora es esta: tengo el valor de la columna blobData devuelto por mi procedimiento almacenado, y puedo pasar esto a una secuencia de memoria y llamar a 'LoadDocument (memStream); sin embargo, esto da como resultado un texto improvisado en lugar de mostrar mi archivo real.

Mi pregunta ahora es si hay una manera de obtener la ruta completa, incluida la extensión de archivo de un archivo almacenado en un Blob SQL. Actualmente estoy buscando usar una Filetable para esto con la esperanza de poder obtener la ruta completa.

ACTUALIZACIÓN 2:

Traté de crear un archivo temporal y leer esto en vano (todavía galimatías)

                string fileName = System.IO.Path.GetTempFileName().ToString().Replace(".tmp", fileExt);

            using (MemoryStream myMemoryStream = new MemoryStream(blobData, 0, (int)blobData.Length, false, true))
            {
                using (FileStream myFileStream1 = File.Create(fileName))
                {
                    myMemoryStream.WriteTo(myFileStream1);

                    myMemoryStream.Flush();
                    myMemoryStream.Close();

                    myFileStream1.Flush();
                    myFileStream1.Close();

                    FileInfo fi = new FileInfo(fileName);

                    Process prc = new Process();
                    prc.StartInfo.FileName = fi.FullName;
                    prc.Start();
                }
            }

Saludos, H

Respuestas a la pregunta(3)

Su respuesta a la pregunta