簡體   English   中英

如何獲取SQL登錄用戶的Windows登錄用戶名

[英]How to get Windows Log-in User Name for a SQL Log in User

通過使用sp_who2,我可以獲得當前登錄用戶和計算機名稱的列表。 某些用戶正在使用SQL Server登錄用戶名,例如sa。 有什么方法可以獲取SQL登錄用戶的Windows登錄用戶名?

如果無法從計算機名中獲取Windows登錄用戶,是否可以使用WMI類或C#通過計算機名來查找Windows登錄用戶名?

我的SQL Server是Microsoft SQL Server 2005,Windows是Server 2003。

要獲取用戶名和計算機名,請使用以下命令:

SELECT HOST_NAME() AS HostName, SUSER_NAME() LoggedInUser

SQL登錄名和NT用戶名之間沒有鏈接。

您在此處詢問了類似的問題: 如何找出用戶名和計算機名以訪問SQL Server

如果有1個以上的用戶登錄到客戶端PC(例如,服務帳戶,通過mstsc的遠程用戶等),則WMI方法將是模棱兩可的。 像這樣的任何方法都將要求客戶端PC上具有所使用帳戶的管理員權限。

我懷疑您可以實時進行操作。

您所要做的就是將client_net_address記錄在sys.dm_exec_connections然后從那里回溯(也許通過WMI,但不是從SQL Server本身)。

您是否需要用戶名? 或者只是客戶端PC,以便您可以更改應用程序連接字符串?

如果您只有很少的SQL連接,最后的解決方案是更改sa密碼並查看誰致電

  1. 您可以從查詢會話和連接中獲取客戶端ip地址和遠程PID。
  2. 使用此信息來構建TASKLIST命令。
  3. 使用XP_CMDShell執行構建的命令來獲取用戶。

     DECLARE @CMD VARCHAR(500) = (SELECT TOP 1 'tasklist /S ' + client_net_address + ' /FI "PID eq ' + CONVERT(VARCHAR(MAX),host_process_id) + '" /V /FO LIST /U DOMAIN\\Admin /P password' FROM sys.dm_exec_connections C JOIN sys.dm_exec_sessions S ON C.session_id = S.session_id WHERE S.session_id = @@SPID) EXEC xp_cmdshell @CMD 

您可以隨意使用它。 通過在ALL SERVER觸發器中使用郵件來發送郵件到DBA或進行臨時審核。 希望這可以幫助=)

我不知道是否有一種方法可以完全按照您的要求進行。 但是,我過去所做的是使用sql profiler,並且在結果列中包括了“主機名”。 我工作的機器名稱恰好是唯一的,可以追溯到用戶。 如果您的計算機名稱也是唯一的,則可能會得到所需的結果。 您可以過濾登錄名= sa以縮小結果范圍。

我在黑暗中射擊,但也許我的想法會幫助您找到答案。 據我所知,沒有直接的方法可以做到這一點。 哪個恕我直言是一件好事。 現在有一些想法:

如果這是一個自定義應用程序,則可以將該信息作為應用程序名稱包含在“連接”字符串中。 如果這是服務器應用程序,並且您使用了模擬功能,則這樣做會失去池連接的能力。 在客戶端應用程序上,這應該不是問題。

您的客戶在任何給定時間只有一個登錄用戶嗎? 例如桌面應用程序? 您可以這樣使用WMI 如果這又是一台服務器,並且您想知道在其下運行的服務器的安全上下文,您仍然可以獲取此信息。 否則,您至少可以弄清楚是誰啟動了該過程。

SQL Profiler知道客戶端進程的PID。 但是我找不到它在SQL中的存儲位置。 如果找到如何獲取PID(可以以編程方式運行跟蹤並將登錄事件存儲到表中)。 您可以使用此腳本獲取啟動用戶。

好。 我試圖使用WMI類來獲取遠程計算機的信息(WMI類\\ fullmancinename \\ roor \\ cimc2,並且對象查詢從Win32_ComputerSystem中選擇*)。 它可以在我的本地計算機上運行,​​但是具有遠程計算機名稱,您需要傳遞具有足夠安全權限的用戶名和密碼才能訪問或讀取。 從遠程計算機獲取用戶名是另一個Windows安全問題。

我的嘗試代碼基於WMI中的參考C#讀取Windows登錄用戶名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM