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 也接受查询。
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 也接受查询。