2016-06-13 95 views

回答

5

一旦它们被删除,它们就消失了。 。

他们占用的空间最终将被覆盖,有可能获得来自数据文件的分析一些信息之前,这种情况或事务日志,但没有什么建于

+0

或者可能还原备份并检查架构。 – OldBoyCoder

+0

\t从sys.objects中选择*表示已删除对象上的东西! – user1254579

+2

@ user1254579没有。与'SELECT * FROM anytable'相同不会返回删除的行。在该视图后面的系统基表所使用的数据页面上仍然可能存在关于它们的东西,但是这需要“dbcc页面”并手动解码二进制数据才能找到它。 –

2

试试这个:

SELECT 
    [Operation], 
    [Transaction Id], 
    [Transaction SID], 
    [Transaction Name], 
    [Begin Time], 
    [SPID], 
    [Description] 
FROM 
    fn_dblog (NULL, NULL) 
WHERE 
    [Transaction Name] = 'DROPOBJ' 

来源:https://www.mssqltips.com/sqlservertip/3090/how-to-find-user-who-ran-drop-or-delete-statements-on-your-sql-server-objects/

+0

它做了什么!?当我运行它时,它会显示为空 – user1254579

+3

@ user1254579使用数据库日志文件返回有关对象放置事件的详细信息...就像您要求的那样。 –

+0

@ user1254579好像您的日志已被清除,然后... –

2

为了获得有关DROP事件的一些基本信息(也关于其他事件),我使用SQL Server的默认跟踪。

请参阅以下文章https://www.simple-talk.com/sql/performance/the-default-trace-in-sql-server---the-power-of-performance-and-security-auditing/对象事件。小心使用WHERE谓词。

注意:提到的脚本不会返回删除/截断的数据。如果您有备份或者数据库处于完全恢复状态,则希望恢复已删除的数据,但您必须提供更多信息。