SQL Server – How to Fix ‘The OLE DB Provider MSOLAP Has Not Been Registered’

linked-serversql serversql-server-2008-r2

Here's the code I'm using to register a linked server to SSAS:

USE [master];
GO

EXEC master.dbo.sp_addlinkedserver
    @server = N'ServerAlias',
    @srvproduct = N'',
    @provider= N'MSOLAP',
    @datasrc= N'ActualServerName',
    @catalog = N'DatabaseName';

When I attempt to run an MDX query using OPENQUERY, or if I use the Test Connection command in Management Studio after running the above code, I get the error:

Msg 7403, Level 16, State 1, Line 1
The OLE DB provider "MSOLAP" has not been registered.

This is pretty strange as this provider is installed as part of SQL Server.

  • It also fails on all other instances on the same box — 5 total instances of 2008 R2 RTM and 2008 R2 SP1. I don't remember exactly, but 1 or 2 of the instances on the problem box may have been upgraded from 2008 to 2008 R2 at some point.
  • It succeeded on a couple of other boxes using 2008 R2, including one box that has about a dozen total instances of 2005, 2008 R2 and 2012. I tried both 32-bit and 64-bit with success.

I looked at this Microsoft KB article which describes the exact issue; however, there isn't a resolution that's applicable. Every other instance of this error I found on the internet was due to someone incorrectly defining the linked server, which also isn't applicable.

This is a development server (thankfully), so pretty much all options are on the table. Would a Repair fix this? It feels like something is awry in the registry.

(I'm asking for direction first, as I can't perform any maintenance myself due to lack of permissions.)

Best Answer

The SQL Server Analysis Services drivers aren't actually installed as a part of the normal SQL Server installation unless you install SSAS on the server.

You can download the MSOLAP driver from the SQL Server feature pack and install it. Then you can create the linked server. Don't forget to install the 64bit install if you have a 64bit SQL Server or the 32bit if you have a 32bit SQL Server.