问题描述
将数据从Firebird数据库迁移到SQL Server。有一个BLOB Binary字段,其值约为20,000个字节,使用OCTET_LENGTH函数进行了测量。
哪种SQL Server数据类型将容纳8000个字节以上?
解决方法
与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允许您直接访问该值。