簡體   English   中英

sql-server:我怎么知道誰在我的數據庫中?

[英]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.

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