Triggers Advantage数据库如何重新设置连接名

Triggers Advantage数据库如何重新设置连接名,triggers,connection,advantage-database-server,Triggers,Connection,Advantage Database Server,我使用的是Sybase Advantage,我有两个表: 第一个表包含数据记录 第二个表存储第一个表的历史记录 第一个表有触发器来填充第二个表中的记录,具体取决于更改的字段 我想存储连接名称(发出请求的PC)、活动查询页面(服务器信息对话框)中显示的名称,而不是用户名。有人知道这是否可能吗 谢谢以下SQL语句可用于检索计算机名而不是用户名 选择* 从…起 (执行过程sp_mgGetConnectedUsers())ConnUsers 哪里 ConnUsers.DictionaryUser=

我使用的是Sybase Advantage,我有两个表:

  • 第一个表包含数据记录
  • 第二个表存储第一个表的历史记录
第一个表有触发器来填充第二个表中的记录,具体取决于更改的字段

我想存储连接名称(发出请求的PC)、活动查询页面(服务器信息对话框)中显示的名称,而不是用户名。有人知道这是否可能吗


谢谢

以下SQL语句可用于检索计算机名而不是用户名


选择*
从…起
(执行过程sp_mgGetConnectedUsers())ConnUsers
哪里
ConnUsers.DictionaryUser=USER();


存储过程sp_mgGetConnectedUsers已记录在案。

感谢您的回复,但此查询不起作用,我使用的是Advantage版本9。执行过程返回连接用户中的信息,但查询返回缺少表错误。此外,如果多个用户具有相同的连接详细信息,则这也不起作用。我可以知道哪个OSUserLoginName正在使用触发器(更新表)。如果您的字典登录不是唯一的,那么事情会变得更复杂。您最好将应用程序ID设置为包含标识字符串的唯一GUID,然后对其进行搜索。我们使用的是连接组件中没有ApplicationID属性的版本9。我也不知道这在触发时是如何工作的。我在想,与其将其包含在触发器中以向历史记录表添加记录(在触发器之后),不如在使用用户更新表中的字段之前使用另一种触发器类型,然后在第二个触发器之后可以获取该值。您可以始终调用sp_SetApplicationID来设置应用程序ID。我个人最喜欢的是执行过程sp_SetApplicationID(NEWIDSTRING(N)+''+APPLICATIONID());您仍然有列出可执行名称的应用程序ID,但现在有一个用于连接的GUID。这很好,添加了一个新的存储过程,该存储过程是由在客户端记录它的用户设置的,这会更改applicationID,然后我在触发器中检索applicationID。感谢相关人士: