在 SQL Server 2012 中作为 Varbinary(MAX) 的照片在 Access 2010 中导致错误 502753

Posted

技术标签:

【中文标题】在 SQL Server 2012 中作为 Varbinary(MAX) 的照片在 Access 2010 中导致错误 502753【英文标题】:Photos as Varbinary(MAX) in SQL Server 2012 causes error 502753 in Access 2010 【发布时间】:2015-06-15 20:14:36 【问题描述】:

我有一个 Access 2010 odbc 前端和一个 SQL Server 2012 后端。我的图像 (.bmp) 存储为 Varbinary(Max)。当我在 Access 表单中使用绑定的对象框插入图像时,图像会显示在表单上并完美报告。我有大量图片要带入 SQL,所以我在 SQL Server Management Studio 中使用了以下代码:

UPDATE dbo.Photos_Observations 
SET [Photo] = (SELECT BulkColumn 
FROM Openrowset( Bulk '\\serverIP\servername\020.BMP', Single_Blob) as MyImage) 
WHERE PhotoTableID =391

这很好,所有 600 多张图片现在都在 SQL Server 中。但是我以这种方式添加的那些不会出现在我的访问表单或报告中。当我单击绑定对象框架时,我收到错误号 502753“Microsoft Access 与 OLE 服务器或 ActiveX 控件通信时出现问题。”

为什么它以一种方式工作而不是另一种?如何让图像显示?

【问题讨论】:

【参考方案1】:

您似乎使用 T-SQL 将 BMP 文件中的原始二进制图像数据直接批量插入到 VARBINARY 列中。因此,这些图像没有通过 Access 表单上的绑定对象框架插入图像时添加的“OLE 包装器”。

请参阅my answer to a related question,了解自动插入“OLE 包装”图像的方法。 (这有点笨拙,但仍然比手动完成要好。)

另一种方法是使用图像控件而不是绑定对象框架,并将图像存储为原始二进制数据而不是“OLE 包装”对象。这正日益成为处理存储在数据库中的图像的首选方式。 (OLE 对象可能很麻烦,尤其是在使用 Access 以外的应用程序时。)

【讨论】:

感谢您的快速回复!有没有办法以编程方式将 OLE 包装器添加到我现有的数据中? 如果您仍然有 BMP 文件,您可以从 SQL 表中删除原始二进制数据,然后使用我的其他答案中所述的访问自动化通过绑定对象框架重新插入图像。否则,您可以在从表中删除二进制数据之前,将原始二进制数据从 SQL 表中转储到单独的 BMP 文件中。

以上是关于在 SQL Server 2012 中作为 Varbinary(MAX) 的照片在 Access 2010 中导致错误 502753的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 2012 中作为 Varbinary(MAX) 的照片在 Access 2010 中导致错误 502753

在 SQL Server 中插入点?

SQL Server基础操作(此随笔仅作为本人学习进度记录六 !--程序块和循环)

Windows?Server2016下安装SQL?Server2012集群

如何连接到 SQL Server Compact 3.5 文件作为 Visual Studio 2012 中的数据源?

在 SQL Server 2012 中创建以日期为范围分区的表