修复此错误转换失败转换nvarchar值时'字符串或二进制数据将被截断。'到数据类型int。 [英] fix this Error Conversion failed when converting the nvarchar value 'String or binary data would be truncated.' to data type int.

查看:114
本文介绍了修复此错误转换失败转换nvarchar值时'字符串或二进制数据将被截断。'到数据类型int。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

错误:-fix此错误转换在转换nvarchar值时失败'字符串或二进制数据将被截断。'到数据类型int。



我的表:



ID int未选中

ColName varchar(255)未选中

标题varchar (255)未选中

DataSource varchar(255)已选中

ControlID int未选中

MaxLength int未选中

宽度int未选中

高度int未选中

IsMandatory位未选中

CommandArea char(1)已检查

CreatedBy int已检查

CreatedOn datetime已检查

UpdatedOn datetime已检查

状态位已检查

UpdatedBy int已检查

IPAddress varchar(1)已查看







我的店铺 - 程序:





  ALTER  程序 [dbo]。[spAddVoucherReachCol s] 
@ xml xml, @ error varchar 1000 输出 AS
BEGIN BEGIN TRY
INSERT INTO VoucherReachCols(ColName,Title,DataSource,ControlID,MaxLength,Width,Height,IsMandatory,CreatedBy,CreatedOn,UpdatedOn,Status,UpdatedBy,IPAddress )
SELECT N.value(' (标题)[1]'' Varchar(MAX)'),N.value (' (ColName)[1]'' Varchar(MAX)'),N。值(' (DataSource)[1]'' Varchar(MAX)'),N.value(' (ControlID) [1]'' NVarchar(MAX)'),
N .value(' (MaxLength)[1]' ' NVarchar(MAX)'),N.value(' (Width)[1]'' NVarchar(MAX)'),
N.value(' (Height)[1]'' NVarchar(MAX)'),N.value(' (IsMandatory)[1]'' Varchar(MAX)'),N.value(' (CreatedBy) )[1]'' int'),
GetDate() ,GetDate(), 1 ,N.value(' (UpdatedBy)[1]'' int'),
N .value(' (IPAddress)[1]' ' Varchar(20)' FROM @XML .nodes(' / Table / VoucherReachCols' as T(N);
END TRY
BEGIN CATCH SET @ Error = ERROR_NUMBER()+ ' ' + ERROR_MESSAGE();
END CATCH
END

解决方案

我希望您尝试将字符串转换为int。在插入之前检查xml节点值

是,在XML中验证以下字段值。



ID int未选中

ControlID int未选中

MaxLength int未选中

宽度int未选中

高度int未选中

CreatedBy int已检查

UpdatedBy int已检查



它不能是字符串值。



你有样本XML然后放一个断点并调试。



http://msdn.microsoft.com/en-us/library/yet1b7by%28VS.80%29.aspx [ ^

Error:-fix this Error Conversion failed when converting the nvarchar value 'String or binary data would be truncated.' to data type int.

My Table:

ID int Unchecked
ColName varchar(255) Unchecked
Title varchar(255) Unchecked
DataSource varchar(255) Checked
ControlID int Unchecked
MaxLength int Unchecked
Width int Unchecked
Height int Unchecked
IsMandatory bit Unchecked
CommandArea char(1) Checked
CreatedBy int Checked
CreatedOn datetime Checked
UpdatedOn datetime Checked
Status bit Checked
UpdatedBy int Checked
IPAddress varchar(1) Checked



My store-Procedures:


ALTER PROCEDURE [dbo].[spAddVoucherReachCols]
    @xml xml, @error varchar(1000) output AS
BEGIN BEGIN TRY
INSERT INTO VoucherReachCols (ColName,Title ,DataSource ,ControlID ,MaxLength ,Width ,Height ,IsMandatory,CreatedBy,CreatedOn,UpdatedOn,Status,UpdatedBy,IPAddress )
SELECT N.value('(Title)[1]', 'Varchar(MAX)') ,N.value('(ColName)[1]', 'Varchar(MAX)') ,N.value('(DataSource)[1]', 'Varchar(MAX)') ,N.value('(ControlID)[1]', 'NVarchar(MAX)') ,
N.value('(MaxLength)[1]', 'NVarchar(MAX)') ,N.value('(Width)[1]', 'NVarchar(MAX)') ,
N.value('(Height)[1]', 'NVarchar(MAX)') ,N.value('(IsMandatory)[1]', 'Varchar(MAX)'),N.value('(CreatedBy)[1]', 'int'),
GetDate(),GetDate(),1,N.value('(UpdatedBy)[1]', 'int'),
N.value('(IPAddress)[1]','Varchar(20)')  FROM @XML.nodes('/Table/VoucherReachCols') as T(N);
END TRY
BEGIN CATCH SET @Error = ERROR_NUMBER() + ' ' + ERROR_MESSAGE();
END CATCH
END

解决方案

I hope you are trying to convert the string to int. check your xml node values before inserting


Yes, validate the below filed values in XML.

ID int Unchecked
ControlID int Unchecked
MaxLength int Unchecked
Width int Unchecked
Height int Unchecked
CreatedBy int Checked
UpdatedBy int Checked

it cannot be a string values.

you have sample XML then put a breakpoint and debug.

http://msdn.microsoft.com/en-us/library/yet1b7by%28VS.80%29.aspx[^]


这篇关于修复此错误转换失败转换nvarchar值时'字符串或二进制数据将被截断。'到数据类型int。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆