是否可以找出是谁在SQLServer2005中调用了存储过程
有可能找出谁调用了存储过程吗?我使用下面的查询来识别执行计数等,但我无法识别调用它的作业/触发器/进程。有什么想法吗是否可以找出是谁在SQLServer2005中调用了存储过程,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,有可能找出谁调用了存储过程吗?我使用下面的查询来识别执行计数等,但我无法识别调用它的作业/触发器/进程。有什么想法吗 SELECT a.execution_count, OBJECT_NAME(objectid) Name, (CASE WHEN a.statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(max), b.text)) * 2 ELSE a.statement
SELECT
a.execution_count, OBJECT_NAME(objectid) Name,
(CASE WHEN a.statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), b.text)) * 2
ELSE a.statement_end_offset
END - a.statement_start_offset) / 2),
b.dbid, dbname = db_name(b.dbid), b.objectid,
a.creation_time, a.last_execution_time, a.*
FROM
sys.dm_exec_query_stats a
CROSS APPLY
sys.dm_exec_sql_text(a.sql_handle) AS b
WHERE
OBJECT_NAME(objectid) = 'Rebuild_Indexes'
ORDER BY
a.last_execution_time
ESCquery_text = SUBSTRING(b.text,a.statement_start_offset/2,
如果要查看谁在执行存储过程,一种方法是创建服务器端跟踪并捕获
SP:Completed
事件。此事件类提供的数据将为您提供所需的所有调用方信息
参考资料:如果启动SQL profiler,它会显示NT用户的网络id,如果偶尔使用,我建议您在服务器上自行运行跟踪探查器。或者,如果您没有使用简单恢复模式,那么答案将出现在事务日志备份中。然而,这并不容易分析或阅读 使用Adam Machanic的存储过程-这将返回有关活动语句的各种信息,包括启动它们的用户。将选项与一起使用。DMV提供了一个简单而熟悉的关系接口,用于从SQL Server收集关键系统信息
SELECT DB_NAME(der.database_id) AS databaseName,
OBJECT_NAME(objectid),
der.session_id,
login_name,
USER_NAME(der.user_id) AS user_name,
der.command,
dest.text AS [CommandText],
des.login_time,
des.[host_name],
dec.client_net_address,
des.[program_name],
der.status
FROM sys.dm_exec_requests der
INNER JOIN sys.dm_exec_connections dec ON der.session_id = dec.session_id
INNER JOIN sys.dm_exec_sessions des ON der.session_id = des.session_id
CROSS APPLY sys.dm_exec_sql_text (sql_handle) AS dest
WHERE des.is_user_process = 1
--AND OBJECT_NAME(objectid) = 'Rebuild_Indexes'
谁是谁?
@@SPID
和原始登录()可用。你想通过键盘查看指纹,看看是谁真正启动了这个应用程序吗<代码>从sys.dm_exec_connections as EC internal join sys.dm_exec_sessions as ES on ES.session_id=EC.session_id,其中EC.session_id=@@SPID
?答案中的一个常见主题是,如果不记录所有内容,就不可能看到谁调用了存储过程;相反,你可以看到谁在叫它。非常感谢你的链接。需要类似的东西。谢谢,我已经确定了dtsx软件包。