我的工作公司有一个MSSQL Server2005。关于查找当前日志用户以及发出警告消息的任何方式,我有两个问题:
第一个问题是是否有可用的T-SQL或SP来查找当前的登录用户名和计算机名。如果用户使用SQL Server的名称远程访问SQL Server,是否有任何方法可以找出该用户的Windows名称(登录Windows的名称)?
我的下一个问题是,如果可以获取用户名或ID,是否可以通过任何方式发出警告消息,例如“当前SQL Server正在清理或备份,请不要在此时登录”。我想这可能很困难。我可能必须向用户发送电子邮件。
SQL服务器只能在公司中访问。SQL Server具有作为登录用户的用户列表:Windows用户,SQL用户和sa。
SELECT SUSER_SNAME(), HOST_NAME()
如果连接为“ sa”(或任何其他SQL登录名),则找不到域/ Windows用户名。SQL Server仅知道它是“ sa”或该SQL登录名。
HOST_NAME也不可靠,可以在连接字符串(“应用程序名称”)中设置。或者它可能含糊不清,例如默认情况下用于Access,Excel等的“Microsoft Office”
你可以通过回溯client_net_address中sys.dm_exec_connections和地址匹配MAC与IP,并找出谁是登录…
client_net_address
sys.dm_exec_connections