如何从 SQL Server 中还原的数据库中删除触发器

YoY*_*oYo 1 trigger sql-server restore

我正在使用 SQL Server 2008 Management Studio。我.bak从客户那里得到了一个备份文件来解决一个特定的问题。

.bak文件中恢复数据库后,我无法执行任何更改查询或更改主密钥。

在我的新数据库中,在客户端环境 DB 中创建的所有触发器都附加到它。所以得到以下错误。

消息 208,级别 16,状态 1,过程 dbtrg_DBEventsmodel,第 16 行
无效的对象名称“DBMonitor.dbo.ddl_DBEvents”。

有没有办法在恢复的数据库中分离这些触发器?

Mik*_*son 6

您有一个将 DDL 事件记录到ddl_DBEvents数据库中的表的数据库触发器DBMonitor

您可以从对象资源管理器中的 SQL Server Management Studio 中删除或禁用触发器YourDatabase - Programmability - Database Triggers

AdventureWorks 示例

您还可以从代码中禁用或删除触发器:

DISABLE TRIGGER dbtrg_DBEventsmodel ON DATABASE;
DROP TRIGGER dbtrg_DBEventsmodel ON DATABASE;
Run Code Online (Sandbox Code Playgroud)

参考:

禁用触发器 (Transact-SQL) - 联机丛书
DROP TRIGGER (Transact-SQL) - 联机丛书