5

我已经看过这个,但我见过并尝试过的解决方案都没有真正解决我的问题。

背景:使用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] 

在游标中,插入语句周围有一个 try/catch,因此当它一个一个处理作业时,如果有问题,我确切地知道它失败的作业,因为有一个更新语句说“完成" 如果没问题," 失败" 如果不是。

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

我收到警告,而不是错误,但我不明白为什么它在作为 SQL 作业运行时会失败合法记录,但在作为独立 SP 运行时不会。

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

提前致谢

4

2 回答 2

1

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

于 2018-06-07T10:24:11.810 回答
0

信息真的很有限,所以不能确定。如果您在默认查询窗口连接上说,您可以毫无问题地执行,因此设置可以是一方面。在插入表格之前,您不能将所有这些值分配给某些变量。将值设置为变量将有助于自动截断到指定的变量长度,并且可以避免错误

于 2014-04-02T02:36:35.110 回答