我有一个 SQL 代理作业,它只按计划运行基本查询。它根据显示的查询更新信息。
USE DB
DECLARE @startDate AS DATETIME
DECLARE @endDate AS DATETIME
DECLARE @rcount AS VARCHAR(10)
SET @startDate = CAST(CONVERT(VARCHAR(10),GETDATE(),112) AS DATETIME)
SET @endDate = CAST(CONVERT(VARCHAR(10),GETDATE(),112) AS DATETIME)
--*********************************************************
-- *Run Query
--*********************************************************
UPDATE Table1
SET Table1.field1 = 'ZPR' + Left(Table1.field1,6),
Table1.field2 = '0',
Table1.field3 = '0'
WHERE Table1.GUID IN (SELECT GUID FROM Table1 T2
WHERE T2.Date >= @startDate
AND T2.Date <= @endDate
AND T2.complete = 0)
AND Table1.co IN (SELECT co FROM VIEW('ZERO'))
SELECT @rcount = CAST(@@ROWCOUNT AS VARCHAR(10)) + ' ' + 'row(s) affected by UPDATE';
--*********************************************************
--* Print Results
--*********************************************************
DECLARE @eSubject varchar(250)
DECLARE @emailTo varchar(250)
SET @eSubject = 'Number of rows updated'
SET @emailTo = 'me@me.com'
EXEC msdb.dbo.sp_send_dbmail @recipients=@emailTo,
@subject = @eSubject,
@body = @rcount,
@body_format = 'HTML';
该作业在没有完成任何更新时完美运行,但只要有更新就会失败。运行此作业的用户具有读写权限。我得到的错误是“字符串或二进制数据将被截断 [sql220001] [错误 8152]”。我不确定为什么它一直失败,任何帮助都会很棒!
******************更新**********
我要疯了。它作为计划作业失败,但在任何其他用户下作为直接查询完美运行。字段如下:
Table1.field1 = PK 长度为 10 Table1.field2 = 位长度为 1 Table1.field3 = 位长度为 1
无论我尝试什么或做什么,SQL 作业都会失败并出现相同的错误,但这让我很抓狂,我可以自己运行查询并且它可以完美运行。