Bri*_*mbi 6 sql-server-2008 sql-server sql-server-2012
我需要确认我们的 SQL Server 中是否曾经存在过一个特定的表。是否存在可用于列出 SQL Server 实例中所有删除的数据库的现有脚本或方法?
Aar*_*and 18
好吧,我不知道ever,因为 SQL Server 不会永远保留这些信息。
此外,不清楚您是在询问表还是数据库。既然你都提到了,这里是对默认跟踪的查询(基于这个问题),它将返回其中一个,但只返回到默认跟踪的范围。它显示了谁丢弃了什么、何时以及从何处丢弃。
DECLARE @path nvarchar(260) = (SELECT
REVERSE(SUBSTRING(REVERSE([path]),
CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc'
FROM sys.traces WHERE is_default = 1);
SELECT ObjectType,
ObjectName,
DatabaseName,
LoginName,
HostName,
ApplicationName,
StartTime
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE EventClass = 47 AND EventSubClass = 1
ORDER BY StartTime DESC;
Run Code Online (Sandbox Code Playgroud)
该枚举的ObjectType
记录在这里,但如果你想过滤器,你可以使用ObjectType = 16964
数据库和ObjectType = 8277
用于表。
默认跟踪会在添加新行/文件时滚动并清除最旧的行/文件。如果您需要进一步返回,则需要恢复旧备份(如果您仍然拥有它们)。
您可以在 SSMS 中使用架构更改历史报告。
另一种选择是直接查询默认跟踪,如here所述
请注意,这些使用默认的内部信息,并且该信息仅存在一段时间。从服务器开始存在以来,它不会帮助您回答“曾经存在过”或“所有删除的数据库”。它会告诉你最近做了什么。
将来,如果此信息很重要,您将需要查看诸如服务器和数据库审计之类的内容。
归档时间: |
|
查看次数: |
1279 次 |
最近记录: |