7234 views

Resolving Linked Server Access Errors with ODBC Driver

Problem


When using the ODBC Driver with Microsoft SQL Linked Server, the ODBC Driver is unable to access the application logs or file cache.

  

Symptoms
When using the ODBC Driver with a Microsoft SQL Linked Server, one of these errors appears:
  • Cannot obtain the required interface ("IID_IDBSchemaRowset") from OLE DB provider "MSDASQL" for linked server "SERVICENOW". (Microsoft SQL Server, Error: 7301)

  • Cannot obtain the required interface (“IID_IDBCreateCommand") from OLE DB provider "MSDASQL" for linked server "SERVICENOW". (Microsoft SQL Server, Error: 7301)

  • Cannot create an instance of OLE DB provider "MSDASQL" for linked server "SERVICENOW". (Microsoft SQL Server, Error: 7302)

  • Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "SERVICENOW".

  • OLE DB provider "MSDASQL" for linked server "SERVICENOW" returned message "[DataDirect][ODBC OpenAccess SDK driver][OpenAccess SDK Client]Failed to create the Core Service component.". (Microsoft SQL Server, Error: 7303)

  • The OLE DB provider "IBMDADB2.DB2COPY1" for linked server "<linked server name>" reported an error. Access denied. (Microsoft SQL Server, Error: 7399)

     

Cause

The ODBC Driver uses the %LOCALAPPDATA% environment variable to specify the location of log files and cache. When using the iSQL console, this variable is replaced with the user home directory, for example C:\Users\<user>\AppData\Local. However, when running Microsoft SQL Server, this variable is replaced with C:\Windows\System32\config\systemprofile\AppData\Local.  Unlike the user local directory, the System32 local directory requires elevated privileges to access. 

 
Resolution

Modify the ServiceDebugLogPath and ServicesSQLDiskCachePath ODBC Driver configuration properties and replace %LOCALAPPDATA% with ${user.home}.


Article Information

Last Updated:2016-09-13 07:36:25
Published:2014-11-21