如何在SQL中获取二进制映像

时间:2016-04-04 14:46:11

标签: c# sql-server database tsql

我可以在c#中使用此函数来获取图像二进制文件

public static byte[] ImageToBinary(string imagePath)
{
            var fileStream = new FileStream(HttpContext.Current.Server.MapPath("~/" + imagePath), FileMode.Open, FileAccess.Read);
            var buffer = new byte[fileStream.Length];
            fileStream.Read(buffer, 0, (int)fileStream.Length);
            fileStream.Close();
            return buffer;
}

但我需要在sql中做同样的事情

我使用此查询

(SELECT * FROM OPENROWSET(BULK N'C:\Users\0000001_computers_415.jpeg', SINGLE_BLOB) AS CategoryImage)

但是我收到了一个错误:

  

Msg 4861,Level 16,State 1,Line 1
  无法批量加载,因为无法打开文件“C:\ Users \ 0000001_computers_415.jpeg”。操作系统错误代码3(系统找不到指定的路径。)。

1 个答案:

答案 0 :(得分:5)

您的SQL Server只能查找自己上下文的文件。您必须将文件复制到SQL Server计算机上的目录中以使用本地权限访问它,或者必须定义共享路径并从那里读取SQL Server。

您的c:\users\...很可能是您自己的本地计算机的驱动器。