SQL Server 2005:复制,varbinary

3

情境

在我们的复制方案中,我们复制了许多表,包括一个包含二进制图像数据的photos表。所有其他表都能正常复制,但是照片表不能。我怀疑这是由于照片表中的数据量较大或者图像数据是一个varbinary字段所致。然而,使用较小的varbinary字段并没有帮助。

配置信息

以下是一些配置信息:

  • 每张图片的大小可能在65-120 Kb之间
  • 每行记录中存储了一个修订版本和批准副本以及缩略图,因此单个行可能接近800Kb
  • 我曾经遇到过“max text repl size”配置字段的问题,但是我已经使用sp_configurereconfigure with override将其设置为最大值
  • 照片基于“发布”字段进行过滤,但是其他工作表也是如此
  • 数据库在同一个本地数据库服务器上(在开发环境中)运行,并配置为事务性复制
  • 复制的数据库使用“推送”订阅

另外,我注意到有时重新生成快照并重新初始化订阅会导致图像被复制。考虑到这一点,我为了调试目的将快照代理配置为每分钟重新生成一次快照(显然,在生产环境中这是过度的)。然而,这并没有帮助解决问题。

问题

是什么原因导致photos表无法复制,而其他所有表都没有问题?是否有办法解决这个问题?如果不能,我该如何进一步调试?

备注

我使用SQL Server Profiler查找错误以及Replication Monitor。没有任何错误存在。就我所知,该操作只是默默地失败。

我正在使用Windows Server 2003 Service Pack 2上的SQL Server 2005 Service Pack 3。

[更新]

我已经通过艰苦的方式发现Philippe Grondier在下面的答案中是绝对正确的。图片、视频和其他二进制文件不应该存储在数据库中。IIS比我更高效地处理这些文件。


您在每个发布者、分发器和订阅服务器上运行哪些服务包和/或累积更新?也许这是版本之间的回归错误。 - devstuff
@devstuff SQL Server Service Pack 3在Windows Server 2003 Service Pack 2上。 - brad
2个回答

4
我对你的问题没有一个明确的答案,因为我们的标准政策一直是“不要将(图片)文件存储在(数据库)字段中”。我们的解决方案不仅适用于图片,还适用于任何类型的文件或文档,现在已经成为标准:
我们在数据库中有一个“文档”表,其中存储文档/文件名称和相关文件夹(为了获得唯一的文档/文件名称,我们从“文档”表的主键/唯一标识符值生成它们)。
这个“文档”表与我们的其他订阅者一样被复制,就像所有其他表一样。
我们有一个“文档”文件夹和子文件夹,在每个数据库服务器上都可以使用。
文档文件夹独立于数据库进行复制,使用一些文件和文件夹复制软件(allwaysynch是一个选项)。
主发布者的文件夹可以通过ftp完全访问,在本地服务器上仍然无法读取文档的用户将被建议通过ftp客户端软件(如coreFTP及其命令行选项)从主服务器下载它。

0

有了这样的图像表,您是否考虑将该文章移动到单向(或双向,如果您喜欢)合并出版物中?这可能会缓解您的一些问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接