来自 DataWindow 的 INSERT 语句导致 SQL 安全上下文错误

INSERT statement from DataWindow causes SQL security context error

PowerBuilder 12.6 DataWindow 将 SQLCA 设置为其事务对象:

dw_datawindow.SetTransOject(SQLCA)

SQLCA 通过 ODBC 连接到 MS SQL 服务器并使用 Windows 集成身份验证。

SQLCA.DBMS = "ODBC"
SQLCA.DBPARM = "ConnectString='DSN=maindb;Trusted Connection=yes;'"

该应用连接到的其他数据库使用特定的 SQL 用户:

otherdb.DBMS = "ODBC"
otherdb.DBPARM = "ConnectString='DSN=otherdb;UID=dbuser;PWD=dbpassword'"

选择数据时(在 Retrieve() 函数中),查询正确的数据库。

执行 Update() 时,出现以下错误(从对话框复制):

第 1 行中的数据库错误

SQLSTATE = 08004 [Microsoft][ODBC SQL Server Driver][SQL Server]The server principal "domain\username" is not able to access the database "otherdb" under the current security context.

没有对数据库进行更改。

INSERT INTO dbo.t_table ( column1, column2, column3, column4, column5, column6, column7, column8, column9, column10, column11, column12, column13, column14, column15, column16, column17, column18, column19)
  VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )

在 sqlpreview 事件中,我使用 GetTrans 检查每次执行(检索和更新)的事务对象,看起来事务对象在那里是正确的。

但是,错误反映插入语句被发送到具有集成身份验证凭据的 "otherdb"(而 otherdb 事务对象指定了一个 SQL 用户)。

有什么建议吗?

检查正在更新的 table 上的触发器是否引用了其他数据库中的内容。