Utworzyłem pakiet SSIS, który importuje plik programu Excel do tabeli programu SQL Server.
Pakiet SSIS działa bez problemu, kiedy uruchamiam go lokalnie na moim komputerze, ale kiedy uruchamiam go na serwerze, na którym pakiet zostanie zaplanowany, pojawia się następujący błąd (z pliku tekstowego wypisuję błędy na używanie rejestrowania SSIS).
Po zbadaniu jedynymi zaleceniami, jakie mogłem znaleźć, było ustawienie właściwości Run64BitRuntime na wartość false, co zrobiłem, ale nadal nie miałem szczęścia. Wątpię, że to właśnie powoduje mój błąd, ponieważ błąd nie określa niczego w odniesieniu do 64-bitów (tak jak w przypadku artykułów, które znalazłem).
Pomyślałem również, że być może serwer nie ma odpowiednich sterowników Excela, ale nie wydaje mi się, że tak jest, ponieważ zwykle komunikat o błędzie mówi coś o niezarejestrowaniu sterowników.
Obecnie nie mam dostępu do zdalnego serwera. Mogę tylko przesłać pakiet do folderu, a następnie jest on uruchamiany przez aplikację, więc jedyne komunikaty o błędach, które widzę, to to, co jest w dzienniku błędów tekstowych, który utworzyłem.
Kod błędu DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. Wywołanie metody AcquireConnection do menedżera połączeń „Envision” nie powiodło się z kodem błędu 0xC0209303. Przed tym mogą pojawić się komunikaty o błędach z dodatkowymi informacjami o tym, dlaczego wywołanie metody AcquireConnection nie powiodło się.
„Envision” to nazwa mojego menedżera połączeń programu Excel.
Wypełniam ścieżkę pliku Excel i ciąg połączenia za pomocą wyrażeń.
Wyrażenie ciągu połączenia wygląda następująco:
„Dostawca = Microsoft.ACE.OLEDB.12.0; Źródło danych =” + @ [Użytkownik :: SourceFilePath] + ”; Właściwości rozszerzone = \" EXCEL 12.0 XML; HDR = TAK \ ";"
SSIS Pacakge jest wykonywany przez nazwę użytkownika / konto systemu Windows. Myślę, że może to być konto usług internetowych. (BDS_sprtIIS)
Czy ktoś ma jakieś rozwiązania lub sugestie dotyczące rozwiązania tego problemu z pakietem, które działają tylko na moim komputerze lokalnym, ale nie na rzeczywistym serwerze, na którym pakiet zostanie wdrożony?
Znalazłem poniżej odpowiedź na innym forum, czy to może być przyczyną moich problemów? Mówią w zasadzie, że menedżer połączeń programu Excel próbuje uzyskać dostęp do folderu temp użytkowników z jakiegoś powodu, a jeśli nie będzie miał dostępu do tego folderu, zakończy się niepowodzeniem:
Zauważyłem też, że sterownik Microsoft.JET.OLEDB.4.0 spróbuje odczytać katalog tymczasowy pod profilem zalogowanego użytkownika.
.
... Prowadzimy naszych agentów SQL przy użyciu konta domeny niższego poziomu i uruchamiamy nasze pakiety SSIS przy użyciu konta proxy. Masz rację, ponieważ Procmon również to potwierdził. Dałem uprawnienia konta proxy do katalogu tymczasowego profilu (C: \ Documents and Settings \ SQLAgentDomainAccount \ Local Settings \ Temp) i działało!
Nie używam kont SQL Server Jobs ani proxy. Pakiet jest po prostu wykonywany przez konto systemu Windows najprawdopodobniej poprzez skrypt wiersza poleceń.
Konto systemu Windows ma dostęp do pliku, ale nie jestem pewien, czy ma on dostęp do jego folderu „TEMP” (do którego nigdy nie odwołuję się w pakiecie, więc nie wiem, dlaczego musiałby mieć dostęp do tego folderu) ...