Skip to Main Content

DevOps, CI/CD and Automation

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

IRowsetFastLoad questions

Alexander JonesJul 9 2019

I'm trying to use the IRowsetFastLoad interface, with version 18.3 of the OraOLEDB.Oracle driver.

  1. If I use a connection string (ie calling MSDAINITIALIZE::GetDataSource()), but call SetProperties() (with DBPROPSET_SQLSERVERDATASOURCE/SSPROP_ENABLEFASTLOAD) before calling Initialize(), Initialize() fails with DB_E_ERRORSOCCURRED. Calling GetProperties() gives no hint of the problem. Is there a connection string parameter to use?
  2. If I directly CoCreate ORAOLEDB.ORACLE, and use SetProperties() to specify the connection parameters as well as DBPROPSET_SQLSERVERDATASOURCE/SSPROP_ENABLEFASTLOAD, Initialize() succeeds, I cannot specify the connection string parameter "DistribTX=1", and the DBPROP_INIT_OLEDBSERVICES property is ignored. I can, however, manually enlist the connection in the current distributed transaction. Why doesn't OraOLEDB.Oracle automatically enlist in the transaction when created with properties?
  3. Having acquired a session with IRowsetFastLoad available, if it's not enlisted in a transaction, I can populate permanent tables, although this makes the indexes unusable. Alternatively, I can populate an appropriate global temporary table, and insert into the permanent table from there. However, trying to insert into a private temporary table fails (with E_FAIL), regardless of the ON COMMIT PRESERVE/DROP DEFINITION setting. Why can't I use a private temporary table?
  4. If I try to use IRowsetFastLoad in a session which is enlisted in a transaction, I cannot populate any sort of table: permanent, global temporary or private temporary. Why can't I use IRowsetFastLoad within a distributed transaction?

Cheers,

Alex Jones

Comments
Post Details
Added on Jul 9 2019
0 comments
647 views