仅在从SQL代理作业运行时转换日期时存储过程失败

时间:2014-11-21 17:55:15

标签: tsql sql-server-2012 sql-agent-job

问题

以用户身份执行:CORP \ SVC-UK-SVCEMI。从字符串转换日期和/或时间时转换失败。 [SQLSTATE 22007](错误241)。步骤失败。

我面临的问题是我创建了一个存储过程,在SSMS查询窗口中执行时运行正常 - 但是当从SQL代理作业运行时失败。

为什么我会被困?

由于作业运行完全相同的程序,在相同的数据库和数据上,我对为什么这不起作用感到非常困惑。

我的想法

从逻辑上讲,我会把它归结为用户帐户(因为这是我发现的唯一可能的不同),认为可能SQL Agent服务帐户在某种程度上具有不同的日期格式设置。但是,我认为这些设置在服务器级别(我们最近已更改为GB-English) - 而不是帐户级别。

由于我无法在查询窗口中设法复制此问题,因此调试哪一行导致问题变得非常困难


从SSMS查询窗口运行 Running from within SSMS Query Window

SQL代理Jobstop配置 SQL Agent Jobstop Configuration

运行作业时生成错误 Error Generated When Running Job

由于我认为这是一个SQL代理配置问题,我还没有添加SQL过程中的任何代码。我可以根据要求做到这一点,但它很长(想想我的可读性超过了简短性 - 可能性能 - 当谈到编写SQL时)

对于可能导致此问题的任何想法将不胜感激。

非常感谢。

1 个答案:

答案 0 :(得分:0)

作业中的存储过程可能运行在与从SSIS启动它时使用的用户帐户不同的用户帐户。

并且,此用户帐户可能具有不同的设置

尝试"执行AS user = xxxx"对于您的存储过程并使用您自己的用户帐户,然后看看会发生什么......

请参阅:EXECUTE AS