我需要将一些数据下载到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符号。
我不知道,发生了......
答案 0 :(得分:1)
我了解您在Management Studio中执行SELECT查询并从结果窗口复制二进制列。在此操作期间,字符串被截断为32k符号。
考虑到这一点,我认为问题出在Management Studio上。请检查检索到的最大字符的首选项:
从菜单工具打开 - >选项
从左侧的树中选择:查询结果 - > SQL Server - >网格结果(如果使用结果,则为文本结果)
两个结果选项都限制了它们返回的符号数。