我在 Oracle db 上有一个列,其中包含带有嵌入图像的 HTML 数据,导致该列的某些记录的大小超过 2GB。我已经成功地将数据库的其余部分迁移到 SQL Server,除了这个 CLOB 列。由于 SQL Server varchar(max) 无法处理超过 2GB 的大小,我有什么选择?
我在 Oracle db 上有一个列,其中包含带有嵌入图像的 HTML 数据,导致该列的某些记录的大小超过 2GB。我已经成功地将数据库的其余部分迁移到 SQL Server,除了这个 CLOB 列。由于 SQL Server varchar(max) 无法处理超过 2GB 的大小,我有什么选择?
通常我会推荐使用XML数据类型来存储 HTML,但它也有 2GB 的限制。然后,您有两个选择:FILESTREAM和FILETABLES。但请注意,这两个选项都需要在 Sql Server 和您的数据库中进行一些额外的配置,然后才能使用它们。
FILESTREAM
如果您需要使用标准 Windows API 调用访问文件,则文件表构建在此之上并提供了一些好处。文件表通常对消费者是透明的,并且更容易集成到您的应用程序中,但缺乏事务访问。这意味着可以从 Sql Server 上下文之外删除文件,这可能是不可取的。FILESTREAM
但是必须在事务上下文下完成,因此可以防止任何人(管理员/被授予对该FILESTREAM
文件夹的明确权限的人除外)将它们从 Sql Server 之外删除。他们没有 2GB 的限制,可以让您解决当前面临的问题;但是,访问数据可能会稍微复杂一些。幸运的是,该文档在解释如何使用数据执行 CRUD 操作方面做得相当不错FILESTREAM
。如果我必须根据您上面提供的内容选择一个,我会选择一个,
FILESTREAM
因为这将为您提供更好的一致性和对数据的控制。