获取有关 DML 触发器的信息 - SQL Server

获取有关 DML 触发器的信息 - SQL Server

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric 中的 SQL 数据库

本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中获取有关 DML 触发器的信息。 此信息可包含针对某个表的触发器的类型、触发器的名称、其所有者以及创建或修改日期。 如果在创建触发器时未加密,你可获取该触发器的定义。 通过该定义,可以帮助你了解该触发器如何影响对其定义该触发器的表。 此外,你可以找出特定触发器使用的对象。 通过该信息,可在数据库中影响触发器的对象发生更改或删除它们时确定这些对象。

权限

sys.sql.modules、sys.object、sys.triggers、sys.events、sys.trigger_events

目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。 有关详细信息,请参阅 Metadata Visibility Configuration。

OBJECT_DEFINITION、OBJECTPROPERTY、 sp_helptext

要求 公共 角色具有成员身份。 用户对象的定义对拥有以下任一权限的对象所有者或受赠方可见:ALTER、CONTROL、TAKE OWNERSHIP 或 VIEW DEFINITION。

db_owner、 db_ddladmin 和 db_securityadmin 固定数据库角色的成员隐式具有这些权限。

sys.sql_expression_dependencies

需要 VIEW 对数据库拥有DEFINITION权限,对数据库的 sys.sql_expression_dependencies 拥有SELECT权限。 默认情况下,SELECT 权限仅授予 db_owner 固定数据库角色的成员。 向其他用户授予 SELECT 和 VIEW DEFINITION 权限时,被授权者可以查看数据库中的所有依赖项。

使用 SQL Server Management Studio

查看 DML 触发器的定义

在 “对象资源管理器” 中,连接到 数据库引擎 的实例,然后展开该实例。

展开你所需的数据库,再展开 “表”,然后展开包含要查看其定义的触发器的表。

展开“触发器”,右键单击需要的触发器,然后单击“修改”。 将在查询窗口中显示 DML 触发器的定义。

查看 DML 触发器的依赖关系

在 “对象资源管理器” 中,连接到 数据库引擎 的实例,然后展开该实例。

展开你所需的数据库,再展开 “表”,然后展开包含要查看的触发器及其依赖关系的表。

展开“触发器”,右键单击需要的触发器,然后单击“查看依赖关系”。

在“对象依赖关系”窗口中,要查看依赖于 DML 触发器的对象,请选择“依赖于 的对象”。 将在 “依赖关系” 区域显示这些对象。

要查看 DML 所依赖的对象,请选择“ 所依赖的对象”。 将在 “依赖关系” 区域显示这些对象。 展开每个节点以查看所有对象。

若要获取有关 “依赖关系” 区域中显示的对象的信息,请单击该对象。 在 “所选对象” 字段中,在 “名称”、 “类型”和 “依赖关系类型” 框中提供信息。

若要关闭 “对象依赖关系” 窗口,请单击 “确定”。

“使用 Transact-SQL”

查看 DML 触发器的定义

连接到 数据库引擎。

在标准菜单栏上,单击 “新建查询” 。

将以下示例之一复制并粘贴到查询窗口中,然后单击 “执行”。 每个示例显示你如何查看 iuPerson 触发器的定义。

USE AdventureWorks2022;

GO

SELECT definition

FROM sys.sql_modules

WHERE object_id = OBJECT_ID(N'Person.iuPerson');

GO

USE AdventureWorks2022;

GO

SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.iuPerson')) AS ObjectDefinition;

GO

USE AdventureWorks2022;

GO

EXEC sp_helptext 'Person.iuPerson'

GO

查看 DML 触发器的依赖关系

连接到 数据库引擎。

在标准菜单栏上,单击 “新建查询” 。

将以下示例之一复制并粘贴到查询窗口中,然后单击 “执行”。 每个示例显示你如何查看 iuPerson 触发器的依赖关系。

USE AdventureWorks2022;

GO

SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name,

o.type_desc AS referencing_description,

COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id,

referencing_class_desc, referenced_class_desc,

referenced_server_name, referenced_database_name, referenced_schema_name,

referenced_entity_name,

COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name,

is_caller_dependent, is_ambiguous

FROM sys.sql_expression_dependencies AS sed

INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id

WHERE referencing_id = OBJECT_ID(N'Person.iuPerson');

GO

查看有关数据库中的 DML 触发器的信息

连接到 数据库引擎。

在标准菜单栏上,单击 “新建查询” 。

将以下示例之一复制并粘贴到查询窗口中,然后单击 “执行”。 每个示例显示你如何查看数据库中有关 DML 触发器 (TR) 的信息。

USE AdventureWorks2022;

GO

SELECT name, parent_id, create_date, modify_date, is_instead_of_trigger

FROM sys.triggers

WHERE type = 'TR';

GO

USE AdventureWorks2022;

GO

SELECT name, object_id, schema_id, parent_object_id, type_desc, create_date, modify_date, is_published

FROM sys.objects

WHERE type = 'TR';

GO

USE AdventureWorks2022;

GO

SELECT OBJECTPROPERTY(OBJECT_ID(N'Person.iuPerson'), 'ExecIsInsteadOfTrigger');

GO

查看有关激发 DML 触发器的事件的信息

连接到 数据库引擎。

在标准菜单栏上,单击 “新建查询” 。

将以下示例之一复制并粘贴到查询窗口中,然后单击 “执行”。 每个示例显示如何查看激发 iuPerson 触发器的事件。

USE AdventureWorks2022;

GO

SELECT object_id, type, type_desc, is_trigger_event, event_group_type, event_group_type_desc

FROM sys.events

WHERE object_id = OBJECT_ID('Person.iuPerson');

GO

USE AdventureWorks2022;

GO

SELECT object_id, type,is_first, is_last

FROM sys.trigger_events

WHERE object_id = OBJECT_ID('Person.iuPerson');

GO

相关内容

CREATE TRIGGER (Transact-SQL)

DROP TRIGGER (Transact-SQL)

ENABLE TRIGGER (Transact-SQL)

DISABLE TRIGGER (Transact-SQL)

EVENTDATA (Transact-SQL)

sys.sp_rename(Transact-SQL)

ALTER TRIGGER (Transact-SQL)

sys.sp_help(Transact-SQL)

sys.sp_helptrigger(Transact-SQL)

sys.triggers (Transact-SQL)

sys.trigger_events(Transact-SQL)

sys.sql_modules (Transact-SQL)

sys.assembly_modules(Transact-SQL)

sys.server_triggers(Transact-SQL)

sys.server_trigger_events(Transact-SQL)

sys.server_sql_modules(Transact-SQL)

sys.server_assembly_modules(Transact-SQL)

OBJECTPROPERTY (Transact-SQL)

OBJECT_DEFINITION(Transact-SQL)

相关推荐

省事儿的灰豆汤的做法
365bet提款多久到

省事儿的灰豆汤的做法

📅 07-08 👁️ 7666
《臨江仙》線上開播!演員陣容、劇情、白鹿、曾舜晞上演虐戀情引爆追劇熱潮!
高仿在哪买最好?2025年最新渠道大公开,避免踩雷!
365bet提款多久到

高仿在哪买最好?2025年最新渠道大公开,避免踩雷!

📅 12-01 👁️ 8750
欢欣名字含义:
365bet提款多久到

欢欣名字含义:

📅 07-13 👁️ 3435
开机时进入ghost的快捷键
mobile365体育投注备用

开机时进入ghost的快捷键

📅 06-28 👁️ 7003
《戰地風雲5》戰地5爲什麼叫男友5?
365bet提款多久到

《戰地風雲5》戰地5爲什麼叫男友5?

📅 10-18 👁️ 3661