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

Откуда:
Сообщений: 283
Добрый день.
Какие способы существуют проверки всех триггеров на наличие синтаксических ошибок?

Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)   Nov 24 2008 13:01:59   Copyright (c) 1988-2005 Microsoft Corporation  Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3) 

Спасибо.

З.Ы. Вспомнил FireBird - как же там просто можно проверить все объекты БД.
1 дек 09, 10:03    [8000272]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
renaton
Member

Откуда:
Сообщений: 753
В SSMS есть кнопка на тулбаре "Синтаксический анализ"
1 дек 09, 10:05    [8000283]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
GFX
Member

Откуда:
Сообщений: 283
renaton
В SSMS есть кнопка на тулбаре "Синтаксический анализ"


Вы про кнопку "Parse"?

Если да, то это не мой вариант. Мне надо проверить все триггера, предпочтительней использовать T-SQL
1 дек 09, 10:09    [8000311]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
GFX
renaton
В SSMS есть кнопка на тулбаре "Синтаксический анализ"


Вы про кнопку "Parse"?

Если да, то это не мой вариант. Мне надо проверить все триггера, предпочтительней использовать T-SQL
А откуда они взялись, с синтаксическими ошибками-то?
1 дек 09, 10:12    [8000330]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
GFX
Member

Откуда:
Сообщений: 283
iap
GFX
renaton
В SSMS есть кнопка на тулбаре "Синтаксический анализ"


Вы про кнопку "Parse"?

Если да, то это не мой вариант. Мне надо проверить все триггера, предпочтительней использовать T-SQL
А откуда они взялись, с синтаксическими ошибками-то?


Перевод БД с 2000 на 2005
1 дек 09, 10:17    [8000369]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
GFX
iap
GFX
renaton
В SSMS есть кнопка на тулбаре "Синтаксический анализ"


Вы про кнопку "Parse"?

Если да, то это не мой вариант. Мне надо проверить все триггера, предпочтительней использовать T-SQL
А откуда они взялись, с синтаксическими ошибками-то?


Перевод БД с 2000 на 2005
Мне тоже этим пришлось заниматься.
Достаточно было поискать в текстах объектов *=, =*, NOLOCK (у нас его очень любили без всякого WITH, причём вместе с другими хинтами).
После этого найденные объекты просматривал глазами.
SELECT [name],[type] FROM sys.objects WHERE OBJECT_DEFINITION([object_id]) LIKE '%*=%';

Причём здесь FireBird, не совсем понятно.
1 дек 09, 10:26    [8000453]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
GFX
Member

Откуда:
Сообщений: 283
iap
GFX
iap
GFX
renaton
В SSMS есть кнопка на тулбаре "Синтаксический анализ"


Вы про кнопку "Parse"?

Если да, то это не мой вариант. Мне надо проверить все триггера, предпочтительней использовать T-SQL
А откуда они взялись, с синтаксическими ошибками-то?


Перевод БД с 2000 на 2005
Мне тоже этим пришлось заниматься.
Достаточно было поискать в текстах объектов *=, =*, NOLOCK (у нас его очень любили без всякого WITH, причём вместе с другими хинтами).
После этого найденные объекты просматривал глазами.
SELECT [name],[type] FROM sys.objects WHERE OBJECT_DEFINITION([object_id]) LIKE '%*=%';

Причём здесь FireBird, не совсем понятно.


Эх глазами конечно хорошо. Но мне нужен скрипт.
Можно конечно программно получить текст триггера, а потом сделать alter.
Но дело в том что не поместиться текст триггера в nvarachar(4000) :(
Начинаю смотреть уже в сторону какой нить самописной тулзы.

З.Ы. В FireBird, вернее не в нем а IBExpert - есть кнопока типа Recompile all stored prog или Recomplile all triggers
1 дек 09, 10:36    [8000554]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
GFX
Но дело в том что не поместиться текст триггера в nvarachar(4000) :(
В SQL 2005 для этих целей надо использовать NVARCHAR(MAX)
1 дек 09, 10:38    [8000570]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
Glory
Member

Откуда:
Сообщений: 104760
GFX


Эх глазами конечно хорошо. Но мне нужен скрипт.
Можно конечно программно получить текст триггера, а потом сделать alter.
Но дело в том что не поместиться текст триггера в nvarachar(4000) :(
Начинаю смотреть уже в сторону какой нить самописной тулзы.



Уже есть nvarchar(max)
А также команда SET NOEXEC
1 дек 09, 10:38    [8000572]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Glory
GFX


Эх глазами конечно хорошо. Но мне нужен скрипт.
Можно конечно программно получить текст триггера, а потом сделать alter.
Но дело в том что не поместиться текст триггера в nvarachar(4000) :(
Начинаю смотреть уже в сторону какой нить самописной тулзы.



Уже есть nvarchar(max)
А также команда SET NOEXEC
А ещё
SET PARSEONLY {ON|OFF}
1 дек 09, 10:40    [8000586]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
GFX
Member

Откуда:
Сообщений: 283
iap
GFX
Но дело в том что не поместиться текст триггера в nvarachar(4000) :(
В SQL 2005 для этих целей надо использовать NVARCHAR(MAX)


Текст триггера моего, не поместился в nvarchar(max)....

Может у кого другие варианты есть?
1 дек 09, 12:48    [8001694]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
Glory
Member

Откуда:
Сообщений: 104760
GFX


Текст триггера моего, не поместился в nvarchar(max)....

Он у вас больше 2Гб что ли ?
1 дек 09, 12:50    [8001717]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31182
GFX
Текст триггера моего, не поместился в nvarchar(max)....
:-)
1 дек 09, 12:57    [8001791]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
GFX
Member

Откуда:
Сообщений: 283
alexeyvg
GFX
Текст триггера моего, не поместился в nvarchar(max)....
:-)


да нет

делал так

declare @text nvarchar(max)

SELECT @text = OBJECT_DEFINITION([object_id]) FROM sys.objects WHERE Name='TrName'

print @text

Print не весь текст вывел
1 дек 09, 13:15    [8001979]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
Glory
Member

Откуда:
Сообщений: 104760
GFX


Print не весь текст вывел

Ключевое слово "вывел"
1 дек 09, 13:17    [8002014]     Ответить | Цитировать Сообщить модератору
 Re: Проверка триггеров  [new]
GFX
Member

Откуда:
Сообщений: 283
сделал так

declare @text nvarchar(max)

SELECT @text = OBJECT_DEFINITION([object_id]) FROM sys.objects WHERE Name='TrName'
set @text=replace(@text,'create trigger','alter trigger')

exec (@text)

вроде работает. проверять можно :)
1 дек 09, 13:25    [8002100]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить