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

Откуда:
Сообщений: 9
Господа, доброго дня.

Возникла следующая проблема, описания и решения которой я не нашел ни в поисках по топикам, ни на англоязычных сайтах.

В студии происходит alter процедуры, успешно завершается через 7 секунд. В окне сообщений уведомление о том, что Выполнение команд успешно завершено. Вкладка не закрывается (spid 100).

Монитор активности показывает, что процесс (100) блокирует сервер на котором происходил alter и на котором расположена процедура и удаленные сервера, которые используются в ней.

Вопрос, где копать решение этой проблемы, откуда она могла возникнуть?
26 мар 15, 13:34    [17434838]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
select @@trancount в вашем окне spid 100 сделайте.
26 мар 15, 13:41    [17434903]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
> Вопрос, где копать решение этой проблемы, откуда она могла возникнуть?

implicit_transactions включены, поди.
26 мар 15, 13:44    [17434921]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
priora
Member

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

Было подозрение на это:

--Создал процедуру ОКНО1
Create PROCEDURE p1
AS
begin
select * from t1
END

--В другом окне ОКНО2
--Сначала делаю так
begin tran

--Потом комментирую begin tran и выполняю alter
alter PROCEDURE p1
AS
begin
select * from t1
END

--select @@trancount дает 1

--Грешил на темповые таблицы, сделал так
begin tran
create table #t1(t1 int)
insert #t1 select 1
update #t1 set t1 = 2

--select @@trancount дает 2

--Потом снова выполнил alter

После этого, из ОКНО1, вставляю данные в таблицу, делаю select, все работает, проблем нет. Значит дело не в @@trancount или я не могу воссоздать ошибку, тем способом, который Вы предложили.

daw,

implicit_transactions, можешь вкратце сказать, что именно имел ввиду? По неявным транзакциям слишком много материалов, если ты говорил о чем то конкретном, а не в целом?
26 мар 15, 15:34    [17435667]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
priora
select @@trancount дает 2
Ну и? Вас удивляет, что в вашей незакомиченной транзакции висят блокировки, которые мешают другим работать?
26 мар 15, 15:43    [17435728]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
priora
Member

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

не совсем понял, что Вы подразумеваете под "блокировки, которые мешают другим работать"?

Из другого окна я в это время свободно вставлял данные в t1 и делал select. Блокировки не было.
26 мар 15, 16:07    [17435901]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
PaNik
Member

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

сделать commit транзакции в окне spid 100, не?
26 мар 15, 16:12    [17435933]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
priora
не совсем понял, что Вы подразумеваете под "блокировки, которые мешают другим работать"?

Из другого окна я в это время свободно вставлял данные в t1 и делал select. Блокировки не было.
Наверное, в окне, в котором открыта транзакция, было сделано ещё какое то действие, не только ALTER PROC. Может, запрос из какой то постоянной таблицы.
26 мар 15, 16:12    [17435938]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
priora
Вопрос, где копать решение этой проблемы, откуда она могла возникнуть?
И проблему то опишите, что вас не устраивает?

Вам нужно, что бы при выполнении скрипта с ALTER PROC в транзакции не блокировались другие запросы? А транзакцию нельзя убрать по каким то причинам?

Ещё, почему ALTER PROC выполняется 7 секунд, там точно больше ничего не делается?
26 мар 15, 16:16    [17435959]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
priora
После этого, из ОКНО1, вставляю данные в таблицу, делаю select, все работает, проблем нет.
Ещё непонятно в вашем эксперименте, что должно заблокироваться. У вас все действия происходят в ОКНО2, а в ОКНО1 было только создание процедуры, и нет открытой транзакции.
Разумеется, ОКНО2 с открытой транзакцией не будет самоблокироваться, ему же никто не мешает.
26 мар 15, 16:18    [17435987]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32174
alexeyvg
priora
После этого, из ОКНО1, вставляю данные в таблицу, делаю select, все работает, проблем нет.
Ещё непонятно в вашем эксперименте, что должно заблокироваться. У вас все действия происходят в ОКНО2, а в ОКНО1 было только создание процедуры, и нет открытой транзакции.
Разумеется, ОКНО2 с открытой транзакцией не будет самоблокироваться, ему же никто не мешает.
... а в ОКНО1 в конце вы работаете с какой то таблицей, которую в ОКНО2 не затрагивают
26 мар 15, 16:20    [17435996]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
priora
Member

Откуда:
Сообщений: 9
alexeyvg,

доброго утра.

>>Наверное, в окне, в котором открыта транзакция, было сделано ещё какое то действие, не только ALTER PROC. Может, запрос из какой то постоянной таблицы.
Были сделаны следующие действия в такой последовательности:
1 Открыт код хранимой процедуры на альтер;
2 Созданы несколько временных таблиц;
3 Созданы несколько временных таблиц с прилинкованного сервера
3 Начата транзакция;
4 Сделан апдейт этих временных таблиц;
5 Транзакция не закрыта;
6 Потом проверено, что апдейт прошел действительно так, как нужно;
7 После чего строка с началом транзакции закомментирована;
8 Выполнен альтер процедуры в этом окне;

До 7 пункта код структурно выглядит так:
alter proc
begin
create #t1
insert #t1 select from t1
begin tran
update #t1
select * from #t1
end

После 7 пункта так:
alter proc
begin
create #t1
insert #t1 select from t1
--begin tran
update #t1
select * from #t1
end

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

Отдельно спасибо за ответы!
27 мар 15, 09:09    [17438335]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
priora
В том то и проблема, что в один день это вызвало 10 часовой лок на таблицы сервера, на котором произошел альтер.

ALTER PROC накладывает блокировку на системную таблицу при выполнении. Простое открытие текста запроса ALTER PROC никаких блокировок не накладывает.
27 мар 15, 09:16    [17438357]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
priora
Member

Откуда:
Сообщений: 9
Glory,

расскажи пожалуйста поподробнее, что за таблица? По всем объектам, или на определенный тип? sysobjects?
27 мар 15, 09:31    [17438426]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
priora
расскажи пожалуйста поподробнее, что за таблица?

Системная

priora
По всем объектам, или на определенный тип? sysobjects?

На одну запись, соответствующую изменяемой процедуре

У меня такое вречатление, что вместо просмотра списка реальных блокировок в мониторинге, вы спекулиуруете о том, что у вас что-то заблокировано на 10 часов.
27 мар 15, 09:37    [17438453]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
priora
Member

Откуда:
Сообщений: 9
Glory,

Возникла разовая проблема, которая создала за собой блокировку пока процесс не убили. Последовательность действий, которые были, я описал. Нет смысла спекулировать, я хочу только понять причину.

Спасибо.
27 мар 15, 09:47    [17438528]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
priora
которая создала за собой блокировку

И где вы видели эту блокирорвку ?
27 мар 15, 09:49    [17438535]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
priora
Последовательность действий, которые были, я описал.

Что же теперь то эта последовательность не дает эту же "разовую проблему" ?
27 мар 15, 09:50    [17438539]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
priora
Member

Откуда:
Сообщений: 9
Glory,

дружище, я не стану с тобой спорить. Тебе будет достаточно скриншота, если ты не веришь моим словам?
27 мар 15, 11:08    [17439054]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
priora
Тебе будет достаточно скриншота, если ты не веришь моим словам?

Скриншота того, как alter proc блокирует пользовательскую таблицу на 10 часов?
27 мар 15, 11:11    [17439081]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
priora
Member

Откуда:
Сообщений: 9
Glory,

более того, процесс находился в состоянии sleeping.
27 мар 15, 11:53    [17439442]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
priora
более того, процесс находился в состоянии sleeping.

Ага-ага. Крокодилы летают, но низенько-низенько.
27 мар 15, 11:57    [17439483]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9161
Ну а в каком еще состоянии должен находиться spid с незавершенной транзакцией?
27 мар 15, 13:44    [17440351]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
priora
Member

Откуда:
Сообщений: 9
Владислав, если попробуешь выполнить, то первый запрос не залочит другой, вот в чем вопрос.

>>Наверное, в окне, в котором открыта транзакция, было сделано ещё какое то действие, не только ALTER PROC. Может, запрос из какой то постоянной таблицы.
Были сделаны следующие действия в такой последовательности:
1 Открыт код хранимой процедуры на альтер;
2 Созданы несколько временных таблиц;
3 Созданы несколько временных таблиц с прилинкованного сервера
3 Начата транзакция;
4 Сделан апдейт этих временных таблиц;
5 Транзакция не закрыта;
6 Потом проверено, что апдейт прошел действительно так, как нужно;
7 После чего строка с началом транзакции закомментирована;
8 Выполнен альтер процедуры в этом окне;

До 7 пункта код структурно выглядит так:
alter proc
begin
create #t1
insert #t1 select from t1
begin tran
update #t1
select * from #t1
end

После 7 пункта так:
alter proc
begin
create #t1
insert #t1 select from t1
--begin tran
update #t1
select * from #t1
end

Видимо это был технический глюк сервера, думаю вопрос закрыт. Спасибо.
30 мар 15, 09:39    [17448238]     Ответить | Цитировать Сообщить модератору
 Re: Различный результат выполнения в SMSS и на сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
priora
8 Выполнен альтер процедуры в этом окне;

А как вы умудрялись в этом же окне до этого сделать пункты 2-6 ?


priora
Видимо это был технический глюк сервера,

Ну конечно. Если не знаешь в чем причина - вали все на Microsoft
30 мар 15, 09:44    [17448251]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить