是否可以从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;"
答案 0 :(得分: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问题的接受答案中显示的查询...