我知道这可以通过使用 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/