views:

274

answers:

0

Hi,
I am trying to set up a linked server in SQL Server 2008 to a MS Access 2003 database that is protected by both a workgroup username and password, as well as a database password. It also uses its own system database (system.mdw)

I used the SQL Server template, which is pretty much identical to the procedure I find by Googling and on Books Online, but added the @provstr parameter to sp_addlinkedserver, since there are no parameters for both the workgroup and database passwords or the system database:

EXEC sp_addlinkedserver 
    @server = N'nhms', 
    @provider = N'Microsoft.Jet.OLEDB.4.0', 
    @srvproduct = N'OLE DB Provider for Jet',
    @datasrc = N'C:\pathto\mydb.mdb',
    @provstr = N'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\pathto\mydb.mdb;Jet OLEDB:System Database=C:\pathto\system.mdw;User ID=xxx;Password=yyy;Jet OLEDB:Database Password=zzz;'
GO

-- Set up login mapping using current user's security context
EXEC sp_addlinkedsrvlogin 
    @rmtsrvname = N'nhms',
    @useself = N'TRUE',
    @locallogin = NULL, 
    @rmtuser = N'xxx', 
    @rmtpassword = N'yyy'
GO

When I test the connection I get the following message:

OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "nhms" returned message "Could not find installable ISAM.".

Extra info:

  • Windows Server 2003 server

  • Both SQL Server and the Access database are on this same server

  • The account under which SQL runs (Network Service) has full permissions on the folder and its contents where the .mdb lies.

  • The Jet OLE DB driver is up to date.

  • I also considered using ODBC (which I haven't used before) but the ODBC dialog under Administrative tools also doesn't have a field for entering the database password or a provider string as above.

  • I have a .udl file, which can also be used if possible.

Any help on using this technique or alternatives would be greatly appreciated.

EDIT: I did Google the problem, which gives a solution that involves reinstalling a JET dll and editing the registry, but this is only applicable to Office 2002 and earlier, it seems. I have followed those instructions, and also tried upgrading to Access 2007 on a replicated testing server - no difference.