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

Откуда:
Сообщений: 10
Здравствуйте, господа.
Первый раз с таким столкнулся...
Есть хранимая процедура. Она вызывается в одном из шагов джоба. Скорость выполнения - минуты.
Попытка ее исполнить "правой мышкой" в студии закончилась неудачей - почти два часа выполнялась...не дождался - завалил.
В хранимке фактически одна инструкция - MERGE. В качестве источника для сравнения целевой таблицы используется вьюха. Простой селект со звездой. Попытка "правой мышкой" выбрать первые 1000 - тот же результат..завалил через час. Из проекта вьюхи копирую текст запроса в простое окно запроса - ошибка...не найдена некоторая функция.
Вообще не пойму как в джобе все работает, да еще за несколько минут! Пожалуйста, не нужно про все это неправильно и т.п. Я базу увидел месяц назад...объемы в сотни гигибайт...реально в обработке 10%...потихоньку вычищаю мусор...тихо ... уже не удивляюсь ни чему.
8 окт 14, 22:45    [16679227]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная вьюха и еще более непонятная хранимка  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Подпол,

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

Ну и оставьте свои "попытки правой мышкой" при себе. Сервер понимает только язык SQL, и для того чтобы вам тут помогли нам нужно видеть что вы там пытаетесь выполнить. Так что или вы публикуете текст ваших хранимок, вьюх и прочих объектов, а еще желательно и планов выполнения, или можете дальше кликать в непонятные процедуры.

Ну и, select TOP 1000 * from view это совсем не тоже самое что и MERGE ... using view
8 окт 14, 23:47    [16679386]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная вьюха и еще более непонятная хранимка  [new]
Подпол
Member

Откуда:
Сообщений: 10
Я может выразился не совсем понятно для местных корифеев баз данных... Хотел просто донести мысль о том, что в джобе процедура выполняется, и выполняется быстро. А если ее выполнить используя интерфейс менеджмент студии - хоть "правой мышкой", хоть EXECUTE в окне запросов...ответа не дождаться. Шаг в джобе - одна инструкция - EXECUTE этой хранимки. Во "внутренностях" хранимки ОДНА инструкция - MERGE целевой таблицы с источником - селект * фром вьюв. Попытка открыть (прочитать) 1000 записей из вьюхи через интерфейс - та же неудача. Скопированный из проекта вьюхи запрос в отдельном окне запросов - ошибка "не найдена функция, или их слишком много". Смена текущей базы на другую - море неизвестных таблиц и пр.. Баз во вьюхе в джойнах используется много, одна база даже на другом инстансе сервера (т.е. крутится на этой же виртуальной машине). Сервер 2012. Я просто не пойму, почему в джобе выполняется то, что мне не удается выполнить в интерфейсе студии хоть целиком, хоть по частям, хоть правой мышкой, хоть врукопашную на SQL ... Нет, SELECT TOP 1000 FROM целевая таблица отрабатывается. Если кто-то переместил некую функцию (ту, которая используется во вьюхе) в другую базу - то как в джобе эта ошибка не возникает. В студии я работаю под админскими правами...да и это не причем - вывалилась бы сразу ошибка об отсутствии прав...ну куда еще выше.
Ну а если кому конкретика на SQL - могу только текст хранимки. Ну что там интересного может быть...целевая таблица с forceseek, источник сравнения - селект со звездой из вьюхи, предикат по двум полям, при несовпадении - UPDATE полей (около сотни), при отсутствии - INSERT.
Тело вьюв - 16 печатных страниц, около 100 полей, которые мало того, что берутся из более трех десятков джойнов к другим таблицам (два джойна к подзапросам), шесть из которых в базе другого инстанса сервера на этой же машине, так и еще пара десятков полей берутся через многоэтажные CASE по значениям.
План исполнения хранимки кому-нибудь интересен - выложу, не вопрос... Но прочитайте выделенное "жирным"... В этом главный вопрос. Извините, что выражаюсь не на Вашем языке...
9 окт 14, 06:55    [16679761]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная вьюха и еще более непонятная хранимка  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
в джобе наверняка процедура выполняется от имени другого пользователя....
9 окт 14, 07:01    [16679767]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная вьюха и еще более непонятная хранимка  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
Подпол
Я просто не пойму, почему в джобе выполняется то, что мне не удается выполнить в интерфейсе студии хоть целиком, хоть по частям, хоть правой мышкой, хоть врукопашную на SQL ...
Чудес не бывает, либо job и вы передаете в параметры процедуры разные значения, либо выполняете разные процедуры, либо исполняемый в процедуре код зависит от запускающего пользователя, либо запускаете джоб и процедуру в разное время, когда разная нагрузка на сервер.

Советую еще почитать блог SomewhereSomehow, у него есть отличная статья по этому вопросу:
Медленно в приложении, быстро в SSMS (часть 1)
9 окт 14, 07:07    [16679773]     Ответить | Цитировать Сообщить модератору
 Re: Непонятная вьюха и еще более непонятная хранимка  [new]
Подпол
Member

Откуда:
Сообщений: 10
В процедуре нет никаких параметров. А вот про то, что джоб выполняется есс-но от имени другого пользователя...как-то не подумал. Решил, что если я себе налепил прав (можно сказать все), более того в SSMS в кэпшене окна видно "(Администратор)", то разницы нет. Теперь понимаю, что ошибка "неизвестная функция или неоднозначность в определении" (указано в тексте только dbo.myfunction) говорит о том, что с моими правами их видно несколько. Не совсем понимаю, как это возможно... Тупо поищу по всем инстансам и базам такое имя. Нет...начну с того, что подключусь в SSMS от имени учетки выполняющей джоб... Спасибо за наводку про учетки запуска...тут вообще такой бардак...налеплено учеток с немерянными (точнее избыточными) правами. Но самое плохое, что есть несколько приложений с "зашитыми" учетками... До исходников приложений еще руки не дошли... Других проблем выше крыши.
9 окт 14, 12:44    [16681233]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить