优势数据库如何检索连接名称

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。谢谢

以上是关于优势数据库如何检索连接名称的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Qt 信号/插槽名称存储到数据结构中?

如何根据连接器名称获取 Kafka 源连接器架构

EXCEL如何将同一名称条件作为检索条件,得出名称对应的全部数据,并填入非相同单元格?

在 JavaScript/jQuery 中,如何检索名称中包含空格的数据?

如何在 ms-access VBA 中检索表的 odbc 数据库名称

如何检索 SQL 表中所有列的所有约束名称