Sql server SQL Server';s bcp实用程序损坏varbinary(max)数据

Sql server SQL Server';s bcp实用程序损坏varbinary(max)数据,sql-server,bcp,Sql Server,Bcp,表结构: CREATE TABLE [dbo].[Binaries] ( [Id] [bigint] IDENTITY(1,1) NOT NULL, [Data] [varbinary](max) NULL, [SHA256] [varbinary](32) NULL, [CreatedDate] [datetime2](7) NOT NULL, [DeletedDate] [datetime2](7) NULL, [IsDeleted] [bit

表结构:

CREATE TABLE [dbo].[Binaries]
(
    [Id] [bigint] IDENTITY(1,1) NOT NULL,
    [Data] [varbinary](max) NULL,
    [SHA256] [varbinary](32) NULL,
    [CreatedDate] [datetime2](7) NOT NULL,
    [DeletedDate] [datetime2](7) NULL,
    [IsDeleted] [bit] NOT NULL
)
命令:

bcp MyDb.dbo.Binaries format nul -f E:\format.fmt -T -n
bcp MyDb.dbo.Binaries OUT E:\Binaries.bcp -f E:\format.fmt -T
bcp MyDb.dbo.Binaries IN E:\Binaries.bcp -f E:\format.fmt -T
格式文件:

14.0
6
1       SQLBIGINT           0       8       ""   1     Id                         ""
2       SQLBINARY           8       0       ""   2     Data                       ""
3       SQLBINARY           2       32      ""   3     SHA256                     ""
4       SQLDATETIME2        0       8       ""   4     CreatedDate                ""
5       SQLDATETIME2        1       8       ""   5     DeletedDate                ""
6       SQLBIT              1       1       ""   6     IsDeleted                  ""
数据
列包含导入文件损坏后的文档,即pdf文件(差异约为5-10%,文件大小较小)

原始数据库已从.bak文件还原

服务器版本:

Microsoft SQL Server 2016 (SP1-GDR) (KB4019089) - 13.0.4206.0 (X64) Enterprise Edition (64-bit) on Windows 10 Pro N 6.3 <X64> (Build 17134: ) (Hypervisor) 
Windows 10 Pro N 6.3上的Microsoft SQL Server 2016(SP1-GDR)(KB4019089)-13.0.4206.0(X64)企业版(64位)(版本17134:)(虚拟机监控程序)

您可以发布从第一行获得的格式文件吗?您的SQL版本是什么?添加了格式文件和服务器版本。我刚刚在2012年和2016年运行了您的测试,PDF导出很好,只是在末尾添加了一个字符串。这些字符当然来自为表创建的
.fmt
文件。所以在我的例子中,
bcp
根据请求吐出表记录。我无法确认您的文件比原件小的结果。编辑
.fmt
以排除除BLOB之外的字段,它应该一对一导出。当然,除非我误解了你的问题,你的意思是文件比水滴小。那么原因就是我之前写的。我曾尝试使用C#/ADO.NET使用磁盘上的文件导出和导入数据(原始字节数组),但遇到了完全相同的问题,文件以相同的方式损坏,字节到字节。我怀疑数据在插入/选择操作(编码?)过程中被修改了,但我不知道为什么。最后我发现了问题,旧系统是使用DevXPress框架构建的,结果证明它在内部使用压缩(有时是智能的!),所以数据实际上被压缩了。。。无论如何,谢谢你的帮助。