Forum Stats

  • 3,768,917 Users
  • 2,252,874 Discussions
  • 7,874,797 Comments

Discussions

IRowsetFastLoad questions

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