Sql 从所述过程中找出谁在执行存储过程

Sql 从所述过程中找出谁在执行存储过程,sql,sql-server,tsql,Sql,Sql Server,Tsql,我能从存储过程中找出谁在执行存储过程吗 CREATE PROCEDURE AS BEGIN DECLARE @executor SET @executor = {query to find out} END 要实现这一点,您可以使用以下函数 SUSER\u NAME()函数(返回用户的登录标识名) 当前用户()(它返回当前用户的名称) USER\u NAME()(它从指定的标识号返回数据库用户名) ORIGINAL\u LOGIN()(它返回连接到SQL Server实例

我能从存储过程中找出谁在执行存储过程吗

CREATE PROCEDURE
AS 
BEGIN
    DECLARE @executor 
    SET @executor = {query to find out}
END

要实现这一点,您可以使用以下函数

  • SUSER\u NAME()
    函数(返回用户的登录标识名)
  • 当前用户()
    (它返回当前用户的名称)
  • USER\u NAME()
    (它从指定的标识号返回数据库用户名)
  • ORIGINAL\u LOGIN()
    (它返回连接到SQL Server实例的登录名。)
例如:

CREATE PROCEDURE
AS 
BEGIN
    DECLARE @executor 
    SELECT @executor = SUSERNAME()
    ...
END
您可以在这篇非常有用的文章中阅读更多内容:


试试
SET@executor=ORIGINAL_LOGIN()在许多情况下,没有一个信息丰富的“谁”可用。例如,网站可能使用单个连接字符串访问数据库。获取SQL用户不会告诉您有关谁在使用该网站的任何信息,也不会告诉您他们是否通过了身份验证。