优势数据库如何检索连接名称
Posted
技术标签:
【中文标题】优势数据库如何检索连接名称【英文标题】:Advantage database how to retieve connection name 【发布时间】:2011-02-07 10:57:31 【问题描述】:我正在使用 Sybase Advantage,我有 2 个表:
第一个表有数据记录 第二个表存储第一个表的历史记录第一个表有触发器来填充第二个表中的记录,具体取决于哪些字段发生了变化。
我想存储连接名称(发出请求的 PC)、活动查询页面(服务器信息对话框)中显示的名称,而不是用户名。有谁知道这是否可能?
谢谢
【问题讨论】:
相关:***.com/questions/2803747/… 【参考方案1】:以下 SQL 语句可用于检索计算机名而不是用户名。
SELECT *
FROM
( EXECUTE PROCEDURE sp_mgGetConnectedUsers() ) ConnUsers
WHERE
ConnUsers.DictionaryUser = USER();
存储过程 sp_mgGetConnectedUsers 记录在 here。
【讨论】:
感谢您的回复,但此查询不起作用,我使用的是 Advantage 版本 9。执行过程返回已连接用户的信息,但查询返回缺少表错误。如果多个用户具有相同的连接详细信息,这也不起作用。我可以知道哪个 OSUserLoginName 正在使用触发器(更新表)。 如果您的字典登录不是唯一的,那么事情会变得有点复杂。最好的办法是将应用程序 ID 设置为包含唯一的 GUID 识别字符串,然后在其上进行搜索。 我们使用的是版本 9,它在连接组件中没有 ApplicationID 属性。我不知道在触发器中这将如何工作。我在想,与其将它包含在触发器中以将记录添加到历史表(在触发器之后),不如在与用户一起更新表中的字段之前可能有另一种触发器类型,然后在第二个触发器之后可以拾取这个价值。 您可以随时调用 sp_SetApplicationID 来设置应用程序 ID。我个人最喜欢的是 EXECUTE PROCEDURE sp_SetApplicationID( NEWIDSTRING( N ) + ' ' + APPLICATIONID() );您仍然拥有列出可执行文件名称的应用程序 ID,但现在有一个用于连接的 GUID。 效果很好,添加了一个新的存储过程,该过程由用户在客户端记录它设置,这会更改 applicationID,然后我在触发器中检索 applicationID。谢谢以上是关于优势数据库如何检索连接名称的主要内容,如果未能解决你的问题,请参考以下文章
EXCEL如何将同一名称条件作为检索条件,得出名称对应的全部数据,并填入非相同单元格?
在 JavaScript/jQuery 中,如何检索名称中包含空格的数据?