【发布时间】:2015-01-19 22:57:04
【问题描述】:
问题
以用户身份执行:CORP\SVC-UK-SVCEMI。从字符串转换日期和/或时间时转换失败。 [SQLSTATE 22007](错误 241)。步骤失败。
我面临的问题是我创建了一个存储过程,在 SSMS 查询窗口中执行时运行良好 - 但从 SQL 代理作业运行时失败。
为什么我卡住了
由于作业在相同的数据库和数据上运行完全相同的过程,我非常困惑为什么这不起作用。
我的想法
从逻辑上讲,我会把它归结为用户帐户(因为这是我确定的唯一可能的不同),我想也许 SQL 代理服务帐户在我自己的时候有一个不同的日期格式设置。但是,我的印象是这些设置在服务器级别(我们最近更改为 GB-English) - 而不是帐户级别。
由于我无法在查询窗口中复制此问题,因此调试导致问题的行变得非常困难
从 SSMS 查询窗口运行
SQL 代理作业停止配置
运行作业时产生错误
由于我认为这是 SQL 代理配置问题,因此我没有从 SQL 过程中添加任何代码。我可以根据要求执行此操作,但它很长(在编写 SQL 时,我认为我认为可读性胜于短——可能还有性能)
任何关于可能导致此问题的想法将不胜感激。
非常感谢。
【问题讨论】:
-
改进您的日期处理 sql 代码...
-
1) 向我们展示代码。如果您可以指出故障所在,那将很有帮助 2) 您说“我的印象是这些设置在服务器级别..”有一个服务器级别的默认设置,但他们可以也可以在会话级别和连接时设置,IIRC。
-
@RBarryYoung - 看起来你是对的。我已经设置了一个跟踪,当程序通过代理运行时,它似乎在运行时将自己设置为“将语言设置更改为 us_english”。如何确定原因?
-
这是来自您的 SSIS 包的连接设置。如果您可以向我们展示失败的行以及日期字符串的外观,我们或许可以向您展示如何解决此问题。
-
干杯 RBarry,看起来当在数据库上设置语言时,服务帐户被遗漏了。希望不是出于任何正当理由。在主数据库上运行以下内容修复了我的问题 ALTER LOGIN [CORP\SVC-UK-SVCEMI] WITH DEFAULT_LANGUAGE=[British]
标签: tsql sql-server-2012 sql-agent-job