是否有可能定义当前用户?
我发现了一个存储过程“sp_mgGetConnectedUsers”。 它返回的唯一独特的领域“地址”的结果集。 我怎么会这样的“地址”的执行查询关联。
请指教。
注:据我了解,另一种方式来获得当前用户设置一个唯一的应用程序ID为每个连接,但我不太喜欢这种方式。
是否有可能定义当前用户?
我发现了一个存储过程“sp_mgGetConnectedUsers”。 它返回的唯一独特的领域“地址”的结果集。 我怎么会这样的“地址”的执行查询关联。
请指教。
注:据我了解,另一种方式来获得当前用户设置一个唯一的应用程序ID为每个连接,但我不太喜欢这种方式。
如果使用数据字典,你可以使用用户的标量函数:
select user() from system.iota;
和关联,与DictionaryUser从外地返回sp_mgGetConnectedUsers。
如果不使用词典的最简单的方法是使用sp_SetApplicationID和sp_GetApplicationID。 你为什么不喜欢呢? 如果我们知道你的最终目标是什么,可能更容易帮助你。 如果你只是想看看与查询相关联的用户,执行sp_GetSQLStatements程序。
有多种方式来思考当前用户。 这取决于你如何使用优势。
该sp_mgGetConnectedUsers输出提供了以下内容:
用户名 - 计算机名称
词典用户 - 用户用来登录到ADS词典
地址 - IP,IPX或IPC地址
OSUserLoginName - 客户端操作系统登录名
TS地址 - 客户地址的最终用户的IP地址
的applicationID - 独特的可置ID默认为exe文件名
如果您使用字典和每个人的字典一个独特的名字,然后连接用户词典将去(你也可以通过“选择用户()从system.iota”(或)对于SQL脚本等得到这个)的方式。 地址和用户名是用户的IP地址和用户的计算机名称。 这会帮助你唯一地识别用户也是如此。 如果你的用户是通过终端服务器来在可以使用TS地址,以确定他们与OSUserLoginName组合。 我不会进入细节上的applicationID,因为你明确表示,你不关心这个解决方案。 但是......虽然你可以将其设置为任何你想要的默认的是应用程序的名称(即ARC.exe)
你的问题的B部分是如何将查询关联。 该sp_getsqlstatements过程将返回当前活动查询(或者你可以在ARC使用远程服务器信息)。 这将返回连接名称是一样的,从sp_mgGetConnectedUsers用户名。 使用组合你可以告诉计算机名称,IP地址(或终端Adderss),字典用户名,客户端操作系统的LoginName,和应用程序的名称。