sql - 获取在数据库中执行存储过程的用户名?
问题描述
有人从他的机器上运行了一个存储过程,我只想知道是谁执行了那个存储过程。
我正在尝试查看 sys.dm_exec_procedure_stats 但我没有运气:
SELECT object_id
FROM sys.dm_exec_procedure_stats
WHERE OBJECT_NAME(object_id,database_id) = 'SpName'
解决方案
我使用了https://dba.stackexchange.com/questions/135078/how-to-get-history-of-queries-executed-with-username-in-sql并更新了我的逻辑,它对我有用
USE master
go
SELECT top 10 sdest.DatabaseName
,sdes.session_id
,sdes.[host_name]
,sdes.[program_name]
,sdes.client_interface_name
,sdes.login_name
,sdes.login_time
,sdes.nt_domain
,sdes.nt_user_name
,sdec.client_net_address
,sdec.local_net_address
,sdest.ObjName
,sdest.Query
FROM sys.dm_exec_sessions AS sdes
INNER JOIN sys.dm_exec_connections AS sdec ON sdec.session_id = sdes.session_id
CROSS APPLY (
SELECT db_name(dbid) AS DatabaseName
,object_id(objectid) AS ObjName
,ISNULL((
SELECT TEXT AS [processing-instruction(definition)]
FROM sys.dm_exec_sql_text(sdec.most_recent_sql_handle)
FOR XML PATH('')
,TYPE
), '') AS Query
FROM sys.dm_exec_sql_text(sdec.most_recent_sql_handle) WHERE OBJECT_NAME(objectid,dbid)='MySp'
) sdest
where sdes.session_id <> @@SPID
--and sdes.nt_user_name = '' -- Put the username here !
ORDER BY sdec.session_id
推荐阅读
- azure-cosmosdb - 如何解释 CosmosDB Mongo API 中 ChangeStream 的恢复令牌?我们可以仅使用恢复令牌(或 changeStreamDocuments)来订购操作吗?
- php - 文件视图到另一个选项卡(PHP)
- kubernetes - Oauth2-proxy 和 Traefik:重定向太多
- scala - spark cogroup/join KeyValueGroupedDataset 与数据集
- python - 无法使用 conda “CondaHTTPError: HTTP 000 CONNECTION FAILED for url”安装软件包
- java - Spring Pageable Sort 与 mongoOperations 一起工作不正确。排序顺序不正确
- spring-boot - 未找到接口 com.filenet.api.core.ObjectStore 的主要或单个公共构造函数 - 也未找到默认构造函数
- php - 从 PHP 7.2 升级到 7.3 时复杂类型的 PHP SoapClient 问题
- flutter - 在 lisview 中获取列表数组 json 的正确方法是什么?
- ios - BackBarButton 文本在取消隐藏后被截断