小编use*_*816的帖子

如何在SQL作业中避免"警告:字符串或二进制数据将被截断",从而导致失败

我已经看过这个了,但是我见过和试过的解决方案都没有解决我的问题.

背景:使用SQL Server 2005

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

我试过了SET ansi_warnings 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] 
Run Code Online (Sandbox Code Playgroud)

在游标中,insert语句周围有一个try/catch,因此它逐个处理作业,如果有问题,我确切地知道它失败了哪个作业,因为有一个更新语句说"完成" "如果没关系,"如果没有失败".

我在此表中放入的所有数据都足够短,以适应需求列(即产品名称少于200个字符,INT值为5位或更少).

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

目标表上没有触发器,INT列上有一些默认的0约束(但我不认为这是问题.同一SP中的其他表没有此问题)

提前致谢

sql-server stored-procedures sql-server-2005

5
推荐指数
1
解决办法
1664
查看次数