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

Откуда: из России
Сообщений: 901
Update с подсказкой nolock в 2008R2 не работает?в хелпе по 2008 написано,что в будущих версиях возможность будет удалена, я так понял в r2 это уже удалили.
6 сен 11, 15:47    [11235491]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Slava_Nik
Update с подсказкой nolock в 2008R2 не работает?в хелпе по 2008 написано,что в будущих версиях возможность будет удалена, я так понял в r2 это уже удалили.
Так и пишет - "не работаю"?
6 сен 11, 15:52    [11235563]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
Slava_Nik,

BOL 2008R2
Подсказки READUNCOMMITTED и NOLOCK для таблиц, измененных операциями вставки, обновления или удаления, указать нельзя. Оптимизатор запросов SQL Server не учитывает подсказки READUNCOMMITTED и NOLOCK в предложении FROM, применяемые к целевой таблице инструкции UPDATE или DELETE.

Примечание
Поддержка использования подсказок READUNCOMMITTED и NOLOCK в предложении FROM, применяемом к целевой таблице инструкции UPDATE или DELETE, будет удалена в следующей версии SQL Server. Следует избегать использования этих подсказок в таком контексте в новой разработке и запланировать изменение приложений, использующих их в настоящий момент.


А смысл-то NOLOCK-а при UPDATE какой?
6 сен 11, 16:06    [11235757]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
baracs,

чтобы при обновление диапозона строк, строки были доступны для чтения.
либо это делать SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED?
6 сен 11, 16:17    [11235901]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Slava_Nik
baracs,
чтобы при обновление диапозона строк, строки были доступны для чтения.
Вам показалось. Именно так nolock никогда не работал.
6 сен 11, 16:18    [11235919]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Slava_Nik
baracs,

чтобы при обновление диапозона строк, строки были доступны для чтения.
либо это делать SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED?
При обновлении всегдав ставится блокировка обновления, независимо от установленных хинтов или параметров коннекта.

Чтобы строки были доступны для чтения, нужно при чтении ставить эти параметры.
6 сен 11, 16:31    [11236060]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Гавриленко Сергей Алексеевич
Slava_Nik
baracs,
чтобы при обновление диапозона строк, строки были доступны для чтения.
Вам показалось. Именно так nolock никогда не работал.

Мало того, в след. версиях будет синтаксическая ошибка при попытки NOLOCK при UPDATE (и DELETE):
BOL:
автор
NOLOCK
Равнозначен аргументу READUNCOMMITTED. Дополнительные сведения об аргументе READUNCOMMITTED см. далее в этом разделе.

Примечание.
Для инструкций UPDATE и DELETE. В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.

С уважением, Алексей
6 сен 11, 16:32    [11236079]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
alexeyvg,
к примеру:
update table set fiels=value
where table.fiels=value1(диапозон строк)

как здесь поставить режим грязного чтения?
6 сен 11, 16:48    [11236204]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Slava_Nik
alexeyvg,
к примеру:
update table set fiels=value
where table.fiels=value1(диапозон строк)

как здесь поставить режим грязного чтения?

set transaction isolation level read uncommitted
6 сен 11, 16:56    [11236255]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
Гавриленко Сергей Алексеевич,

ок, спасибо за разъяснение.
6 сен 11, 16:59    [11236287]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Slava_Nik
Гавриленко Сергей Алексеевич,

ок, спасибо за разъяснение.
Только все равно надо смотреть, какие блокировки накладываются.
6 сен 11, 17:00    [11236294]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
А если перед вызовом процедуры прописать уровень изоляции "грязного чтения", то все транзакции в процедуре будут выполнены с данным уровенем? если нет конечно конкретной подсказки при выполнение в процедуре.
сеанс соединения один и тот же будет.
6 сен 11, 17:13    [11236382]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
Slava_Nik,

Да, set transaction isolation level устанавливается для данного коннекшена и работает или до след. set transaction isolation level или до отвала этого коннекшена.
6 сен 11, 17:43    [11236669]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Slava_Nik
А если перед вызовом процедуры прописать уровень изоляции "грязного чтения", то все транзакции в процедуре будут выполнены с данным уровенем? если нет конечно конкретной подсказки при выполнение в процедуре.
сеанс соединения один и тот же будет.
Это вопрос или утверждение?
6 сен 11, 17:43    [11236671]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SamMan
Slava_Nik,

Да, set transaction isolation level устанавливается для данного коннекшена и работает или до след. set transaction isolation level или до отвала этого коннекшена.

Да нет, немного посложнее:

set nocount on
go
if object_id('tempdb..#t') is not null
    drop proc #t
go    
create proc #t 
as begin
    select 'IL from within proc before set:', transaction_isolation_level from sys.dm_exec_sessions a where session_id = @@spid    
    set transaction isolation level repeatable read
    select 'IL from within proc after set:', transaction_isolation_level from sys.dm_exec_sessions a where session_id = @@spid    
end
go
set transaction isolation level read uncommitted
select 'IL before proc:', transaction_isolation_level from sys.dm_exec_sessions a where session_id = @@spid    
exec #t
select 'IL after proc:', transaction_isolation_level from sys.dm_exec_sessions a where session_id = @@spid    
go
                transaction_isolation_level
--------------- ---------------------------
IL before proc: 1

                                transaction_isolation_level
------------------------------- ---------------------------
IL from within proc before set: 1

                               transaction_isolation_level
------------------------------ ---------------------------
IL from within proc after set: 3

               transaction_isolation_level
-------------- ---------------------------
IL after proc: 1
6 сен 11, 17:48    [11236725]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
Гавриленко Сергей Алексеевич
Да нет, немного посложнее


Да, согласен - забыл упомянуть о "побочном влиянии" хранимых процедур/триггеров, а оно - есть! Однако в целом SET TRANSACTION ISOLATION LEVEL опция уровня сессии. По любому спасибо за уточнение!
6 сен 11, 18:00    [11236855]     Ответить | Цитировать Сообщить модератору
 Re: update и nolock в r2  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
Гавриленко Сергей Алексеевич,

ну да, я и так и понял.
6 сен 11, 18:25    [11237060]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить