2015-11-06 47 views
0

請看下面尋找誰跑了DROP COLUMN語句

USE [ExperimentalDB] 
GO 

--Create table tblTestEmployee 
CREATE TABLE [dbo].[tblTestEmployee] 
(
    [EmployeeID] [int] IDENTITY(1,1) NOT NULL, 
    [EmpName] [varchar](100) NOT NULL, 
    [Address] [varchar](100) NOT NULL 
) 

--Populate some records to the tblTestEmployee 
INSERT INTO [dbo].[tblTestEmployee] 
VALUES('Emp1','Address1'),('Emp2','Address2'),('Emp3','Address3'),('Emp4','Address4') 

--Drop the column Address 
ALTER TABLE [dbo].[tblTestEmployee] DROP COLUMN [Address] --ONLY this 

--Drop the table 
DROP TABLE [dbo].[tblTestEmployee] -- NOT THIS 

--Find who has done that 
SELECT [Transaction Id], [Begin Time], SUSER_SNAME ([Transaction SID]) AS [User],[Transaction Name],Operation,[Transaction SID] 
FROM fn_dblog (NULL, NULL) 

我的目標是要找出誰已降至列[聯繫地址]

但通過觀察的輸出用戶fn_dblog,我無法弄清楚。 任何人都可以幫助我。

謝謝。

+0

我創建了[dbhistory.com](http://dbhistory.com)來回答這樣的問題。 –

回答

1

使用下面顯示參與DROP命令所有日誌

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

從上面的結果集取交易SID,並把它傳遞給系統功能SUSER_SNAME()得到確切的用戶名:

SELECT SUSER_SNAME(SID)

+0

@!Aishvarya Karthik,但我只想知道誰已刪除列 –

+0

第二個查詢會給你結果 – MusicLovingIndianGirl

+0

對,我得到的結果,但只想知道哪些用戶已刪除列,沒有任何其他的東西如表等 –