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

Откуда:
Сообщений: 135
Доброго времени суток.

Я новичок в SQL, поэтому не могу понять причин следующего казуса:
У меня есть VIEW следующего содержания:
ALTER VIEW AREPORT_RTMOP2_TR
AS
  SELECT TR.*, CCTS.REF_STRAT 
  FROM TR WITH (NOLOCK)
  INNER JOIN TASKS_SHORT AS CCTS ON TR.ID = CCTS.REF_TR
  INNER JOIN Справочник_МОП AS MOP ON TR.REF_МОП = MOP.ID
  WHERE ((TR.TaskType=2) AND
         (TR.Дата_запроса>(SELECT TOP 1 CAST(OptValue AS DATE) AS DayT FROM Options WHERE OptName='DayT_MOP2')) AND
         (ISNULL(CCTS.CG,0)=0) AND
         (MOP. [REF_Площадка]=1))

Некоторое время оно работает нормально, а потом, без видимых мне причин, начинает выдавать NULL во всех строках столбца REF_STRAT.
При этом выполнение этого же запроса отдельно, как запроса дает правильный результат и после пересоздания этого представления с помощью ALTER VIEW, работоспособность восстанавливается.
Такое было уже два раза за, примерно, три месяца использования.
Подскажите, с чем это может быть связано?
SQL-сервер 2012.
Заранее премного благодарен.
13 ноя 18, 09:37    [21732599]     Ответить | Цитировать Сообщить модератору
 Re: Перестает корректно работать VIEW. Из-за чего это может происходить?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
K-Nick,

почитайте
https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/sp-refreshview-transact-sql?view=sql-server-2017
13 ноя 18, 10:24    [21732659]     Ответить | Цитировать Сообщить модератору
 Re: Перестает корректно работать VIEW. Из-за чего это может происходить?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
K-Nick,
Например, синонимы на удалённый сервер есть
13 ноя 18, 10:25    [21732662]     Ответить | Цитировать Сообщить модератору
 Re: Перестает корректно работать VIEW. Из-за чего это может происходить?  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Достаточно внести изменение в структуру одной из базовых таблиц VIEW, и VIEW перестанет работать, пока его не пересоздашь.
Обращает на себя внимание и нелепое условие с TOP(1), но без ORDER BY.
То есть, Дата_запроса сравнивается со случайно попавшимся OptValue?
13 ноя 18, 10:39    [21732686]     Ответить | Цитировать Сообщить модератору
 Re: Перестает корректно работать VIEW. Из-за чего это может происходить?  [new]
K-Nick
Member

Откуда:
Сообщений: 135
iap,
В этой таблице есть только одна запись с OptName='DayT_MOP2', Так что TOP 1 здесь необязательно, но я подумал (м.б. я ошибся), что запрос будет выполняться быстрее, если он остановится на первом совпадении и не будет искать остальные, которых нет.
13 ноя 18, 11:19    [21732753]     Ответить | Цитировать Сообщить модератору
 Re: Перестает корректно работать VIEW. Из-за чего это может происходить?  [new]
K-Nick
Member

Откуда:
Сообщений: 135
Спасибо всем.

Теперь буду делать sp_refreshview всем VIEW после всех изменений в структуре таблиц.
Если не поможет - вернусь.
13 ноя 18, 12:32    [21732854]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить