Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Что происходит при deadlock  [new]
1
Guest
Добрый день.

Microsoft SQL Server 2005 - 9.00.4230.00 (X64) Jul 30 2009 13:42:21 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 (Build 7600: )
Есть такой код:
Begin tran
 set @err=1 
   WHILE @err=1 begin 
   begin TRY 
	INSERT INTO  <table>    .........
      set @err=0
   end try
   begin catch
    set  @errno=ERROR_NUMBER()
    IF (@errno = 1205)
    begin
     WAITFOR DELAY '00:00:05'
    end
    else raiserror(N'[%s]: Ошибка добавления записей в таблицу ', 
                   11, 1, @ProcName,@errno)    
   end catch 	
  end
	--обновлениие существующих записей  
  set @err=1 
  WHILE @err=1 begin 
   begin TRY  
    UPDATE ........ 
      set @err=0
   end try
   begin catch
     set  @errno=ERROR_NUMBER() 
    IF ( @errno = 1205)
    begin
     WAITFOR DELAY '00:00:07'
    end
    else begin
     raiserror(N'[%s]: Ошибка обновления записей ',  11, 1, @ProcName,@errno)    
    end
   end catch 	
  end
 if @@trancount>0 commit tran
Если происходит deadlock при выполнении update - данные добавленые в insert будут откатаны или останутся в таблице?

Сообщение было отредактировано: 1 окт 09, 16:56
1 окт 09, 15:01    [7730118]     Ответить | Цитировать Сообщить модератору
 Re: Что происходит при deadlock  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Интересный код... А если возникнет не deadlock, то при коммите получим отлуп в виде uncommitable транзакции? Задача то какая стоит?!
1 окт 09, 16:50    [7730924]     Ответить | Цитировать Сообщить модератору
 Re: Что происходит при deadlock  [new]
1
Guest
pkarklin
Вы все внимательно прочитали или как?
1 окт 09, 17:01    [7731012]     Ответить | Цитировать Сообщить модератору
 Re: Что происходит при deadlock  [new]
1
Guest
pkarklin
Ситатйте, что в первой строке есть SET XACT_ABORT ON
1 окт 09, 17:03    [7731029]     Ответить | Цитировать Сообщить модератору
 Re: Что происходит при deadlock  [new]
1
Guest
или XACT_ABORT OFF
Можете ответить, что произойдет в том или другом случае?
1 окт 09, 17:04    [7731043]     Ответить | Цитировать Сообщить модератору
 Re: Что происходит при deadlock  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
1
pkarklin
Вы все внимательно прочитали или как?


А Вы? На вопрос про задачу не хотите ответить?
1 окт 09, 17:22    [7731137]     Ответить | Цитировать Сообщить модератору
 Re: Что происходит при deadlock  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
1
pkarklin
Ситатйте, что в первой строке есть SET XACT_ABORT ON
...
или XACT_ABORT OFF
...


еще какими SETами поиграемся?
1 окт 09, 17:22    [7731143]     Ответить | Цитировать Сообщить модератору
 Re: Что происходит при deadlock  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
1
Можете ответить, что произойдет в том или другом случае?


Разрешение deadlocka - это всегда - откат транзакции, выбранной жертвой, но вы отлавливаете эту ошибку tryем, но кроме проверки @@trancount>0 стоит проверить еще XACT_STATE() дабы быть уверенным, что транзакцию можно впринципе закоммитеть, ибо могут возникнуть и другие ошибки.
1 окт 09, 17:26    [7731165]     Ответить | Цитировать Сообщить модератору
 Re: Что происходит при deadlock  [new]
1
Guest
pkarklin
Про какую такую задачу рассказать? Был у меня вопрос, я его задал и ответ получил. Спасибо.
1 окт 09, 18:46    [7731615]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить