我已经看过这个,但我见过和尝试过的解决方案都没有真正解决我的问题。
背景:使用SQL Server 2005
当我运行存储过程将数据插入表中时,它工作正常。如果我得到一个 SQL 作业来对相同的数据运行相同的存储过程,该作业会成功运行,但数据不会插入到相同的目标表中。
我已尝试SET ansi_warnings OFF
,但编译 SQL 时出现错误,提示
Heterogeneous queries require the ANSI_NULLS and ANSI_WARNINGS options to be set for the connection. This ensures consistent query semantics. Enable these options and then reissue your query.
表架构:
[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]
在游标中,插入语句周围有一个 try/catch,因此当它一个接一个地处理作业时,如果出现问题,我可以确切地知道它在哪个作业上失败,因为有一个更新语句如果可以就说“完成”,如果不行就说“失败”。
我放入此表中的所有数据都足够短,足以适合所需的列(即产品名称少于 200 个字符,INT 值不超过 5 位)。
我收到警告,而不是错误,但我不明白为什么它在作为 SQL 作业运行时会失败合法记录,但在作为独立 SP 运行时却不会。
目标表上没有触发器,INT 列上有一些默认为 0 的约束(但我没想到这会是问题。同一 SP 中的其他表没有此问题)
提前致谢
最佳答案
运行作业或直接存储过程时不应出现任何错误,除非作业中存在导致某些数据比预期长的逻辑。我使用了很多作业和存储过程,但从未遇到过这样的错误。从开发人员的角度来看,作业中的错误仅在以下情况下发生:1) 执行帐户出现故障或缺乏访问权限,2) 执行存储过程确实存在错误
关于sql-server - 如何避免 SQL 作业中出现 "Warning: String or Binary data would be truncated"导致失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18900207/