【发布时间】:2019-10-04 15:23:11
【问题描述】:
我有一个 SQL Server 代理作业,它偶尔会失败,将转换错误 varchar 抛出到 int。
最疯狂的部分是在抛出错误之后我运行相同的代码,它运行正常。
然后,如果再次重新运行该作业,它运行良好。然而,几天后,这种情况再次发生(该作业计划每天运行)。拜托,有人可以帮我理解为什么会发生这种情况以及如何解决吗?
我正在使用 SQL Server 2017 数据类型:Col1 = char(6),Col2 = varchar(25),Col3 = char(15),col4 = char(6),lev1 = char(6)
SELECT
col1, col2,
REPLACE(col3,'_','') AS col3
FROM
TableName
WHERE
col4 IN (SELECT DISTINCT lev1
FROM viewName WITH (NOLOCK))
UNION ALL
SELECT
0, 'Unassigned', 0
【问题讨论】:
-
将代码添加到您知道失败的部分的问题中。即使您手动运行它也能正常工作,但对我们来说,工作总比无所事事要多。
-
我发布了没有实际表名和列的代码。我希望这会有所帮助。
-
列定义在这里非常相关;请提供他们
-
col4 的数据类型呢?也许将 col4 与 lev1 进行比较是问题所在。
where convert(char(6),col4) in (select distinct lev1 .... -
直到您掌握了基本的 tsql、stop using hints generally 和专门的 nolock 提示。在您了解可能的后果并准备相应地处理它们之前,请勿使用 nolock 提示。
标签: sql-server sql-job