二进制常量无法在MSSQL上正确下载

时间:2014-05-22 11:40:04

标签: sql sql-server constants binary-data

我需要将一些数据下载到MSSQL表。所以:

INSERT INTO [Project].[dbo].[table1] 
            ([version], 
             [date], 
             [xsd]) 
VALUES      ('3.3.3.3', 
             '20140520', 
             (SELECT * 
              FROM   OPENROWSET(BULK N'D:\File.XSD', single_clob) AS XSD)) 

go 

结果在表中插入了一些文件。看起来像是:0xDEFFFBF6C8F1...........46

所以,现在我将这个值复制到我的脚本中:

if exists (select Version from Table1 where Version ='3.3.3.3') update Table1 set    [Xsd]=0xDEFFFBF6C8F1...........  where Version ='3.3.3.3'
else insert into Table1 ([Version],[Xsd]) values ('3.3.3.3',0xDEFFFBF6C8F1...........

当它执行时,我得到这样的价值:0x0DeFFF....4 .

我正确地将值复制到脚本中..但是无法理解为什么最后一个字符消失并且我的值为零。

请帮我解决这个问题。

P.S。 CREATE TABLE .... [Xsd] [image] NULL

P.P.S - 所以,我找到了一些新东西:

当我计算下载字符串的长度(来自文件)时 - 它计数超过99k符号。 然后我在Microsoft Management Studio的脚本上复制并通过它 - (如果存在...) - 所以,我得到32k符号。

我不知道,发生了......

1 个答案:

答案 0 :(得分:1)

从您的PPS

我了解您在Management Studio中执行SELECT查询并从结果窗口复制二进制列。在此操作期间,字符串被截断为32k符号。

考虑到这一点,我认为问题出在Management Studio上。请检查检索到的最大字符的首选项:

从菜单工具打开 - >选项

从左侧的树中选择:查询结果 - > SQL Server - >网格结果(如果使用结果,则为文本结果)

两个结果选项都限制了它们返回的符号数。