Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 我怎样才能避免;警告:字符串或二进制数据将被截断;在SQL工作中给我一个失败_Sql Server_Sql Server 2005_Stored Procedures - Fatal编程技术网

Sql server 我怎样才能避免;警告:字符串或二进制数据将被截断;在SQL工作中给我一个失败

Sql server 我怎样才能避免;警告:字符串或二进制数据将被截断;在SQL工作中给我一个失败,sql-server,sql-server-2005,stored-procedures,Sql Server,Sql Server 2005,Stored Procedures,我已经看过了,但我所看到和尝试过的解决方案都没有真正解决我的问题 背景:使用SQLServer2005 当我运行存储过程将数据插入表时,它工作正常。如果我得到一个SQL作业,在相同的数据上运行相同的存储过程,则该作业会成功运行,但数据不会插入到相同的目标表中 我尝试过将ansi\U警告设置为OFF,但编译SQL时出错,原因是 异构查询要求为连接设置ANSI_NULLS和ANSI_WARNINGS选项。这确保了一致的查询语义。启用这些选项,然后重新发出查询 表架构: [JobNo] [int]

我已经看过了,但我所看到和尝试过的解决方案都没有真正解决我的问题

背景:使用SQLServer2005

当我运行存储过程将数据插入表时,它工作正常。如果我得到一个SQL作业,在相同的数据上运行相同的存储过程,则该作业会成功运行,但数据不会插入到相同的目标表中

我尝试过将ansi\U警告设置为OFF,但编译SQL时出错,原因是

异构查询要求为连接设置ANSI_NULLS和ANSI_WARNINGS选项。这确保了一致的查询语义。启用这些选项,然后重新发出查询

表架构:

[JobNo] [int] 
[ProductCode] [varchar](20) 
[ProductName] [varchar](200)
[ReportedAvailability] [varchar](100) 
[ReportedProductClean] [varchar](100)
[ReportedProductDate] [varchar](100) 
[ReportedProductPrice] [int] 
[ReportedCasesOrdered] [int] 
[AvailableYes] [int] 
[AvailableOOS] [int] 
[AvailableNotRanged] 
[ProductClean] [int] 
[ProductInDate] [int]
[ProductPrice] [int] 
[CasesOrdered] [int] 
[Include] [int] 
[Counter] [int] 
[UserId] [varchar](10) 
[Modified] [datetime] 
在游标中,insert语句周围有一个try/catch,因此当它一个接一个地处理作业时,如果有问题,我确切地知道它在哪个作业上失败了,因为有一个update语句可以说“完成”,如果可以,则说“失败”

我在此表中输入的所有数据都足够短,可以放入require列(即,产品名称少于200个字符,INT值小于等于5位)

我收到了一个警告,不是错误,但我无法理解为什么它在作为SQL作业运行时会导致合法记录失败,而在作为独立SP运行时却不会

目标表上没有触发器,INT列上有一些默认为0的约束(但我没有想到这会是问题所在。同一SP中的其他表没有这个问题)


提前感谢

信息非常有限,因此无法得出结论。如果您在默认的查询窗口连接上说,您可以在没有任何问题的情况下执行,因此设置可以在一个方面进行更改。在对表插入之前,您不能将所有这些值赋给某些变量吗。将值设置为变量将有助于自动截断到指定的变量长度,并且可以避免错误

在运行作业或直接存储过程时不应出现任何错误,除非作业中存在导致某些数据比预期长的逻辑。我使用了这么多的作业和存储过程,但我从未遇到过这样的错误。从开发人员的角度来看,只有在以下情况下才会发生作业中的错误:1)执行帐户失败或缺少访问权限,2)执行存储过程确实有错误

用户ID的数据是什么?如果是当前用户,则SQL代理运行的帐户可能比您的用户帐户长。您可能正试图在
varchar(100)
中的一个
varchar(101+)
中插入一个
varchar(11+)
,或者在
UserId
列中插入一个
varchar(11+)
。一个简单(/ught)的修复方法是自己截断数据,例如插入
left(src.UserId,10)
,而不是只插入
src.UserId
。检查运行SQL作业的帐户的权限。当有人对表或SP执行DROP/CREATE而不是ALTER时,我得到了相同的结果。此外,是否有可能在游标中抛出错误,并且在记录错误时出现truncate警告?存储过程中是否有对varchar变量的操作,或者直接插入?请在varchar变量周围使用LTRIM(RTRIM())确保没有空格。是否涉及链接服务器以及读取数据的权限问题?