[英]sql-server: how do i know who is in my database?
我有一個訪問前端和SQL Server后端。 我想知道哪些用戶當前正在使用該數據庫。 這可以使用access或sql-server嗎?
在SQL Server中,您可以運行此存儲過程:
sp_who2
編輯:
如果要查看在任何給定時間使用服務器的用戶,可以使用此查詢。 這將允許您隨意進一步過濾。
SELECT
SessionId = ses.session_id
,[Database] = DB_Name(er.database_id)
,[Login] = ses.login_name
,Host = ses.host_name
,StartTime = er.start_time
,ClientAddress = con.client_net_address
,SQLStatement = st.text
FROM sys.dm_exec_requests er
OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st
LEFT JOIN sys.dm_exec_sessions ses ON ses.session_id = er.session_id
LEFT JOIN sys.dm_exec_connections con ON con.session_id = ses.session_id
WHERE ses.is_user_process = 0x1
AND ses.session_id != @@SPID
ORDER BY
ses.session_id
對於SQL Server,您可以嘗試
SELECT *
FROM sys.dm_exec_sessions
這將列出所有打開的會話
這完全取決於訪問數據庫中如何實現SQL Server的安全性和訪問權限
如果它為sql后端的所有用戶使用單個SQL Server登錄(這是常見的),則無法知道。
1)您(開發人員)必須具有SQL Server上的VIEW SERVER STATE權限才能查看SQL Server實例上的所有正在執行的會話。 否則,您將只看到當前會話最簡單的方法是使用您的sysadmin憑據打開連接(即使用sqlcmd或Management Studio)並發出以下語句:
GRANT VIEW SERVER STATE TO(您的網絡用戶ID)
2)在五分鍾或十分鍾不活動后,訪問似乎與SQL Server斷開連接。 我還沒有時間進行詳細搜索,並找出可以覆蓋此設置的設置(如果有的話)。
3)使用SQL Server工具的開發人員可能會連接到master數據庫,即使他們正在查看數據庫中的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.