sql - 获取执行存储过程的用户名

标签 sql sql-server-2008-r2

我知道这可以通过使用 WindowsIdentity 在代码 (C#) 中完成,但是有没有办法在 SP 本身中完成此操作?

我尝试使用 USER 函数,但它返回的是 dbo 而不是名称。这是因为用户是数据库的所有者吗?如果是这样,我如何获得数据库所有者的登录名?

编辑:

执行 SP 的应用程序使用 sa 用户帐户,因此如果我使用 SYSTEM_USER,则返回值为 sa

最佳答案

SELECT SYSTEM_USER

将返回在 SQL 中执行代码的用户名。更多信息 aricle

如果 SQL Server 服务从 sa 运行,则无法从 SQL Server 端获取 (windows) 用户名​​。我想这是安全问题。您可以从表 sys.dm_exec_connections 中获得有关连接到 SQL Server 的大部分信息。有存储的 IP 地址和端口以及其他对现有连接有用的东西。

关于sql - 获取执行存储过程的用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22556061/

相关文章:

MySQL 在关系数据库的同一列中存在多个 where

tsql - 在查询中枚举组

sql-server - 更改查询的比较值时,执行时间非常令人绝望

sql - 数据转换的最佳方法

sql - 获取最近的非空记录

sql - Select min 返回空行

php - 在这种情况下如何获得外部 foreach 循环值?

mysql - 使用自定义 ORDER BY 数据的 SQL 选择

sql - 查看是什么导致了 SQL 触发器?

sql - 如何迭代 "parent"和子行位于同一个表中的 SQL 表