Sql-Server

如何列出所有過去的遠端登錄資訊

  • October 26, 2015

我和我的同事沒有使用“遠端桌面”連接到 SQL Server,而是使用 SQL Server Management Studio 將更改應用到遠端伺服器(每個使用者都有自己的憑據)。

我們中的一個人對 SQL 表進行了一些更改,這使所有數據都處於危險之中。我很確定我們中的一個人是有罪的。我的問題是這個。我怎樣才能證明這一點?是否有任何類型的查詢來顯示從客戶端到遠端 SQL Server 實例的所有過去遠端連接?可能帶有 IP 地址、電腦名稱、憑據。

SQL Server Management Studio 是否有某種日誌文件或任何查詢來顯示遠端伺服器登錄?

PS 在遠端 SQL Server 實例上沒有完整備份。日誌很乾淨。

這是我們登錄 SQL Server 的方式:

這就是我們登錄 SQL 的方式

您可以使用(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;

參考https://www.mssqltips.com/sqlservertip/1735/auditing-failed-logins-in-sql-server/>和<https://msdn.microsoft.com/en-us/library/cc280728.aspx

簡短的回答是,除非您在更改發生時已經有一些審核系統,否則您看不到更新的歷史數據。

您可以做的是嘗試使用諸如 ApexSQL Log 之類的第三方工具讀取事務日誌,並檢查是否有這樣的資訊寫在 t. 日誌。

我知道事務日誌中有很多歷史數據可用於審計,但我不能 100% 確定找到使用者名。

如果你想設置一個系統來跟踪這個問題,你可以嘗試 DDL 觸發器、SQL 跟踪等等……

做到這一點的最好方法是使用擴展事件來擷取登錄,這樣您就可以準確地知道誰在連接什麼。您還可以添加擴展事件來擷取它們正在執行的查詢。但是,您必須設置它才能擷取它。系統內置的任何內容都不會自動擷取此類資訊。但是,您確實可以選擇查看記憶體以查看已執行的查詢,而不是執行它們的人。您可以查看 sys.dm_exec_query_stats 以查看有關目前在記憶體中的查詢的屬性聚合。這不會滿足您的需要,但它是一種額外的調查工具,您可以在設置擴展事件之前使用它。

此外,如果運氣對您有利,您可以嘗試以下步驟:

  1. 登錄到實例。
  2. 轉到安全選項
  3. 展開並右鍵點擊登錄
  4. 點擊報告>標準報告>登錄統計

再次需要注意的是,此報告顯示了一些有關登錄的資訊,但不顯示歷史資訊。僅顯示目前登錄的使用者。

引用自:https://dba.stackexchange.com/questions/90411