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 0BLOB 没有显式子类型)最接近的等价物是 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 的 blob 大小是不是只有 32kb?

如何在blob中写入txt文件

如何测量 Firebird 2.1 数据库上 blob 占用的空间量?

EF 4.1 Code First - 在 Firebird 数据库中存储图像

Firebird 烂笔头