使用 Iseries ODBC 驱动程序时,有没有办法定义调用“程序名称”?当我使用 Iseries Access ODBC 驱动程序对我们的 AS400 运行命令时,as400 调用堆栈中的调用程序将程序名称显示为空白。我想定义一个,因为我们有一个需要知道谁是调用者的触发器。
1169 次
3 回答
3
ODBC 连接通过QZDASOINIT
作业代理。我不相信有办法识别触发触发器的特定连接(或程序)。
于 2012-02-15T17:58:07.230 回答
2
正如 JamesA 指出的那样,所有 ODBC 请求都通过QZDASOINIT
作业,因此您无法更改调用堆栈来确定调用者。
为了解决这个问题,DB2 for i 包含由 ODBC 驱动程序自动设置的客户端专用寄存器(如果您愿意,您可以覆盖它),然后您的触发器可以使用。有关更多信息,请参阅:http: //ibmsystemsmag.blogs.com/i_can/2009/10/i-can-use-client-special-registers.html
于 2014-01-28T18:12:28.940 回答
0
这可能已经有一段时间了,仅从 i 6.1 开始公开。对于示例用法,请在 i Nav 'Run SQL Scripts...' 中运行此语句:
select CURRENT CLIENT_APPLNAME, CURRENT CLIENT_PROGRAMID, CURRENT CLIENT_WRKSTNNAME from sysibm.sysdummy1
使用 JDBC、OLE DB、CLI 或 .NET 数据提供程序的应用程序开发人员可以获得支持。它们也可以通过调用特殊的存储过程来设置。
例如,使用 IBMDASQL,连接字符串可能包括:
conn.Open "Provider=IBMDASQL; Data Source=MyAS400;" & _
"Client User ID=MYWINUSRID; Client WorkStation Name=MYWINPC; " & _
"Client Program ID=somepc.exe; Application Name=Sample for Audit"
SQL 参考讨论了新的“特殊寄存器”。
于 2014-04-05T11:56:27.080 回答