Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server中查看存储在Varbinary(MAX)中的文件_Sql Server_Database_Tsql_Ms Access_File Io - Fatal编程技术网

Sql server 在SQL Server中查看存储在Varbinary(MAX)中的文件

Sql server 在SQL Server中查看存储在Varbinary(MAX)中的文件,sql-server,database,tsql,ms-access,file-io,Sql Server,Database,Tsql,Ms Access,File Io,假设我在varbinary(max)字段中插入了一个文件,如下所示: CREATE TABLE myTable ( FileName nvarchar(60), FileType nvarchar(60), Document varbinary(max) ) GO INSERT INTO myTable(FileName, FileType, field_varbinary) SELECT 'Text1.txt' AS FileN

假设我在
varbinary(max)
字段中插入了一个文件,如下所示:

CREATE TABLE myTable
(
      FileName nvarchar(60),
      FileType nvarchar(60), 
      Document varbinary(max)
)
GO

INSERT INTO myTable(FileName, FileType, field_varbinary)
    SELECT 
        'Text1.txt' AS FileName, 
        '.txt' AS FileType,
        * 
    FROM 
        OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document
GO
当然,我的文件现在看起来像这样:

0xFFD8FFE000104A46494600010101004800....
是否有一种简单而优雅的方法来检索此文件


我的首选是立即在临时文件夹中打开它,而不是保存然后查看和删除。在MS Access中,这就像使用附件字段并双击上载/下载一样简单。

由于SSMS中没有用于此任务的内置功能,因此我通常编写一个简单的LINQPad脚本,用于提取我的varbinary列并将其写入文件系统

大概是这样的:

var结果=来自myTable中的p
其中p.ID==//你在这里的情况
选择p;
foreach(结果中的var项目)
{ 
File.writealBytes(“C:\\”+item.FileName+item.FileType,item.Document.ToArray());
}
我正在使用C#和ASP.NET,最后我使用了一个通用处理程序来完成这项工作,后来在我的网站项目的其他地方链接到它:

public class ImageProvider : IHttpHandler {
    public string connString = "...";

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "image/jpeg";

        string sqlSelectQuery = "select img from table"
        SqlConnection conn = new SqlConnection(connString);
        conn.Open();
        SqlCommand cmd = new SqlCommand(sqlSelectQuery, conn);

        byte[] img = (byte[])cmd.ExecuteScalar();
        context.Response.BinaryWrite(img);

    }

SQL Server不是客户端应用程序。您需要一个可以打开文件的应用程序。只是在sql server中查询它是行不通的。是的,我知道。。。你能提供一个解决方案吗?我怎么能做到?我不知道你在用什么应用程序。