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

Откуда: Новосибирск
Сообщений: 26
Структура вопроса:
Уровень изоляции у БД по умолчанию COMMITTED
Хранимая процедура1 - уровень изоляции внутри обозначен как UNCOMMITTED
Из ХП1 Запускается ХП2 в которой уровень изоляции не обозначен.
ИЗ ХП2 Запускается Функция1, как нам известно в фукнции уровень задать нельзя, но и подсказка из ХП2 тоже не задана.

Сам вопрос: Какой уровень изоляции будет в фукнции1.
Как мне видится
ХП1 = UNCOMMITTED
ХП2 = UNCOMMITTED
Функ1 = ? - не могу сказать точно, msdn курил явного описания там не нашел.

DBCC USERTOPTIONS в фукнции запустить не удалось, не смотря всякие извращения.

Есть мысль как отловить уровень изоляции?
14 фев 12, 08:11    [12086188]     Ответить | Цитировать Сообщить модератору
 Re: Уровень изоляции транзакции в фукнции  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Уровень изоляции устанавливается не для объектов, а для сессии.
14 фев 12, 09:30    [12086372]     Ответить | Цитировать Сообщить модератору
 Re: Уровень изоляции транзакции в фукнции  [new]
mBlaze
Member

Откуда: Новосибирск
Сообщений: 26
invm
Уровень изоляции устанавливается не для объектов, а для сессии.


Не поспоришь. НО
"Если инструкция SET TRANSACTION ISOLATION LEVEL использовалась в хранимой процедуре или триггере, то при возврате управления из них уровень изоляции будет изменен на тот, который действовал на момент их вызова."

То есть исходя из этого мы можем изменять уровень изоляции на уровне объекта, простите за тавтологию.
Но суть ни в этом. Просто возникла дурная мысль а нет ли какой багафичи, или просто фичи у мелкософта при вызове функции из ХП.

Имеется ввиду как раз, если в ХП изменяется уровень изоляции, при возврате из хп назначается уровень предыдущий, а может ли в фукнции так же вернуться COMMITTED, а не тот, что в ХП.

как удостовериться в том что в функции не изменился уровень на COMMITTED.

Пробелма в том что одна хранимка(ХП1) не смотря на грязное чтение вызывает блокировку, при этом в процедуре нет комманд UPDATE/INSERT/DELETE а так же нет изменения схемы мета данных. Вот и возникает вопрос, что за нафиг.
14 фев 12, 10:31    [12086756]     Ответить | Цитировать Сообщить модератору
 Re: Уровень изоляции транзакции в фукнции  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
mBlaze
invm
Уровень изоляции устанавливается не для объектов, а для сессии.


Не поспоришь. НО
"Если инструкция SET TRANSACTION ISOLATION LEVEL использовалась в хранимой процедуре или триггере, то при возврате управления из них уровень изоляции будет изменен на тот, который действовал на момент их вызова."

То есть исходя из этого мы можем изменять уровень изоляции на уровне объекта, простите за тавтологию.
Но суть ни в этом. Просто возникла дурная мысль а нет ли какой багафичи, или просто фичи у мелкософта при вызове функции из ХП.

Имеется ввиду как раз, если в ХП изменяется уровень изоляции, при возврате из хп назначается уровень предыдущий, а может ли в фукнции так же вернуться COMMITTED, а не тот, что в ХП.

как удостовериться в том что в функции не изменился уровень на COMMITTED.

Пробелма в том что одна хранимка(ХП1) не смотря на грязное чтение вызывает блокировку, при этом в процедуре нет комманд UPDATE/INSERT/DELETE а так же нет изменения схемы мета данных. Вот и возникает вопрос, что за нафиг.


через sp_lock посмотреть какие блокировки и на какие объекты накладываются?
14 фев 12, 10:52    [12086884]     Ответить | Цитировать Сообщить модератору
 Re: Уровень изоляции транзакции в фукнции  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Не ищите багофичи, а разбирайтесь с вашими процедурами и функциями. Текущий уровень изоляции можно увидеть в столбце transaction_isolation_level представления sys.dm_exec_sessions.
14 фев 12, 10:55    [12086905]     Ответить | Цитировать Сообщить модератору
 Re: Уровень изоляции транзакции в фукнции  [new]
mBlaze
Member

Откуда: Новосибирск
Сообщений: 26
спасибо. конечно разбираюсь:). я нашел что искал
автор
Текущий уровень изоляции можно увидеть в столбце transaction_isolation_level представления sys.dm_exec_sessions.


Мне все расскажет.:)
14 фев 12, 11:06    [12086983]     Ответить | Цитировать Сообщить модератору
 Re: Уровень изоляции транзакции в фукнции  [new]
mBlaze
Member

Откуда: Новосибирск
Сообщений: 26
mBlaze
спасибо. конечно разбираюсь:). я нашел что искал
автор
Текущий уровень изоляции можно увидеть в столбце transaction_isolation_level представления sys.dm_exec_sessions.


Мне все расскажет.:)


Рассказал... С уровнями изоляции все нормально и работает правильно.
14 фев 12, 14:24    [12088834]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить