背景:我们有一个旧的(但业务关键型)SQL Server数据库,带有MS Access ADP前端;这最初是从一系列Access数据库升级到SQL Server。
该数据库可跟踪客户的有害物质,并存储大量图像。这些图像从MS Access插入,并作为OLE对象放入数据库。
问题是:
我的问题是:您建议将这些膨胀对象转换回简单的JPEG格式?一旦我们这样做,我们最终可以将我们的前端从Access迁移到一个简单的基于Web的系统,我们的备份时间将再次变得易于管理!
答案 0 :(得分:5)
从这里获取* .bas文件http:http://stackoverflow.com/Content/img/wmd/ul.png//www.access-im-unternehmen.de/index1.php?BeitragID=337&id=300(不幸的是它是德语)。
它使用MS的GDI + lib(包含在Win标准安装中)从/来自Access OLE导入/导出图片。
界面的粗略翻译:
答案 1 :(得分:1)
答案 2 :(得分:1)
使用Access MVP Stephen Lebans ExtractInventoryOLE工具从表中提取OLE对象以分隔文件。
http://www.lebans.com/oletodisk.htm
根据Lebans:“不需要用作OLE服务器的原始应用程序来插入对象。支持所有MS Office文档,PDF,MS Photo Editor,MS Paint和Paint Shop Pro插入的所有图像。支持提取PACKAGE类,包括原始文件名。“
此外,Access 2007比以前版本的历史BMP格式更有效地存储OLE对象,因此如果您从SQL的600 + GB存储转换它,您将拥有更小的存储空间并能够保留Access应用程序服务器访问2007 accdb格式。您的备份时间是可管理的,您无需花时间将Access前端转换为Web前端。
答案 3 :(得分:0)
我认为你的数据库变得如此臃肿的原因是,JPG也被存储为“OLE对象”结构中的位图,或者我已经看到了,这取决于插入JPEG的方法。
这不是最佳选择,但是:对于数据库中的每个图像,我都会以编程方式创建一个仅包含图像的虚拟.doc,然后通过OpenOffice转换传递它,并从生成的OpenOffice文档的images子文件夹中提取JPEG (这是一个ZIP文件)。
然后我会用原始JPEG数据替换数据库中的OLE文档,但是我无法在自定义应用程序中清楚地显示它们(除非它是一个Web应用程序)。