Firebird 数据库 BLOB 类型有 20,000 字节,存储 blob 的 SQL Server 数据类型是啥?
Posted
技术标签:
【中文标题】Firebird 数据库 BLOB 类型有 20,000 字节,存储 blob 的 SQL Server 数据类型是啥?【英文标题】:Firebird database BLOB type with 20,000 bytes, which SQL Server data type to store blob?Firebird 数据库 BLOB 类型有 20,000 字节,存储 blob 的 SQL Server 数据类型是什么? 【发布时间】:2020-12-21 01:55:21 【问题描述】:将数据从 Firebird 数据库迁移到 SQL Server。有一个 BLOB 二进制字段,其值约为 20,000 字节,使用 OCTET_LENGTH 函数测量。
哪种 SQL Server 数据类型可以容纳超过 8000 个字节?
【问题讨论】:
嗯,看看reference docs? 我做了,但是 varbinary 似乎最大为 8000,有图像,但文档建议不要使用它们。 来自文档“varbinary [ ( n | max) ] 可变长度二进制数据。n 可以是 1 到 8,000 之间的值。max 表示最大存储大小为 2^31-1 字节" 注意 最大. 所以在sql server中创建表的时候,我输入了关键字max? Varbinary(MAX). 【参考方案1】:与 Firebird BLOB SUB_TYPE BINARY
(或 BLOB SUB_TYPE 0
或 BLOB
没有显式子类型)最接近的等价物是 VARBINARY(MAX)
。见binary and varbinary (Transact-SQL):
varbinary [ ( n | max) ]
可变长度二进制数据。n
可以是 值从 1 到 8,000。max
表示最大存储 大小为 2^31-1 字节。存储大小是实际长度 输入的数据 + 2 个字节。输入的数据可以是 0 字节 长度。varbinary
的 ANSI SQL 同义词是binary varying
。
访问这些类型的值的方式存在一些差异(取决于所使用的 API)。在 Firebird 中,BLOB
值存储在行外并单独访问(尽管某些 API 会对您隐藏这一点),而 - IIRC - 在 SQL Server 中,VARBINARY
值存储在行上,API 将允许您访问直接取值。
【讨论】:
以上是关于Firebird 数据库 BLOB 类型有 20,000 字节,存储 blob 的 SQL Server 数据类型是啥?的主要内容,如果未能解决你的问题,请参考以下文章
firebird 数据库恢复 firebird数据库修复 interbase数据库恢复 firebird blob错误恢复
如何测量 Firebird 2.1 数据库上 blob 占用的空间量?