Chcę uzyskać dostęp do danych w bazie danych Oracle 11g z SQL-Server 2008
Konfiguruję połączony serwer i kiedy wykonuję
select * from [Link_server_name]..Oracle_schema.Oracle_table
a Oracle_table zawiera kolumny Number i varchar2, wszystkie działają jak wyjątki.
Ale gdy tabela Oracle_tab zawiera kolumnę CLOB, pojawia się następujący błąd:
Der OLE DB-Anbieter „MSDAORA” für den Verbindungsserver „L_V407SR8T” hat die Meldung „Nieokreślony błąd” zurückgeben.
Der OLE DB-Anbieter „MSDAORA” für den Verbindungsserver „L_V407SR8T” hat die Meldung „Wystąpił błąd Oracle, ale komunikat o błędzie nie mógł zostać odzyskany z Oracle”. zurückgeben.
Der OLE DB-Anbieter „MSDAORA” für den Verbindungsserver „L_V407SR8T” hat die Meldung „Typ danych nie jest obsługiwany”. zurückgeben.
Msg 7306, poziom 16, stan 2, wiersz 1
Die „„ MCCAPP ”.„ DOGGRUPPEN ”- Tabelle vom OLE DB-Anbieter„ MSDAORA ”für den Verbindungsserver„ L_V407SR8T ”kann nicht geöffnet werden.
Korzystanie z OPENQUERY
SELECT * FROM OPENQUERY([L_V407SR8T], 'Select CLOB_COLUMN from Oracle_table' )
dostaję
Der OLE DB-Anbieter „MSDAORA” für den Verbindungsserver „L_V407SR8T” hat die Meldung „Wystąpił błąd Oracle, ale komunikat o błędzie nie mógł zostać odzyskany z Oracle”. zurückgeben. Der OLE DB-Anbieter „MSDAORA” für den Verbindungsserver „L_V407SR8T” hat die Meldung „Typ danych nie jest obsługiwany”. zurückgeben.
Proszę wybaczyć niemieckie komunikaty o błędach.
Moje pytanie: Czy jest jakiś sposób na odczyt kolumn CLOB przez połączone serwery?
EDYTOWAĆ:
- Kreator importu i eksportu programu SQL Server wydaje się zależeć również od OLE DB i zasysa te same tabele
- Zadaję sobie pytanie, czy problem zależy od użycia zestawów znaków, ale nie mogę ich zmienić
- W ramach praktycznej pracy używam skryptów PowerShell, aby uzyskać dostęp do danych, ale
źródło
Odpowiedzi:
Pobierz i zainstaluj klienta bazy danych Oracle 11 na komputerze z programem SQL Server 2008.
Skonfiguruj połączony serwer za pomocą dostawcy Oracle OLE DB (OraOLEDB.Oracle).
Upewnij się, że opcja „Zezwól na przetwarzanie” jest włączona w opcjach dostawcy.
Klient Oracle 11 OLE DB obsługuje CLOB.
źródło
Komentarz do odpowiedzi Pytanie SO Jak czytać kolumnę CLOB w Oracle za pomocą OleDb?
zawiera link do starego postu pomocy technicznej Microsoft z następującym oświadczeniem
Byłoby miło znaleźć więcej aktualnych referencji.
Przeprowadziłem badania Google i znalazłem tylko obejścia. Obawiam się, że typ danych nadal nie jest obsługiwany.
Edytuj 02/05/2011
Naprawdę nie rozumiem, dlaczego Microsoft nie jest w stanie rozwiązać tego problemu. Poniższy skrypt PowerShell używa OLE-DB do odczytu tabeli zawierającej kolumnę CLOB z bazy danych Oracle i wstawienia danych do istniejącej podobnej tabeli na serwerze Sql-Server za pomocą bulkCopy, co jest bardzo wydajnym sposobem.
Dostosuj następujące parametry połączenia, zapytanie i nazwę tabeli do instalacji:
Poniższy kod kopiuje tabelę Oracle do tabeli serwera SQL
BTW: kod oparty jest na projekcie Codeplex Chada Millersa naprawdę bardzo prostego słownika danych
Obecnie używanie programu PowerShell to jedyny sposób, w jaki wiem, aby kopiować dane z obiektami CLOB z Oracle na Sql-Server, który nie używa C # ani żadnych narzędzi innych firm.
Nie udało mi się użyć Kreatora importu / eksportu ani powiązanych serwerów.
źródło
No new updates are planned for future releases of these components including their support against versions later than Oracle 8i.