情境
在我们的复制方案中,我们复制了许多表,包括一个包含二进制图像数据的photos
表。所有其他表都能正常复制,但是照片表不能。我怀疑这是由于照片表中的数据量较大或者图像数据是一个varbinary
字段所致。然而,使用较小的varbinary
字段并没有帮助。
配置信息
以下是一些配置信息:
- 每张图片的大小可能在65-120 Kb之间
- 每行记录中存储了一个修订版本和批准副本以及缩略图,因此单个行可能接近800Kb
- 我曾经遇到过“
max text repl size
”配置字段的问题,但是我已经使用sp_configure
和reconfigure with override
将其设置为最大值 - 照片基于“发布”字段进行过滤,但是其他工作表也是如此
- 数据库在同一个本地数据库服务器上(在开发环境中)运行,并配置为事务性复制
- 复制的数据库使用“推送”订阅
另外,我注意到有时重新生成快照并重新初始化订阅会导致图像被复制。考虑到这一点,我为了调试目的将快照代理配置为每分钟重新生成一次快照(显然,在生产环境中这是过度的)。然而,这并没有帮助解决问题。
问题
是什么原因导致photos
表无法复制,而其他所有表都没有问题?是否有办法解决这个问题?如果不能,我该如何进一步调试?
备注
我使用SQL Server Profiler查找错误以及Replication Monitor。没有任何错误存在。就我所知,该操作只是默默地失败。
我正在使用Windows Server 2003 Service Pack 2上的SQL Server 2005 Service Pack 3。
[更新]
我已经通过艰苦的方式发现Philippe Grondier在下面的答案中是绝对正确的。图片、视频和其他二进制文件不应该存储在数据库中。IIS比我更高效地处理这些文件。