sql - 如何找到访问SQL Server的用户名和机器名

标签 sql sql-server sql-server-2005 tsql

我的工作公司有一个 MSSQL server 2005。我有两个关于查找当前日志用户以及发送警告消息的方法的问题:

第一个问题是是否有任何T-SQL或SP可用于找出当前登录用户名和机器名。如果用户使用SQL Server sa名称远程访问SQL Server,有什么办法可以找到该用户的Windows名称(登录Windows的名称)?

我的下一个问题是,如果我可以获取用户名或id,有什么办法可以发出警告消息,例如“当前SQL服务器正在清理或备份,请此时不要登录”。我想可能会很难。我可能需要向用户发送一封电子邮件。

SQL服务器只能在公司内部访问。 SQL Server 有一个作为登录用户的用户列表:windows 用户、SQL 用户和 sa。

最佳答案

SELECT SUSER_SNAME(), HOST_NAME()

如果连接是“sa”(或任何其他 SQL 登录名),则您无法找到域/Windows 用户名。 SQL Server 只知道它是“sa”或 SQL 登录名。

HOST_NAME 也可能不可靠,它可以在连接字符串(“应用程序名称”)中设置。或者它可能很模糊,例如“Microsoft Office”默认用于 Access、Excel 等

您可以通过sys.dm_exec_connections中的client_net_address进行回溯并将 MAC 地址与 IP 进行匹配并找出谁登录了...

关于sql - 如何找到访问SQL Server的用户名和机器名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/641515/

相关文章:

php - 使用 INNER JOIN 从表中检索最新的时间戳行

sql - 查找 PostgreSQL 中日期的中位数

sql - 区分问题和答案

sql - 在 SQL 中将列值重复到行中

c# - 为什么长时间运行不返回任何数据的 SQL 命令会产生数百 MB 的网络流量

sql-server - =* sql 中的运算符

sql - 从 SQL 数据库中获取 Scala 中的一个值

sql-server - Sequelize Query,多对多关系问题

sql - 使用 Replace() 进行选择

带连接的 SQL 更新?