G33*_*una 7 trigger sql-server sql-server-2012
在我们的生产数据库中添加和删除了一个登录触发器。master在添加触发器之后和删除之前,我有完整的备份。我正在尝试从备份中恢复,但在该server_triggers备份下看不到它。有没有办法从数据库备份中恢复登录触发器?
备份是从昨天晚上 11 点开始的。触发器是昨天早上添加的,今天早上删除了。
Mar*_*ith 12
恢复master有点痛苦。
我假设您只是想恢复定义?
我只是尝试创建一个登录触发器,备份 master 并在记事本中打开 *.bak 文件并搜索“CREATE TRIGGER” - 它在文件中清晰可见。
或者,您可以将其恢复为常规用户数据库(假设master2如下)并查看以下内容是否找到它(需要通过DAC连接)
USE master2
SELECT *,
CAST(imageval AS NVARCHAR(MAX)),
CAST(imageval AS VARCHAR(MAX))
FROM sys.sysobjvalues
WHERE CAST(imageval AS NVARCHAR(MAX)) LIKE N'%TRIGGER%'
OR CAST(imageval AS VARCHAR(MAX)) LIKE '%TRIGGER%'
Run Code Online (Sandbox Code Playgroud)
以上对我有用。YMMV 并确保您对任何结果进行理智检查(如果定义被拆分为多个页面并且可能会发现重影版本,则第一种方法肯定不起作用)。
如果触发器对象是加密的,我想它在sys.sysobjvalues使用 DAC 时是可见的,尽管我的LIKE子句肯定找不到它。您需要查看sys.sysschobjs并objid从名称中获取。希望它没有加密,否则需要好好阅读这篇文章:The Internals ofWITH ENCRYPTION
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |