В PowerBuilder 12.6 DataWindow в качестве объекта транзакции установлен SQLCA:
dw_datawindow.SetTransOject(SQLCA)
SQLCA подключается к MS SQL Server через ODBC и использует встроенную аутентификацию 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] [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, и кажется, что объект транзакции там правильный.
Однако ошибка отражает то, что модулиОператор ert отправляется в «otherdb» с учетными данными встроенной аутентификации (тогда как объект транзакции otherdb вместо этого указывает пользователя SQL).
Есть предложения?