KB969845 — POPRAWKA: Komunikat o błędzie wyświetlany podczas uruchamiania pakietu usług SQL Server 2005, SQL Server 2008 lub SQL Server 2008 R2 Integration Services (SSIS) po zainstalowaniu dodatku SP2 .NET Framework 2.0 lub .NET Framework 3.5 z dodatkiem SP1: "ADO NET Source [1424]"

Dotyczy
Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Standard X64 Edition Microsoft SQL Server 2005 Enterprise X64 Edition Microsoft SQL Server 2005 Workgroup Edition SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup

Firma Microsoft dystrybuuje poprawki dla programów Microsoft SQL Server 2005, Microsoft SQL Server 2008 i Microsoft SQL Server 2008 R2 jako jeden plik do pobrania. Ponieważ poprawki są zbiorcze, każda nowa wersja zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki programu SQL Server 2005, Microsoft SQL Server 2008 lub SQL Server 2008 R2.

Objawy

Rozważmy następujący scenariusz:

  • Uruchamiasz pakiet usług Microsoft SQL Server 2005, Microsoft SQL Server 2008 lub SQL Server 2008 R2 Integration Services (SSIS) na komputerze z jedną z następujących instalacji programu .NET Framework:

    • Dodatek Service Pack 2 (SP2) dla platformy .NET Framework 2.0
    • The .NET Framework 3.5 Service Pack 1 (SP1)
  • Pakiet SSIS używa sterownika ODBC innej firmy, który importuje dane znaków.

Jednak po uruchomieniu pakietu SSIS są wyświetlane następujące komunikaty o błędach:

Uwaga

[ADO NET Source [1424]] Błąd: Kod błędu usług SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Niepowodzenie "składnika "ADO NET Source" (1424)", ponieważ 0x80131937 wystąpił kod błędu, a rozmieszczenie wiersza błędu w "kolumnie wyjściowej "nazwa_kolumny" (Liczba)" określa błąd w przypadku błędu. Wystąpił błąd w określonym obiekcie określonego składnika. Wcześniej mogą zostać opublikowane komunikaty o błędach z dodatkowymi informacjami na temat błędu.

Błąd 0xc0209029: Przepływ danych Zadanie: "Składnik "ComponentName" (1)" nie powiódł się, ponieważ 0x80131937 wystąpił kod błędu...

[ADO NET Source [1424]] Błąd: Składnik "ADO NET Source" (1424) nie mógł przetworzyć danych. Składnik potoku zwrócił kod błędu HRESULT 0xC0209029 wywołania metody.

[SSIS. Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. Metoda PrimeOutput w komponencie "ADO NET Source" (1424) zwróciła kod błędu 0xC02090F5. Składnik zwrócił kod błędu, gdy aparat potoku wywołał metodę PrimeOutput(). Znaczenie kodu błędu jest definiowane przez składnik, ale błąd jest krytyczny i potok przestał wykonywać. Wcześniej mogą zostać opublikowane komunikaty o błędach z dodatkowymi informacjami na temat błędu.

Ten problem dotyczy sterowników ODBC, do których dostęp uzyskuje się z poziomu zarządzanego dostawcy ODBC, gdy są spełnione następujące warunki:

  • Funkcja ExecuteReader jest wywoływana przez parametr CommandBehavior.SequentialAccess. To wywołanie i parametr są używane w następujących okolicznościach:

    • Kiedy pakiet SSIS programu SQL Server 2005 odczytuje dane ze źródła DataReader lub gdy pakiet SSIS programu SQL Server 2008 odczytuje dane z zarządzanego źródła danych ADO.NET.
    • Źródło danych nie jest skonfigurowane do przekierowywania wartości błędu i obcinania.
  • Wywoływana jest funkcja OdbcDataReader.IsDbNull. Za pomocą tej metody w pakiecie SSIS można ustalić, czy pole ma wartość NULL.

  • Nazywa się jedna z następujących funkcji:

    • Funkcja OdbcDataReader.GetBytes jest wywoływana w celu uzyskania określonych typów danych, takich jak DT_BYTES, od zarządzanego dostawcy ODBC.
    • Funkcja OdbcDataReader.GetChars jest wywoływana w celu uzyskania określonych typów danych ciągu, takich jak DT_WSTR, od zarządzanego dostawcy ODBC.

Przyczyna

W programach .NET Framework 2.0 z dodatkiem SP2 i .NET Framework 3.5 z dodatkiem SP1 wprowadzono zmianę w zarządzanym dostawcy ODBC, zgodnie z którą ciągi są odczytywane z natywnego sterownika ODBC w scenariuszu opisanym w sekcji "Objawy". Z powodu tej zmiany zarządzany dostawca ODBC, który jest wywoływany w natywnym sterowniku ODBC przy użyciu funkcji interfejsu API SQLGetData, używa buforu o rozmiarze 0. Zgodne sterowniki ODBC nie mają problemów z tym wywołaniem. Jednak w takich okolicznościach niezgodne sterowniki ODBC mogą zakończyć się niepowodzeniem. W przypadku zgodnego sterownika ODBC funkcja interfejsu API SQLGetData zwraca SUCCESS_WITH_INFO po wykryciu buforu o rozmiarze 0. W przypadku niezgodnego sterownika ODBC wywołanie zwraca NO_DATA.

Rozwiązanie

Informacje o poprawkach

Obsługiwana poprawka jest dostępna w firmie Microsoft. Jednak ta poprawka ma na celu rozwiązanie tylko problemu opisanego w tym artykule. Tę poprawkę należy stosować tylko do systemów, w których występuje ten konkretny problem. Ta poprawka może zostać poddana dodatkowym testom. Dlatego jeśli ten problem nie dotyczy użytkownika, zaleca się zaczekać na następną aktualizację oprogramowania zawierającą tę poprawkę.

Jeśli poprawka jest dostępna do pobrania, u góry tego artykułu z bazy wiedzy znajduje się sekcja "Dostępne do pobrania poprawki". Jeśli ta sekcja nie zostanie wyświetlona, skontaktuj się z działem pomocy technicznej i pomocy technicznej firmy Microsoft w celu uzyskania poprawki.

Uwaga W przypadku wystąpienia dodatkowych problemów lub konieczności rozwiązania problemu może być konieczne utworzenie osobnego zgłoszenia serwisowego. Normalne koszty pomocy technicznej będą dotyczyć dodatkowych pytań oraz problemów, które nie kwalifikują się do objęcia tą poprawką. Aby uzyskać pełną listę numerów telefonów działu obsługi klienta i pomocy technicznej firmy Microsoft lub utworzyć oddzielne żądanie obsługi, odwiedź następującą witrynę firmy Microsoft w sieci Web:

http://support.microsoft.com/contactus/?ws=support Uwaga: W formularzu "Dostępne do pobrania poprawki" są wyświetlane języki, dla których poprawka jest dostępna. Jeśli nie widzisz odpowiedniego języka, oznacza to, że nie ma dla niego dostępnej poprawki.

Wymagania wstępne

Musisz mieć zainstalowany program .NET Framework 2.0 z dodatkiem Service Pack 2.

Informacje o ponownym uruchamianiu

Po zastosowaniu tej poprawki nie jest konieczne ponowne uruchomienie komputera.

Informacje na temat rejestru

Nie trzeba zmieniać rejestru.

Informacje o plikach poprawek

Ta poprawka zawiera tylko te pliki, które są wymagane do rozwiązania problemów wymienionych w tym artykule. Ta poprawka może nie zawierać wszystkich plików wymaganych do pełnej aktualizacji produktu do najnowszej kompilacji. Angielska wersja tej poprawki ma atrybuty pliku (lub nowsze atrybuty pliku) wymienione w poniższej tabeli. Daty i godziny dla tych plików są wyświetlane według uniwersalnego czasu koordynowanego (UTC). Informacje o pliku są konwertowane na czas lokalny. Aby znaleźć różnicę między czasem UTC a czasem lokalnym, użyj karty Strefa czasowa w elemencie Data i godzina w Panelu sterowania.

Program .NET Framework 2.0 dla systemów Windows 2000, Windows Server 2003, Windows XP, wersje 32-bitowe

Nazwa pliku Wersja pliku Rozmiar pliku Data Godzina Platforma
System.data.dll 2.0.50727.4063 2,933,760 19- 05:08 x86

Program .NET Framework 2.0 dla systemów Windows 2000, Windows Server 2003, Windows XP, wersji x64

Nazwa pliku Wersja pliku Rozmiar pliku Data Godzina Platforma
System.data.dll 2.0.50727.4063 3,008,512 18- 23:51 x64
System.data.dll 2.0.50727.4063 2,933,760 19- 05:08 x86

Program .NET Framework 2.0 dla systemów Windows 2000, Windows Server 2003, Windows XP, IA-64

Nazwa pliku Wersja pliku Rozmiar pliku Data Godzina Platforma
System.data.dll 2.0.50727.4063 2,933,760 19- 05:08 x86
System.data.dll 2.0.50727.4063 3,234,816 19- 01:09 IA-64

Program .NET Framework 2.0 dla systemów Windows Vista, Windows Server 2008, wersje 32-bitowe

Nazwa pliku Wersja pliku Rozmiar pliku Data Godzina
System.data.dll 2.0.50727.4400 2,933,760 10-Wrzesień-2009 11:54

Program .NET Framework 2.0 dla systemów Windows Vista, Windows Server 2008 i wersji x64

Nazwa pliku Wersja pliku Rozmiar pliku Data Godzina
System.data.dll 2.0.50727.4400 3,008,512 10-Wrzesień-2009 11:54

Program .NET Framework 2.0 dla systemów Windows Vista, Windows Server 2008, IA-64

Nazwa pliku Wersja pliku Rozmiar pliku Data Godzina
System.data.dll 2.0.50727.4400 3,234,816 10-Wrzesień-2009 11:54

Obejście

Aby obejść ten problem, użyj jednej z następujących metod.

Metoda 1

Edytuj pakiet SSIS, aby skonfigurować przekierowanie błędów i obcinań w źródle DataReader lub w zarządzanym źródle danych ADO.NET. Po zmodyfikowaniu pakietu SSIS w celu przekierowania danych wyjściowych błędu do miejsca docelowego pakiet zostanie pomyślnie uruchomiony, nawet jeśli w miejscu docelowym nie zostaną zapisane żadne wiersze. W tym celu wykonaj następujące czynności.

Uwaga W poniższej procedurze założono, że korzystasz z pakietu SSIS programu SQL Server 2005, który odczytuje dane ze źródła DataReader.

  1. Otwórz pakiet SSIS w programie SQL Server Business Intelligence Development Studio.

  2. Otwieranie okna dialogowego Edytor zaawansowany dla źródła czytnika danych w projektancie przepływu danych.

  3. Kliknij kartę Właściwości wejściowe i wyjściowe , a następnie rozwiń węzeł Dane wyjściowe czytnika danych w drzewie danych wejściowych i wyjściowych .

  4. Rozwiń węzeł Kolumny wyjściowe.

  5. Kliknij każdą kolumnę w węźle Kolumny wyjściowe , a następnie sprawdź właściwość DataType. Dla każdej kolumny, której właściwość DataType to DT_WSTR, DT_NTEXT, DT_BYTES lub DT_IMAGE, edytuj następujące dwie właściwości:

    • Ustaw właściwość ErrorRowDisposition na RD_RedirectRow.
    • Ustaw właściwość TruncationRowDisposition na RD_RedirectRow.
  6. Kliknij przycisk OK, aby zapisać zmiany.

  7. W projektancie przepływu danych dodaj nowe miejsce docelowe. Na przykład dodaj miejsce docelowe pliku prostego lub miejsce docelowe programu SQL Server.

  8. Użyj czerwonej strzałki ze źródła DataReader, aby połączyć je z nowo dodanym miejscem docelowym. Ta operacja skieruje wiersze błędów i wiersze obcinania do miejsca docelowego w celu zapisania wierszy błędów.

  9. Powtórz kroki od 1 do 8 dla wszystkich zadań przepływu danych, które uzyskują dostęp do kolumn z ciągami ODBC lub obrazami, ale kończą się niepowodzeniem z powodu komunikatów o błędach wymienionych w sekcji "Objawy".

Metoda 2

Odinstaluj oprogramowanie .NET Framework 2.0 z dodatkiem SP2 lub .NET Framework 3.5 z dodatkiem SP1. Nie zaleca się jednak odinstalowywania dodatku Service Pack, ponieważ obniża to niezawodność, ulepszenia funkcji i optymalizację wydajności.

Aby przywrócić system do stanu sprzed instalacji programu .NET Framework 2.0 z dodatkiem SP2 lub .NET Framework 3.5 z dodatkiem SP1, wykonaj następujące czynności:

  1. W Panelu sterowania kliknij dwukrotnie pozycję Dodaj lub usuń programy.

  2. Znajdź program Microsoft .NET Framework 3.5 z dodatkiem SP1, a następnie odinstaluj go.

  3. Znajdź program Microsoft .NET Framework 3.0 z dodatkiem SP2, a następnie odinstaluj go.

  4. Znajdź program Microsoft .NET Framework 2.0 z dodatkiem SP2, a następnie odinstaluj go.

  5. Zainstaluj ponownie oryginalną wersję programu .NET Framework 3.5. Ta czynność spowoduje ponowne zainstalowanie oprogramowania .NET Framework 2.0 z dodatkiem SP1 i programu .NET Framework 3.0 z dodatkiem SP1. Aby uzyskać program .NET Framework 3.5, odwiedź następującą witrynę firmy Microsoft w sieci Web:
    http://www.microsoft.com/download/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=en

Metoda 3

Należy skontaktować się z dostawcą sterownika ODBC innej firmy, aby dowiedzieć się, czy oferuje on aktualizację sterownika w celu rozwiązania tego problemu.

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.