Можно ли получить все триггеры, связанные с таблицей, с помощью SQL Server 2008 CLR программирования? - PullRequest
1 голос
/ 01 июня 2010

Можно ли использовать .net (C # SQL CLR), чтобы найти все триггеры, связанные с таблицей?

И смогу ли я определить тип этого триггера? - CLR или T-SQL?

Спасибо, Chaks

Ответы [ 2 ]

1 голос
/ 01 июня 2010

Вы можете сделать это с помощью запроса к системным таблицам. Примерно так:

SELECT  tr.name as TriggerName,
        tr.type_desc TriggerType,
        tbl.name TableName,
        sch.table_schema SchemaName
FROM    sys.objects tr
INNER JOIN sys.objects tbl
    ON (tr.parent_object_id = tbl.object_id
        AND tbl.name = 'SomeTableName')
INNER JOIN information_schema.tables sch
    ON (tbl.name = sch.table_name)
WHERE tr.type IN ('TR', 'TA')

ПРИМЕЧАНИЕ: значениями type_desc являются CLR_TRIGGER и SQL_TRIGGER соответственно.

1 голос
/ 01 июня 2010

Ну, у нас есть Объекты управления SQL Server , включая Database.Triggers , или вы всегда можете использовать некоторые команды T-SQL из .NET и посмотреть на системные представления, такие как sys.triggers , если у вас есть разрешения.

...