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

Откуда:
Сообщений: 194
У меня есть база на 2008 сервере с compatibility level 2000. И мне нужно поменять на CL 2008. Поменять не сложно, но есть процедуры функции, тригера с использованием фич кокорые не поддержываются еще с 2005.
С помощю Microsoft SQL Server 2008 Upgrade Advisor я постмотреть не могу что нужно изменить, так как он работает только с 2000 или 2005.
Бекап с 2008 я не могу поднять на 2000,2005. Сгенерить скрипт с базы и накатить на 2000 или 2005 тоже не виходить, так как там уже есть фичи которые есть только в 2008.
Есть вариант искать например (*=, =*) в сгенерированом скрипте, но ето както долго и не красиво.
А есть вариант сделать проверку на валидность процедур. Тоесть, если процедура создавалась на 2000 с использованием =* то на 2008 она не создастса. И я хочу после изменения совместимости на 2008, проверить все процедури, но незнаю как. Думал поможет sp_recompile но ето не то.

Вопрос, как проверить все процедури на валидность? Знаю чно можно, но не помню как.
Тут правда динамичиский SQL может быть подводным камнем, но это можно і пересмотреть вручну, их не много.

Или может у когото есть другие варианты?
31 авг 11, 13:46    [11205803]     Ответить | Цитировать Сообщить модератору
 Re: Проверка хранимых процедур на валидность  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Я всё делал исключительно вручную.
Сначала выполнял что-то типа этого
SELECT [type],[name]
FROM sys.objects
WHERE [type] IN('V','P','TR','FN','IF','TF') AND OBJECT_DEFINITION([object_id]) LIKE N'%*=%'
ORDER BY [type];
А потом - ручками, ручками!
Иначе зачем программист нужен-то?

Надо ещё хинты проверить - больше двух можно теперь только со словом WITH
(исключение - NOLOCK) и что-то ещё.... Забыл!
31 авг 11, 15:57    [11207053]     Ответить | Цитировать Сообщить модератору
 Re: Проверка хранимых процедур на валидность  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
у меня есть некое решение, которое отслеживает пару-тройку десятков deprecated и вообще некошерностей.
31 авг 11, 15:58    [11207069]     Ответить | Цитировать Сообщить модератору
 Re: Проверка хранимых процедур на валидность  [new]
NEKOS
Member

Откуда:
Сообщений: 194
iap
Я всё делал исключительно вручную.
Сначала выполнял что-то типа этого
SELECT [type],[name]
FROM sys.objects
WHERE [type] IN('V','P','TR','FN','IF','TF') AND OBJECT_DEFINITION([object_id]) LIKE N'%*=%'
ORDER BY [type];
А потом - ручками, ручками!
Иначе зачем программист нужен-то?

Надо ещё хинты проверить - больше двух можно теперь только со словом WITH
(исключение - NOLOCK) и что-то ещё.... Забыл!


Вариант :), только что тоже нарыл:
select * from sys.sql_modules d
where d.definition like '%*=%'
31 авг 11, 16:10    [11207190]     Ответить | Цитировать Сообщить модератору
 Re: Проверка хранимых процедур на валидность  [new]
NEKOS
Member

Откуда:
Сообщений: 194
locky
у меня есть некое решение, которое отслеживает пару-тройку десятков deprecated и вообще некошерностей.

поделитесь
31 авг 11, 16:11    [11207199]     Ответить | Цитировать Сообщить модератору
 Re: Проверка хранимых процедур на валидность  [new]
NEKOS
Member

Откуда:
Сообщений: 194
iap
Надо ещё хинты проверить - больше двух можно теперь только со словом WITH
(исключение - NOLOCK) и что-то ещё.... Забыл!


Ну что искать можна здесь посмотреть
[url=]http://msdn.microsoft.com/en-us/library/ms143729.aspx[/url]
31 авг 11, 16:20    [11207319]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить