2017-02-17 77 views
2

我能从该过程中找出谁正在执行存储过程吗?从上述过程中找出谁在执行存储过程

+1

尝试'SET @executor = ORIGINAL_LOGIN();' –

+1

在很多情况下,没有可用的信息“who”。例如,一个网站可能使用单个连接字符串来访问数据库。获取SQL用户不会告诉你任何关于谁在使用该网站的信息,无论他们是否通过了认证......。 – HABO

回答

3

要做到这一点,您可以使用功能,如

  • SUSER_NAME()功能(它返回用户的登录标识名)MSDN article
  • CURRENT_USER()它返回当前的名称用户MSDN article
  • USER_NAME()它返回来自指定标识号的数据库用户名MSDN article
  • ORIGINAL_LOGIN()10它返回连接到SQL Server实例的登录名。MSDN article

例子:

CREATE PROCEDURE 
AS 
BEGIN 
    DECLARE @executor 
    SELECT @executor = SUSERNAME() 
    ... 
END 

你可以在这个非常有用的文章阅读更多: