2016-10-20 3 views
0
update Calls 
set 
Call_Closed = GETDATE() 
where CallId = 4266576; 

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

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

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

Trigger на столе

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 
+0

Что такое тип данных 'Call_Closed' – scsimon

+0

Datetime, он дает ошибку для каждого столбца, если я пытаюсь обновить. Ничего не связано с типом столбца –

+0

Пожалуйста, добавьте к вашему вопросу определение таблицы для 'Calls'. –

ответ

0

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

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

@Qry nvarchar(max) 

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

+0

Миллион Спасибо, он решен! –

 Смежные вопросы

  • Нет связанных вопросов^_^