3

是否可以从 SQL 正在执行的 CLR 函数中确定首先调用 CLR 函数的 SQL 语句。如果没有直接的方法,那么间接的方法呢,比如获取某种句柄标识符并返回并查询 SQL 或该信息的日志?

例子:

SQL 执行:

select * from genericTable1 join genericCLRfunction() f on genericTable1.col = f.col;

在调用 genericCLRfunction() 的 SQL 语句调用的 CLR 中,我希望得到一个字符串,等于:

“select * from genericTable1 join genericCLRfunction() f on genericTable1.col = f.col;”

4

1 回答 1

1

我现在实际上无法尝试,但这是一种可能性。您可以像这样在 CLR 中获取会话 ID...

using (SqlConnection cn = new SqlConnection("context connection=true;"))
{
   cn.Open();
   SqlCommand cmd = new SqlCommand("SELECT @@SPID", cn);
   int spid = Convert.ToInt32(cmd.ExecuteScalar());
   cn.Close();
}

然后,尝试使用此 SO 问题的已接受答案中显示的查询...

列出 SQL Server 上运行的查询

于 2013-06-17T12:56:13.250 回答