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

Откуда:
Сообщений: 3
Добрый день!
ms sql 2008 (sp2)
В нескольких бд есть большое количество вьюх, причем некоторые из них имеют синтаксические ошибки. так вот, проверять все вьюхи очень накладно, не подскажете как создать функцию, которая проверяла бы все вьюхи из бд (т.е. пыталась бы ее выполнить), и, в случае, если вьюха не выполнясь - выводила ее название.
11 июл 11, 06:57    [10953608]     Ответить | Цитировать Сообщить модератору
 Re: Как получить все корректные view  [new]
denisofff
Member

Откуда: Владивосток
Сообщений: 62
Только окольными путями. Например, через INFORMATION_SCHEMA.VIEWS перебирать все представления, в блоке TRY .. CATCH попытаться выполнить динамический запрос с ним (например SELECT COUNT(*) FROM @VIEW) и, если произошла ошибка - запоминать это представление.
Но, по-моему, это как-то дико, что в представлениях есть синтаксические ошибки.
11 июл 11, 10:18    [10954035]     Ответить | Цитировать Сообщить модератору
 Re: Как получить все корректные view  [new]
romany4
Member

Откуда:
Сообщений: 3
denisofff
Но, по-моему, это как-то дико, что в представлениях есть синтаксические ошибки.

Вот такое мне наследство досталось))))))
11 июл 11, 10:20    [10954038]     Ответить | Цитировать Сообщить модератору
 Re: Как получить все корректные view  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
romany4,
Прогнал на одной базе такой скрипт:
set nocount on

declare @n nvarchar(4000), @s nvarchar(4000)

declare cur cursor local fast_forward for
 select [name] from sys.objects where [type] = 'v'

open cur

fetch cur into @n

while @@fetch_status = 0
begin
 set @s = 'select top 1 * from ' + @n + char(10) + 'go'
 print @s
 
 exec(@s)
 
 fetch cur into @n
end

close cur
deallocate cur


Фрагмент результата:

Картинка с другого сайта.
11 июл 11, 10:38    [10954151]     Ответить | Цитировать Сообщить модератору
 Re: Как получить все корректные view  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
"go" описывать не надо. Вы сейчас скрипт сочинили "select top 1 * from <View> as go". Только поэтому он у вас и заработал.
11 июл 11, 10:40    [10954166]     Ответить | Цитировать Сообщить модератору
 Re: Как получить все корректные view  [new]
romany4
Member

Откуда:
Сообщений: 3
всем ОГРОМНОЕ спасибо)))
11 июл 11, 10:54    [10954283]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить