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

Sql server 来自DataWindow的INSERT语句导致SQL安全上下文错误,sql-server,powerbuilder,Sql Server,Powerbuilder,PowerBuilder 12.6数据窗口将SQLCA设置为其事务对象: dw_datawindow.SetTransOject(SQLCA) SQLCA通过ODBC连接到MS SQL Server,并使用Windows集成身份验证 SQLCA.DBMS = "ODBC" SQLCA.DBPARM = "ConnectString='DSN=maindb;Trusted Connection=yes;'" 应用程序连接到的其他数据库使用特定的SQL用户: otherdb.DBMS = "OD

PowerBuilder 12.6数据窗口将SQLCA设置为其事务对象:

dw_datawindow.SetTransOject(SQLCA)
SQLCA通过ODBC连接到MS SQL Server,并使用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'"
在检索功能中选择数据时,将查询正确的数据库

执行更新时,从对话框复制时发生以下错误:

第1行中的数据库错误

SQLSTATE=08004 [Microsoft][ODBC SQL Server驱动程序][SQL Server]服务器主体域\用户名无法在当前安全上下文下访问数据库otherdb

未对数据库进行任何更改

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在每次执行检索和更新时都检查事务对象,似乎事务对象在那里是正确的

但是,该错误反映insert语句正在使用集成身份验证凭据发送到otherdb,而otherdb事务对象指定了SQL用户


有什么建议吗?

检查正在更新的表上是否有引用其他数据库中某些内容的触发器

DSN名称只是一个名称。可能两个DSN都指向同一实例/db。这是第一件要核实的事情。然后,验证您的PB代码在更新过程中没有与事务对象或更新逻辑混在一起-该功能可以被覆盖以执行任何您想要的操作。是吗?您可以将您的事务对象设置为跟踪-这将是试图弄清楚发生了什么的一件事。最后,这个表是否有触发你不知道的事情?我在大约一个小时前的四天后才发现了这一点,并准备在这里发布我的发现。我希望我一开始就提出这个问题!抢手货这就是问题所在。