SQL Update table error : DBCC execution completed. If DBCC printed error messages, contact your system administrator

SQL Update table error : DBCC execution completed. If DBCC printed error messages, contact your system administrator

update Calls 
set 
Call_Closed = GETDATE()
where CallId = 4266576;

我有一个 table 命名呼叫。每当我尝试更新此 table 中的任何列时,它都会引发错误。我在服务器中使用 "sa" 帐户登录,它是管理员帐户。上面的列 datetype 是日期时间。此外,更新 table 中的任何列都会引发以下错误。

错误详情

*String or binary data would be truncated.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
The statement has been terminated.*

在 table

上触发
CREATE TRIGGER tgrMonitorDoneWho ON Calls
FOR INSERT,UPDATE
AS  
begin   

    DECLARE @ExecStr varchar(50), @Qry nvarchar(255)

    CREATE TABLE #inputbuffer 
    (
      EventType nvarchar(30), 
      Parameters int, 
      EventInfo nvarchar(255)
    )

    SET @ExecStr = 'DBCC INPUTBUFFER(' + STR(@@SPID) + ')'

    INSERT INTO #inputbuffer 
    EXEC (@ExecStr)

    SET @Qry = (SELECT EventInfo FROM #inputbuffer)


    INSERT INTO tblDoneWhoMonitor(CallId,DoneWho,Operation,Query)
    SELECT  case
            when inserted.CallId is null then deleted.CallId
            when deleted.CallId is null then inserted.CallId
            else deleted.CallId end,
            case
            when inserted.CallId is null then deleted.DoneWho
            when deleted.CallId is null then inserted.DoneWho
            else deleted.DoneWho end, 
            case
            when inserted.CallId is null then 'DELETE'
            when deleted.CallId is null then 'INSERT'
            else  'UPDATE' end,
            @Qry
    FROM inserted
    FULL OUTER JOIN deleted
    ON inserted.CallId = deleted.CallId
end

EventInfo 列太小。将其更改为最大值。您还需要将 @Qry 更改为 nvarchar(max)。

CREATE TABLE #inputbuffer 
    (
      EventType nvarchar(30), 
      Parameters int, 
      EventInfo nvarchar(max)
    )

@Qry nvarchar(max)

然后您将需要修改 table 定义以让 tblDoneWhoMonitor 也接受查询。