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

я знаю что таблица изменяется тригерами.
Можно ли узнать какими именно тригерами?

спасибо
9 июн 15, 18:14    [17751442]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
миксер, можно этим, например, поискать:

https://www.sql.ru/forum/1045562/sql-refactor-studio-free-addin-for-ssms-2012-2014.

Не знаю, правда, ищет ли в триггерах.
9 июн 15, 18:19    [17751477]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
o-o
Guest
А права-то какие в базе есть?
Можно в sql_modules поискать на like '%your_table%'
9 июн 15, 18:20    [17751485]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
миксер
Guest
o-o
А права-то какие в базе есть?
Можно в sql_modules поискать на like '%your_table%'


select * from sys.sql_modules as sc
inner join sysobjects so on so .id = sc.object_id
where definition like

сделал так ) но тригеров не нашел
9 июн 15, 18:29    [17751535]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4846
миксер
o-o
А права-то какие в базе есть?
Можно в sql_modules поискать на like '%your_table%'


select * from sys.sql_modules as sc
inner join sysobjects so on so .id = sc.object_id
where definition like

сделал так ) но тригеров не нашел


Может там написано что-о универсальное, где имя не прописано напрямую, а передаётся через параметр или переменную?
9 июн 15, 20:00    [17751972]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
o-o
Guest
a_voronin
Может там написано что-о универсальное, где имя не прописано напрямую, а передаётся через параметр или переменную?

в триггер передается через параметр или переменную?

миксер,
вы только в данной базе проверили триггеры?
могут и из соседней изменять
9 июн 15, 20:41    [17752163]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Minamoto
миксер, можно этим, например, поискать:

https://www.sql.ru/forum/1045562/sql-refactor-studio-free-addin-for-ssms-2012-2014.

Не знаю, правда, ищет ли в триггерах.


Эта поделка мягко говоря недоделанная, уж пусть автор не принимает на свой счет.

Искать надо или пальцами, или на худой конец поставить red-gate приблудку SQL Search.
Ну или приличный AddIn от Rantsevich, рядом тут долгоиграющая тема.

А вообще-то можно и профайлер пустить и отловить, кто, что и где.
9 июн 15, 21:35    [17752423]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Зависимости уже предлагали посмотреть?
9 июн 15, 21:47    [17752476]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
o-o
Guest
pkarklin,

так они при cross-database dependencies даются только для referenced
+
SELECT OBJECT_NAME (referencing_id),referenced_database_name, 
    referenced_schema_name, referenced_entity_name
FROM sys.sql_expression_dependencies
WHERE referenced_database_name IS NOT NULL;

и никаких referencING_database_name...

а надо бы наоборот, кто на эту таблицу из других баз в триггерах ссылается :(
9 июн 15, 21:53    [17752498]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
o-o,

На мой взгляд, уж слишком всё усложнено (триггера в другой базе), а самое простое не проверено.
9 июн 15, 22:01    [17752529]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
o-o
Guest
pkarklin,
депенденсы меньше отлавливают, чем sql_modules.
моей фантазии хватило только на умышленную извращенную динамику
такого вида:
declare @sql varchar(100) = 'insert into dbo.t' + '2 default values';
   exec(@sql);

вот ее не отловить.
остальное ловит.
и по другим базам тоже, курсорчиком

create table dbo.t1 (id int, col int);
create table dbo.t2 (id int identity);
go

create trigger dbo.tr1
on dbo.t1
after insert
as insert into dbo.t2 default values;
go

create trigger dbo.tr2
on dbo.t1
after delete
as exec('insert into dbo.t2 default values');
go

create trigger dbo.tr3
on dbo.t1
after update
as 
   declare @sql varchar(100) = 'insert into dbo.t' + '2 default values';
   exec(@sql);
go

select definition
from sys.sql_modules
where definition like '%trigger%t2%';
---- result:
--definition
--  create trigger dbo.tr1  on dbo.t1  after insert  as insert into dbo.t2 default values;  
--  create trigger dbo.tr2  on dbo.t1  after delete  as exec('insert into dbo.t2 default values');  

select OBJECT_NAME(referencing_id) as obj_name
from sys.sql_expression_dependencies
where referenced_entity_name = 't2'
--- result:
--obj_name
--tr1
10 июн 15, 00:48    [17753055]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
o-o,

автор
моей фантазии хватило только на умышленную извращенную динамику

Да, этот вариант я рассматривал, как самый "крайний".
автор
остальное ловит.

ТС сделал так:
ТС
select * from sys.sql_modules as sc
inner join sysobjects so on so .id = sc.object_id
where definition like

Этот запрос мне ни о чем не говорит. Допускаю, что и реального запроса то и не было, как и стартового:
миксер
я знаю что таблица изменяется тригерами.
10 июн 15, 01:05    [17753086]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
Jaffar
Member

Откуда:
Сообщений: 633
o-o,

можно еще имя таблицы вставить в поле другой таблицы и оттуда его брать.

selct 'insert '+Tabname+' default values' from Table3 where ....


А вообще можно на изменяемую табличку повесить триггер, отпинывающий изменения, с raiserror`ом(типа вы совершили ужасную ошибку , срочно позвоните программисту по тел. 12-34-56, иначе все пропало).
10 июн 15, 09:15    [17753410]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
Jaffar
Member

Откуда:
Сообщений: 633
Jaffar,

я не знаю можно ли в 2008 и старше посмотреть цепочку вызовов при ошибке, в 2005 не было такого.
но если можно....
10 июн 15, 09:17    [17753419]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4846
o-o
a_voronin
Может там написано что-о универсальное, где имя не прописано напрямую, а передаётся через параметр или переменную?


Не надо передергивать. Человек искал код, который делает ALTER и не нашел прописанного имени таблицы. Я спрашиваю, может там код динамический и имя таблицы через переменную передаётся. А вы триггер, триггер...
10 июн 15, 10:18    [17753687]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
o-o
Guest
a_voronin
o-o
пропущено...


Не надо передергивать. Человек искал код, который делает ALTER и не нашел прописанного имени таблицы.
Я спрашиваю, может там код динамический и имя таблицы через переменную передаётся.
А вы триггер, триггер...

a_voronin, как не надоест-то, я читать умею, передергиваете как раз вы.
вернее, каждому своему ответу не в тему придумываете подходящую тему.
3 упоминания триггера на 5 строк, конечно, не показатель.
надо было писать "тригачу триггер, натриггеровавший до утриггивания", чтоб вы от темы не уклонялись???

К сообщению приложен файл. Размер - 8Kb
10 июн 15, 10:27    [17753730]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
a_voronin
o-o
пропущено...


Не надо передергивать. Человек искал код, который делает ALTER и не нашел прописанного имени таблицы. Я спрашиваю, может там код динамический и имя таблицы через переменную передаётся. А вы триггер, триггер...


2 o-o

"pkarklin,
депенденсы меньше отлавливают, чем sql_modules.
моей фантазии хватило только на умышленную извращенную динамику
такого вида:
declare @sql varchar(100) = 'insert into dbo.t' + '2 default values';
exec(@sql);

вот ее не отловить"

Я там выше написал: почему бы не воспользоваться профайлером для начала?
В нем можно отловить всё, и даже из какого места вызван запрос на изменение таблицы, а затем рыть глубже.

Дело в том, что нельзя ведь верить ТС на 100% "я знаю что таблица изменяется тригерами."
Ну и триггеры и процедуры могут быть CLR.
10 июн 15, 10:29    [17753740]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
o-o
Guest
Winnipuh,

так может у него элементарно нет ALTER TRACE,
у меня вот "официально" нет, например.
про свои права в базе он умалчивает, так что там о серверных мечтать.
может, он потому и триггеры не получил, что у самого права всего на одну схему в базе,
остальное не видит и думает, что этого остального нет
10 июн 15, 10:33    [17753775]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
o-o
Winnipuh,

так может у него элементарно нет ALTER TRACE,
у меня вот "официально" нет, например.
про свои права в базе он умалчивает, так что там о серверных мечтать.
может, он потому и триггеры не получил, что у самого права всего на одну схему в базе,
остальное не видит и думает, что этого остального нет
10 июн 15, 14:31    [17755299]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
o-o
Winnipuh,

так может у него элементарно нет ALTER TRACE,
у меня вот "официально" нет, например.
про свои права в базе он умалчивает, так что там о серверных мечтать.
может, он потому и триггеры не получил, что у самого права всего на одну схему в базе,
остальное не видит и думает, что этого остального нет


А, ну да, логично.
А сам ТС практичеки не участвует в теме.
10 июн 15, 14:32    [17755304]     Ответить | Цитировать Сообщить модератору
 Re: изменение таблицы тригером  [new]
o-o
Guest
Winnipuh,

да ваще.
если бы не...,
можно было бы подумать, что пишет моя начальница.
у ней *мания*.
все ей фальсифицируют таблицы.
и если она решила, что из триггера, то все, спасения нет:
"мои таблицы модифицируются из триггеров, немедленно найдите мне, кто, где, когда"

и нету ни триггеров, ни фальсификаций
одни неприкрытые фантазии
10 июн 15, 14:47    [17755403]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить