SQL Server中的函数,知道哪个存储过程称为

时间:2018-01-08 17:19:36

标签: sql-server stored-procedures

在SQL Server 2005+上,如果从存储过程调用用户定义的函数,该函数是否有办法获取调用它的存储过程的名称?

这需要没有存储过程将参数传递给函数及其名称。

任何帮助我都非常感谢

2 个答案:

答案 0 :(得分:1)

不传递参数,或以其他方式传递值,例如,通过将其存储在表中,并将唯一键传递给该值,这是不可能的。

答案 1 :(得分:1)

需要更多信息来提供具体答案,但以下是一些有用的选项。

要查找哪些存储过程调用您的函数:

SELECT name
FROM sys.procedures
WHERE object_definition(object_id) LIKE '%yourUDFname%'

然后您可以使用sys.dm_exec_procedure_stats查找这些SP的上次执行时间:

SELECT name, last_execution_time
FROM sys.procedures p
JOIN sys.dm_exec_procedure_stats s on p.object_id = s.object_id
WHERE object_definition(p.object_id) LIKE '%yourUDFname%'  
--ORDER BY last_execution_time DESC

如果您需要更多,最彻底但最耗时的选项是在SP中添加日志记录,这些日志记录在调用UDF时写入日志。