Zine.net online

Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc
w Szukaj

dev2dev

Problem z aparatem Microsoft.Jet.OLEDB.4.0 - ostateczne rozwiązanie

Używanie aparatu danych Microsoft.Jet.OLEDB.4.0 do łączenia linked servers będących plikami DBF lub plikami Excel niejednemu dodało siwych włosów. Czasami mam wrażenie, że aparat ten ma jedną konstrukcję try-catch wyglądającą mniej-więcej tak:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace jet
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                flyByJet4();
            }
            catch
            {
                Console.WriteLine("Unknown error!");
            }
        }
    }
}



Szereg doświadczeń z tym aparatem oraz poszukiwanie możliwych rozwiązań problemów przy uruchomieniu dolinkowanego serwera do instancji SQL Server ostatecznie doprowadziło do zbioru zasad, którymi należy się kierować przy korzystaniu z niego.

  1. Oczywiste. Microsoft.Jet.OLEDB.4.0 musi być zainstalowany na komputerze, na którym stoi SQL Server.
  2. Mniej oczywiste. Jeżeli mamy konstrukcję tworzącą linked server: EXEC master.dbo.sp_addlinkedserver @server = N'DBFFOLDER', @srvproduct=N'Jet 4.0', @provider=N'Microsoft.Jet.OLEDB.4.0', @datasrc=N'd:\mp\mrk', @provstr=N'dBASE IV' i katalog w którym znajdują się pliki wskazany zmienną @datasrc jest lokalny na komputerze, na którym zainstalowana jest instancja SQL Server odwołująca się do niego to katalog ten musi mieć dodane pełne prawa dostępu dla wszystkich użytkowników.
  3. Zupełnie nieoczywiste. Po spełnieniu dwóch powyższych warunków należy zrestartować usługę SQL Server. Bez tej czynności każda próba odwołania do Tables zawartych w tym linked server zakończy sie komunikatem Unknown error...

Jak już się przebijemy przez to to nareszcie można stare tabele DBF śmigać na SQL Server 2008. Ale jak znam życie to pewnie niejednym mnie jeszcze Jet  zaskoczy...
Opublikowane 11 grudnia 2009 09:31 przez marekpow

Komentarze:

 

brejk said:

Wypadałoby dodać, że takie numery to tylko na 32-bit, bo inaczej Jet-a zwyczajnie nie ma. I jeszcze jedno - w co nowszych instalacjach nie będzie Jet-a, a ACE ;-)

grudnia 11, 2009 11:49
Komentarze anonimowe wyłączone
W oparciu o Community Server (Personal Edition), Telligent Systems