Ошибка таблицы обновления SQL: выполнение DBCC завершено. Если DBCC печатает сообщения об ошибках, обратитесь к системному администратору.

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

У меня есть таблица с именем звонки. Всякий раз, когда я пытаюсь обновить любой столбец в этой таблице, возникает ошибка. Я вошел в систему с учетной записью «sa» на сервере, и это учетная запись администратора. Приведенный выше тип даты столбца является датой и временем. Кроме того, при обновлении любого столбца в таблице возникает следующая ошибка.

Подробности об ошибке

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

Триггер на столе

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

person rohit singh    schedule 20.10.2016    source источник
comment
какой тип данных у Call_Closed   -  person scsimon    schedule 20.10.2016
comment
Дата и время выдает ошибку в каждом столбце, если я пытаюсь обновить. Ничего связанного с типом столбца   -  person rohit singh    schedule 20.10.2016
comment
Пожалуйста, добавьте к своему вопросу определение таблицы для Calls.   -  person TT.    schedule 20.10.2016
comment
А как насчет типа данных CallId? можно попробовать where CallId = '4266576'   -  person user5226582    schedule 20.10.2016
comment
Есть ли какой-либо триггер в этой таблице, который может вызвать это?   -  person SS_DBA    schedule 20.10.2016
comment
Каллид внутр. Ничто, связанное с этим запросом выбора, не работает идеально   -  person rohit singh    schedule 20.10.2016
comment
на столе есть один тигр   -  person rohit singh    schedule 20.10.2016
comment
Можешь выложить триггер?   -  person scsimon    schedule 20.10.2016
comment
я отредактировал вопрос и опубликовал детали триггера. Вы можете проверить это оттуда.   -  person rohit singh    schedule 20.10.2016
comment
Это оператор, из которого возникает ошибка: INSERT INTO #inputbuffer EXEC (@ExecStr). Измените столбец EventInfo на nvarchar(max), и он будет работать. В 255 не хватает места.   -  person SS_DBA    schedule 20.10.2016
comment
Можете ли вы предоставить более подробную информацию об этом и решении?   -  person rohit singh    schedule 20.10.2016
comment
Данные ежедневно вставляются и обновляются в таблице вызовов из клиентского приложения. Но теперь я обновлял таблицу из sql, после чего возникла ошибка.   -  person rohit singh    schedule 20.10.2016


Ответы (1)


Столбец EventInfo слишком мал. Измените его на макс. Вам также нужно будет изменить @Qry на nvarchar(max).

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

@Qry nvarchar(max)

И, в свою очередь, вам нужно будет изменить определение таблицы для tblDoneWhoMonitor, чтобы он также принимал запрос.

person SS_DBA    schedule 20.10.2016