【问题标题】: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).

标签: sql-server blob firebird sqldatatypes firebird-3.0


【解决方案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 将允许您访问直接取值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2015-08-08
    • 2021-11-18
    • 2012-11-30
    • 2020-09-03
    • 2018-11-04
    • 1970-01-01
    相关资源
    最近更新 更多