如何列出所有過去的遠端登錄資訊
我和我的同事沒有使用“遠端桌面”連接到 SQL Server,而是使用 SQL Server Management Studio 將更改應用到遠端伺服器(每個使用者都有自己的憑據)。
我們中的一個人對 SQL 表進行了一些更改,這使所有數據都處於危險之中。我很確定我們中的一個人是有罪的。我的問題是這個。我怎樣才能證明這一點?是否有任何類型的查詢來顯示從客戶端到遠端 SQL Server 實例的所有過去遠端連接?可能帶有 IP 地址、電腦名稱、憑據。
SQL Server Management Studio 是否有某種日誌文件或任何查詢來顯示遠端伺服器登錄?
PS 在遠端 SQL Server 實例上沒有完整備份。日誌很乾淨。
這是我們登錄 SQL Server 的方式:
您可以使用(IP,埠號)登錄到遠端伺服器。預設情況下,SQL Server 不記錄登錄。
如果您有非常乾淨的日誌,那麼您將不會獲得登錄歷史數據。如果您在非常乾淨的日誌之前配置了 SQL 登錄審核。然後某個時間點會有一些更改,通過 TSQL 獲取“SQL 登錄審核”詳細資訊,例如
EXEC xp_readerrorlog;
它只會提供您配置 SSMS 的“SQL 登錄審核詳細資訊”。喜歡
1) Failed logins only 2)Successful logins only 3)Both Failed and successful logins
根據 MSDN BOL https://msdn.microsoft.com/en-us/library/ms176013.aspx有關目前使用者的遠端伺服器登錄詳細資訊,您可以從 TSQL 中找到。
SELECT login_name ,COUNT(session_id) AS session_count FROM sys.dm_exec_sessions GROUP BY login_name;
簡短的回答是,除非您在更改發生時已經有一些審核系統,否則您看不到更新的歷史數據。
您可以做的是嘗試使用諸如 ApexSQL Log 之類的第三方工具讀取事務日誌,並檢查是否有這樣的資訊寫在 t. 日誌。
我知道事務日誌中有很多歷史數據可用於審計,但我不能 100% 確定找到使用者名。
如果你想設置一個系統來跟踪這個問題,你可以嘗試 DDL 觸發器、SQL 跟踪等等……
做到這一點的最好方法是使用擴展事件來擷取登錄,這樣您就可以準確地知道誰在連接什麼。您還可以添加擴展事件來擷取它們正在執行的查詢。但是,您必須設置它才能擷取它。系統內置的任何內容都不會自動擷取此類資訊。但是,您確實可以選擇查看記憶體以查看已執行的查詢,而不是執行它們的人。您可以查看 sys.dm_exec_query_stats 以查看有關目前在記憶體中的查詢的屬性聚合。這不會滿足您的需要,但它是一種額外的調查工具,您可以在設置擴展事件之前使用它。
此外,如果運氣對您有利,您可以嘗試以下步驟:
- 登錄到實例。
- 轉到安全選項
- 展開並右鍵點擊登錄
- 點擊報告>標準報告>登錄統計
再次需要注意的是,此報告顯示了一些有關登錄的資訊,但不顯示歷史資訊。僅顯示目前登錄的使用者。