Unable to open a SAS file from Spotfire Analyst with error "Unable to open OLE DB connection" "COMException at Provider" "Accessor is invalid".

Unable to open a SAS file from Spotfire Analyst with error "Unable to open OLE DB connection" "COMException at Provider" "Accessor is invalid".

book

Article ID: KB0076613

calendar_today

Updated On:

Products Versions
Spotfire Analyst All Versions

Description

SAS files are not opening in the TIBCO Spotfire Analyst desktop client. The following error message is generated when attempting to open a SAS data file: 

================================================
Error message: Could not open data source.

TargetInvocationException at Spotfire.Dxp.Framework:
Exception has been thrown by the target of an invocation. (HRESULT: 80131604)
Stack Trace:
at Spotfire.Dxp.Framework.ApplicationModel.ProgressService.ExecuteWithProgressCancelable(String title, String description, ProgressOperation operation, Boolean showCancelButton)
at Spotfire.Dxp.Forms.Application.FormsApplicationThread.ExecutePromptingOperation(String title, String description, PromptingApplicationInvocation promptingApplicationInvocation)
at Spotfire.Dxp.Application.RichAnalysisApplication.Open(String filePath, DocumentOpenSettings documentOpenSettings)
at Spotfire.Dxp.Forms.Application.FileUserActions.LoadFileCallback(LoadCallbackParameters parameters)
at Spotfire.Dxp.Forms.Framework.Utilities.LoadFileHelper.LoadFile(LoadCallback callback, LoadCallbackParameters parameters, Form owningForm)

ImportException at Spotfire.Dxp.Data:

Failed to execute data source query. (HRESULT: 80131500)

Stack Trace:
at Spotfire.Dxp.Data.DataSourceConnection.<GetPromptModels>d__2.MoveNext()
at Spotfire.Dxp.Data.DataSource.Connect(IServiceProvider serviceProvider, DataSourcePromptMode promptMode, Boolean updateInternalState)
at Spotfire.Dxp.Application.AnalysisApplication.<OpenDocumentFile>d__f.MoveNext()
at Spotfire.Dxp.Forms.Application.FormsApplicationThread.<>c_DisplayClass1.<ExecutePromptingOperation>b_0()
at Spotfire.Dxp.Forms.Application.FormsProgressService.ProgressThread.DoOperationLoop()

ImportException at Spotfire.Dxp.Data:

Unable to open OLE DB connection.

ConnectionString = 'Provider=sas.LocalProvider;Data Source=\\emea-got-filer1\QATest\Generic\DataBases\SAS_files;SAS File Format=V9'. (HRESULT: 80131500)

Stack Trace:
at Spotfire.Dxp.Data.Import.OutOfProcessDataSourceConnection.TryExecute(Action f)
at Spotfire.Dxp.Data.Import.OutOfProcessDataSourceConnection.TryExecute[T](Func`1 f)
at Spotfire.Dxp.Data.Import.OutOfProcessDataSourceConnection.<GetPromptModelsCore>d__24.MoveNext()
at Spotfire.Dxp.Data.DataSourceConnection.<GetPromptModels>d__2.MoveNext()

ImportException at Spotfire.Dxp.Data:

Unable to open OLE DB connection.

ConnectionString = 'Provider=sas.LocalProvider;Data Source=\\emea-got-filer1\QATest\Generic\DataBases\SAS_files;SAS File Format=V9'. (HRESULT: 80131500)

Stack Trace:
at Spotfire.Dxp.Data.Import.SasFileDataReader..ctor(SasFileDataSourceSettings settings)
at Spotfire.Dxp.Data.Import.SasFileDataSource.<GetPromptModels>d__0.MoveNext()
at Spotfire.Dxp.Data.Import.SasFileDataSource.<GetSerializablePromptModels>d__5.MoveNext()
at Spotfire.Dxp.Data.Import.DataSourceOutOfProcessConnection.CallbackConnection.<GetPromptModelsCore>d__0.MoveNext()
at Spotfire.Dxp.Data.Import.OutOfProcessDataSourceConnection.SubprocessImpl..ctor(String[] args)

COMException at Provider:

Accessor is invalid. (HRESULT: 80040E00)

Stack Trace:
at Microsoft.Interop.ADO.Field.get_Value()
at Spotfire.Dxp.Data.Import.SasFileDataReader.GetFormatString(Connection connection, String tableName)
at Spotfire.Dxp.Data.Import.SasFileDataReader.Initialize(Connection connection, String tableName, String sasFormat)
at Spotfire.Dxp.Data.Import.SasFileDataReader..ctor(SasFileDataSourceSettings settings)
===============================================

Cause: The installed SAS Providers for OLEDB driver version and the Spotfire desktop client's "Spotfire.Dxp.Main.dll.config" file are not in sync with one another.

Issue/Introduction

Unable to open a SAS file from Spotfire Analyst with error "Unable to open OLE DB connection" "COMException at Provider" "Accessor is invalid".

Environment

All Supported Operating Systems

Resolution

There are two possible solutions to resolve this issue. Try any one of these as described below:
 
1st Solution: Uninstall the existing SAS Providers for OLEDB driver, and install SAS Providers for OLEDB 9.43 in its place. Restart the Spotfire Analyst and then load the desired SAS file.
 
2nd Solution: Add a property to the "Spotfire.Dxp.Main.dll.config" file, which is present in TIBCO Spotfire Analyst installation folder >> Modules >> Spotfire DXP forms >> Spotfire.Dxp.Main.dll.config. Follow the below steps:

1) Make a backup copy of the "Spotfire.Dxp.Main.dll.config" file before making any changes to it.

2) Open the "Spotfire.Dxp.Main.dll.config" file in a text editor, and find the "applicationsettings" tag in it.

3) Add the following entry in the "applicationsettings" section:

<Spotfire.Dxp.Data.Properties.Settings>
<setting name="DataImport_LoadOutOfProcess" serializeAs="String">
<value>False</value>
</setting>
</Spotfire.Dxp.Data.Properties.Settings>

4) Save the "Spotfire.Dxp.Main.dll.config" file.

Note: The above configuration file can be updated during the installation of the hotfix and Spotfire Analyst upgrade so the 1st provided solution is the recommended one.