是否有办法告诉哪些进程正在调用当前正在执行的存储过程。T-SQL--被称为当前进程
1
A
回答
1
目前没有办法做到这一点。
但是请...去here并让他们知道你想要这个功能。
编辑:
我看着这个多一点,并发现潜在的解决方法(丑用于此目的,但它看起来像它可能是可行的):
这是来自联机丛书:
- 会话上下文信息存储在master.dbo.sysprocesses表的context_info列中。这是一个varbinary(128)列。
- SET CONTEXT_INFO不能在用户定义的函数中指定。您不能向SET CONTEXT_INFO提供空值,因为sysprocesses表不允许空值。
- SET CONTEXT_INFO不接受常量或变量名以外的表达式。要将上下文信息设置为函数调用的结果,您必须首先将函数调用结果放在二进制或varbinary变量中。
- 当您在存储过程或触发器中发出SET CONTEXT_INFO时,与其他SET语句不同,在存储过程或触发器完成后,为上下文信息设置的新值仍然存在。
因此,这里是我的想法:
将此代码添加到您的所有程序:
DECLARE @UID VARBINARY(128)
SELECT @UID = CAST('ThisProcedureName' AS VARBINARY(128))
SET CONTEXT_INFO @UID
然后添加这个检查在你需要它:
DECLARE @Message varbinary(128)
SELECT @Message = cast('TestB' as varbinary(128))
IF (@Message = CONTEXT_INFO()) BEGIN
RAISERROR('Not Allowed unless from procedure XX', 16, 1)
END
0
这个问题在我研究相同问题时出现在结果列表中,但我发现以下代码
print object_name(@@PROCID)
它在存储过程中工作,返回包含它的存储过程的名称。原始文章我在sql server central找到。
相关问题
- 1. 当notifyDataSetChanged被称为
- 2. Stacktrace/Stackwalk为当前进程和当前线程与IDebug接口
- 3. TSQL基于当前用户
- 4. TileService被视为前台进程
- 5. 当它被称为actionPerformed?
- 6. 程序被称为
- 7. 为什么线程被称为轻量级进程?
- 8. LWJGL - 当前上下文中不可用的函数被称为
- 9. 替换当前进程
- 10. Node.js和chrooting当前进程
- 11. C#:找到当前进程
- 12. 十进制在tsql中被截断
- 13. 如何确定C#中当前重点进程的名称
- 14. 获取当前进程中所有句柄的名称
- 15. 如何检测当前进程是否被暂停?
- 16. 之前QGraphicsItem ::涂料将被称为
- 17. appWillEnterForeground:appDidEnterBackground之前被称为:完成
- 18. 为什么对当前应用程序的引用称为`shared`
- 19. 当onStop实际上被称为
- 20. 当的dealloc被称为在Objective-C
- 21. 当setQuickDialogTableView被称为在quickdialog框
- 22. 的Makefile:当功能被称为
- 23. 当节点被称为与xargs的
- 24. ret_from_syscall源代码,当它被称为
- 25. 是可以计算当localNotification被称为
- 26. 获取当前课程的名称?
- 27. DBUnit当前线程被中断
- 28. 查找进程ID活跃时,进程名称被赋予
- 29. iMessage当前用户的名称为零
- 30. 当一个进程的当前工作目录被另一个进程删除时会发生什么?
我发布了一条提示给我的博客,包括源代码:http://www.thecodepage.com/post/TIP-A-Call-Stack-in-SQL-Server.aspx – 2010-02-03 02:17:15