【发布时间】:2011-04-28 20:40:36
【问题描述】:
我有一个访问前端和 sql server 后端。我想知道哪些用户当前正在使用该数据库。这可以使用 access 或 sql-server 吗?
【问题讨论】:
标签: sql sql-server ms-access vba
我有一个访问前端和 sql server 后端。我想知道哪些用户当前正在使用该数据库。这可以使用 access 或 sql-server 吗?
【问题讨论】:
标签: sql sql-server ms-access vba
在 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 Server 登录到 sql 后端(这很常见),那么就无法知道。
【讨论】:
1) 作为开发人员,您必须在 SQL Server 上拥有 VIEW SERVER STATE 权限才能查看 SQL Server 实例上所有正在执行的会话。否则,您只会看到当前会话 最简单的方法是使用您的系统管理员凭据打开连接(即使用 sqlcmd 或 Management Studio)并发出以下语句:
GRANT VIEW SERVER STATE TO(您的网络用户 ID)
2) 在五分钟或十分钟不活动后,访问似乎与 SQL Server 断开连接。我还没有时间进行详细搜索并找出可以覆盖此设置的设置(如果有)。
3) 使用 SQL Server 工具的开发人员可能会连接到主数据库,即使他们正在查看数据数据库中的对象。
【讨论】: