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

Откуда:
Сообщений: 3
Возможно кто-то сталкивался....
Короче, ситуация такая.
Есть две БД на одном сервере. Структура баз одинаковая - одна база головного предприятия, другая - всех его филиалов.
Создана специальная БД для анализа, в которой размещена вьюха (View_OSV), где тупо склеиваются вде таблицы, типа
select * from GOLOVA.dbo.Trans (nolock)
union all
select * from FILIAL.dbo.Trans (nolock)

Далее создана хранимая процедура с тремя параметрами: Дата начала, Дата окончания, Филиал.

Что-то типа
ALTER PROCEDURE [dbo].[OSV]

@PeriodStart Datetime=null,
@PeriodEnd datetime=null,
@Filial Varchar(5)=null
AS
BEGIN
select * from pubs.dbo.View_OSV where Date between @PeriodStart and @PeriodEnd and Filial=@Filial
end

Теперь самое интересное!
Если вызвать эту процедуру с параметром @Filial=Golova (как-бы только данные головного предприятия) за любой период, то всё ок. Если сразу после этого запустить с параметром @Filial=Fil1 (какого-либо филиала), то CPU сервера загружается на 100% и сервак виснет.

Далее замечена такая закономерность, что если пересоздать процедуру или вьюху, то процедура с параметром филиала начинает отрабатывать нормально, но перестает работать с параметром @Filial=Golova. Складывается такое ощущение, что в момент коннекта к другой БД наступает какой-то конфликт либо какой-то кеш не затирается.
Да. Вьюха всегда отрабатывает стабильно, т.е. проблема именно при вызове процедуры с параметрами.
Может кто сталкивался с этим и знает, как лечить?

У меня SQL2005 64bit Developer Ed.
Microsoft SQL Server Management Studio 9.00.3042.00
4 авг 09, 10:45    [7494035]     Ответить | Цитировать Сообщить модератору
 Re: 16 процов сервера умирают при запуске хранимой процедуры  [new]
Glory
Member

Откуда:
Сообщений: 104760
Это у вас попытка секционирования что ли ?
Планы выполнения при разных параметрах вы сравнивали ?
4 авг 09, 10:57    [7494132]     Ответить | Цитировать Сообщить модератору
 Re: 16 процов сервера умирают при запуске хранимой процедуры  [new]
Anddros
Member

Откуда:
Сообщений: 1077
create procedure ...
with recompile

as
...
4 авг 09, 11:04    [7494190]     Ответить | Цитировать Сообщить модератору
 Re: 16 процов сервера умирают при запуске хранимой процедуры  [new]
Mayh
Guest
думаю поможет так

ALTER PROCEDURE [dbo].[OSV]

@PeriodStart Datetime=null,
@PeriodEnd datetime=null,
@Filial Varchar(5)=null
AS
BEGIN

declare
@PeriodStart_ Datetime,
@PeriodEnd_ datetime,
@Filial_ Varchar(5)

select @PeriodStart_ = @PeriodStart, @PeriodEnd_ = @PeriodEnd, @Filial_ = @Filial


select * from pubs.dbo.View_OSV where Date between @PeriodStart_ and @PeriodEnd_ and Filial=@Filial_
end


4 авг 09, 11:16    [7494287]     Ответить | Цитировать Сообщить модератору
 Re: 16 процов сервера умирают при запуске хранимой процедуры  [new]
Lukin Sergey
Member

Откуда:
Сообщений: 3
Блин, чудеса! Оба совета работают)) Спасибо.
А чего там, собственно, такое может быть?
4 авг 09, 12:11    [7494856]     Ответить | Цитировать Сообщить модератору
 Re: 16 процов сервера умирают при запуске хранимой процедуры  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Lukin Sergey
Блин, чудеса! Оба совета работают)) Спасибо.
А чего там, собственно, такое может быть?


в одном случае план выполнения строится каждый раз
в другом случае план строится общий для обоих случаев
в вашем случае строился один план и не перестраивался при изменении параметров, от чего и беда была
4 авг 09, 14:41    [7495978]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить