Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 зависает выборка из sys.views  [new]
sys.views
Guest
что это может быть и могу ли я как-то понять, что происходит?
являюсь owner-ом базы.
не могу выполнить:
select name
FROM sys.views
WHERE OBJECTPROPERTY(object_id, 'IsSchemaBound') = 0


зависает намертво, ни строчки не возвращает.
добавляю (nolock),
отдает половину строк и висит.
прерываю, снова запускаю, все то же самое.

что там может происходить?
25 мар 13, 18:39    [14093894]     Ответить | Цитировать Сообщить модератору
 Re: зависает выборка из sys.views  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37224
Кто-то что-то альтерит или создает в длинной транзакции.
25 мар 13, 18:40    [14093896]     Ответить | Цитировать Сообщить модератору
 Re: зависает выборка из sys.views  [new]
Гость333
Member

Откуда:
Сообщений: 3683
sys.views,

Посмотрите, нет ли ожидания на каких-то ресурсах:
select * from sys.dm_os_waiting_tasks where session_id = <spid зависшего процесса>
25 мар 13, 18:48    [14093922]     Ответить | Цитировать Сообщить модератору
 Re: зависает выборка из sys.views  [new]
sys.views
Guest
Гость333,
Msg 297, Level 16, State 1, Line 1
The user does not have permission to perform this action.


я не админ а только овнер базы
25 мар 13, 18:51    [14093931]     Ответить | Цитировать Сообщить модератору
 Re: зависает выборка из sys.views  [new]
sys.views
Guest
а почему не канает nolock и почему именно вьюхи недоступны?
что можно альтерить, чтоб заблокировать вьюху вьюх?
25 мар 13, 18:56    [14093951]     Ответить | Цитировать Сообщить модератору
 Re: зависает выборка из sys.views  [new]
sys.views
Guest
наверное никогда не узнаю.
какая загадочность.
только что безобразие прекратилось, но ведь 3 часа длилось.
у меня на базе висит DDL-триггер.
он за сегодня единственное что отловил:
exec sp_addrolemember 'db_backupoperator', 'HD00\TuO7001'

это что, кто-то открыл транзакцию, непонятно что там создавал, а потом откатил?
25 мар 13, 19:15    [14094002]     Ответить | Цитировать Сообщить модератору
 Re: зависает выборка из sys.views  [new]
Гость333
Member

Откуда:
Сообщений: 3683
sys.views
а почему не канает nolock

Сделал небольшой эксперимент — "не канает" из-за обращения к OBJECTPROPERTY. Эта функция пытается наложить на объект блокировку Sch-S (Schema Stability), в то время как в другой транзакции, скорее всего, наложена блокировка Sch-M (Schema Modification). Хинт NOLOCK не может обойти блокировки схемы, так он устроен.

Эксперимент был такой. В одной коннекции выполняем скрипт:
begin transaction;
go
create view ttt with schemabinding as
select 1 as x;
go

(можно без schemabinding, это не важно).

В другой коннекции пробуем:
select * from sys.views with(nolock) where objectproperty(object_id, 'IsSchemaBound') = 0
либо
select * from sys.views where objectproperty(object_id, 'IsSchemaBound') = 0
— висим на ожидании блокировки Sch-S, в то время как первая коннекция наложила на объект блокировку Sch-M.

Пробуем:
select * from sys.views
— висим на ожидании S-блокировки строки из sys.sysschobjs, в то время как первая коннекция наложила X-блокировку на эту строку. Причём неважно, включен на базе RCSI или нет.

Пробуем:
select * from sys.views with(nolock)
— запрос выполняется.

Ну и напоследок:
select * from sys.views with(nolock)
except
select * from sys.views with(readpast)
— получаем список залоченных объектов.
25 мар 13, 19:28    [14094046]     Ответить | Цитировать Сообщить модератору
 Re: зависает выборка из sys.views  [new]
Гость333
Member

Откуда:
Сообщений: 3683
sys.views
это что, кто-то открыл транзакцию, непонятно что там создавал, а потом откатил?

Если триггер ничего не залогировал, то скорее всего да, откатил.
Сценарий, скорее всего, тупо был такой: открыли новое окно SSMS; в нём begin tranaction; дальше create view (либо alter view); дальше ушли заниматься другими делами; пришли, вспомнили про окно — закрыли; SSMS говорит — а тут у вас uncommitted transaction, чо делать будем?; юзер говорит — откатить. Всё :-)
25 мар 13, 19:32    [14094063]     Ответить | Цитировать Сообщить модератору
 Re: зависает выборка из sys.views  [new]
sys.views
Guest
Гость333,

понятно, спасибо (особенно за объяснение nolock + Sch-S)
25 мар 13, 22:45    [14094492]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить