【发布时间】:2017-06-01 20:06:01
【问题描述】:
了解副作用运算符(如“插入”)在用户定义函数中是不允许的,如何记录(或以其他方式跟踪)对特定用户定义函数的调用?我还想捕获传递给 UDF 的参数。
理想情况下,日志将是一个表,其中插入了有关对 UDF 的每次调用的信息(时间戳和参数值)。然后可以从该表中得出报告和使用指标。
我无法将 UDF 重写为存储过程,即使是同名存储过程,也不会破坏许多需要 UDF 且我无法控制的下游系统。
我也不愿意在我们的服务器上启用任何类型的命令 shell 功能,这会削弱 SQL Server 的最佳实践安全默认值。
【问题讨论】:
-
您不应该为此查看 SQL Server Profiler 吗?
-
@PanagiotisKanavos 我根本不推荐分析器。跟踪,也许,或者更好的扩展事件或审计。 Profiler 可以用于本地调试,但绝对不应该用于生产系统。恕我直言。
-
您能解释一下为什么要记录对用户定义函数的所有调用吗?它不会影响答案(嗯,我不这么认为),我只是想了解您期望从中获得什么。
-
当然,@Aaron... 有问题的 UDF 是一个报告系统的登录验证器(它传回 0 表示失败,1 表示成功,2 表示成功并使用临时密码)。我们想看看谁在尝试登录,以及他们是否成功登录。
-
看起来类似于这个问题stackoverflow.com/questions/352605/…
标签: sql-server user-defined-functions udf