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

sar*_*dly 1 c# t-sql database sql-server

我可以在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;
}
Run Code Online (Sandbox Code Playgroud)

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

我用这个查询

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

但是我收到一个错误:

消息4861,级别16,状态1,行1
无法批量装入,因为无法打开文件"C:\ Users\0000001_computers_415.jpeg".操作系统错误代码3(系统找不到指定的路径.).

Shn*_*ugo 5

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

c:\users\...很可能是你自己的本地机器的驱动器.