3

设想

在我们的复制方案中,我们复制了许多表,包括一个photos包含二进制图像数据的表。所有其他表都按预期复制,但照片表没有。我怀疑这是因为照片表中的数据量较大,或者可能是因为图像数据是一个varbinary字段。但是,使用较小的varbinary字段并没有帮助。

配置信息

这是一些配置信息:

  • 每个图像可以是 65-120 Kb 的任何地方
  • 修订和批准的副本与缩略图一起存储,因此单行可能接近约 800Kb
  • 我曾经遇到过“ ”配置字段的问题,但我已使用andmax text repl size将其设置为最大值sp_configurereconfigure with override
  • 照片是根据“已发布”字段过滤的,但其他工作表也是如此
  • 数据库使用相同的本地数据库服务器(在开发环境中)并配置为事务复制
  • 复制的数据库使用“推送”订阅

此外,我注意到有时重新生成快照并重新初始化订阅会导致图像复制。考虑到这一点,我将快照代理配置为每分钟左右重新生成一次快照以用于调试目的(显然这对于​​生产环境来说太过分了)。然而,这并没有帮助。

问题

是什么导致photos表不复制而所有其他表都没有问题?有没有解决的办法?如果没有,我将如何进一步调试?

笔记

我使用 SQL Server Profiler 和复制监视器来查找错误。不存在错误。据我所知,该操作只是默默地失败了。

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

[更新]

我发现Philippe Grondier在下面的回答中绝对正确。图像、视频和其他二进制文件不应存储在数据库中。IIS 处理这些文件的效率比我高得多

4

2 回答 2

4

对于您的问题,我没有直接的答案,因为我们的标准政策一直是“永远不要在(数据库)字段中存储(图片)文件”。我们的解决方案不仅适用于图片,而且适用于任何类型的文件或文档,现在已成为标准:

  • 我们的数据库中有一个“文档”表,其中存储了文档/文件名和相关文件夹(为了获得唯一的文档/文件名,我们从“文档”表的主键/唯一标识符值生成它们)。

这个“文档”表在我们的不同订阅者之间复制,就像所有其他表一样

  • 我们在每个数据库服务器上都有一个“文档”文件夹和子文件夹。
  • 然后使用一些文件和文件夹复制软件独立于数据库复制文档文件夹(allwaysynch 是一个选项)
  • 主要发布者的文件夹可通过 ftp 完全访问,其中将建议尝试读取本地服务器上不可用的文档(仍然)的用户通过 ftp 客户端软件(例如 coreFTP 及其命令行选项)从主服务器下载它
于 2009-04-14T22:03:50.133 回答
0

对于这样的图像表,您是否考虑过将该文章移至单向(或双向,如果您愿意)合并出版物?这可能会缓解您的一些问题。

于 2009-04-19T19:17:31.940 回答