Microsoft distribuie remedierile Microsoft SQL Server 2005, Microsoft SQL Server 2008 și Microsoft SQL Server 2008 R2 ca un fișier descărcabil. Deoarece remedierile sunt cumulative, fiecare ediție nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu remedierea anterioară pentru SQL Server 2005, Microsoft SQL Server 2008 sau SQL Server 2008 R2.
Simptome
Luați în considerare următorul scenariu:
Executați un pachet Microsoft SQL Server 2005, Microsoft SQL Server 2008 sau SQL Server 2008 R2 Integration Services (SSIS) pe un computer care are una dintre următoarele instalări .NET Framework:
- .NET Framework 2.0 Service Pack 2 (SP2)
- .NET Framework 3.5 Service Pack 1 (SP1)
Pachetul SSIS utilizează un driver ODBC terț care importă date despre caractere.
Cu toate acestea, atunci când rulați pachetul SSIS, primiți următoarele mesaje de eroare:
Notă
[ADO NET Source [1424]] Eroare: Cod de eroare SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. "Componenta "ADO NET Source" (1424)" a eșuat deoarece 0x80131937 apărut codul de eroare, iar aranjarea rândului de eroare în "coloana de ieșire "numecoloană" (număr)" specifică eroarea la eroare. A apărut o eroare pentru obiectul specificat al componentei specificate. Este posibil să existe mesaje de eroare publicate înainte cu mai multe informații despre eroare.
Eroare 0xc0209029: Flux de date Activitate: "componenta "ComponentComponentName" (1)" nu a reușit, deoarece 0x80131937 apărut codul de eroare...
[ADO NET Source [1424]] Eroare: Componenta "ADO NET Source" (1424) nu a putut procesa datele. Componenta de pipeline a returnat codul de eroare HRESULT 0xC0209029 un apel de metodă.
[SSIS. Pipeline] Eroare: Cod de eroare SSIS DTS_E_PRIMEOUTPUTFAILED. Metoda PrimeOutput de pe componenta "ADO NET Source" (1424) returna codul de eroare 0xC02090F5. Componenta a returnat un cod de eroare atunci când motorul de pipeline a apelat PrimeOutput(). Semnificația codului de eroare este definită de componentă, dar eroarea este fatală și canalul nu se mai execută. Este posibil să existe mesaje de eroare publicate înainte cu mai multe informații despre eroare.
Această problemă afectează driverele ODBC care sunt accesate de la furnizorul ODBC gestionat atunci când se îndeplinesc următoarele condiții:
Funcția ExecuteReader este apelată de parametrul CommandBehavior.SequentialAccess. Acest apel și parametrul sunt utilizate în următoarele circumstanțe:
- Atunci când un pachet SSIS SQL Server 2005 citește date dintr-o sursă DataReader sau când un pachet SSIS SQL Server 2008 citește date dintr-o sursă de date ADO.NET gestionată.
- Sursa de date nu este configurată pentru a redirecționa valorile de eroare și de trunchiere.
Se apelează funcția OdbcDataReader.IsDbNull. Pachetul SSIS utilizează această metodă pentru a determina dacă valoarea dintr-un câmp este nulă sau nu.
Una dintre următoarele funcții este apelată:
- Funcția OdbcDataReader.GetBytes este apelată pentru a obține anumite tipuri de date, cum ar fi DT_BYTES, de la furnizorul ODBC gestionat.
- Funcția OdbcDataReader.GetChars este apelată pentru a obține anumite tipuri de date șir, cum ar fi DT_WSTR, de la furnizorul ODBC gestionat.
Cauză
.NET Framework 2.0 SP2 și .NET Framework 3.5 SP1 introduc o modificare în furnizorul ODBC gestionat prin care șirurile sunt citite din driverul ODBC nativ în scenariul descris în secțiunea "Simptome". Din cauza acestei modificări, furnizorul ODBC gestionat care este apelat în driverul ODBC nativ utilizând funcția API SQLGetData utilizează un tampon de dimensiune 0. Driverele ODBC conforme nu au probleme în acest apel. Totuși, driverele ODBC neconforme pot să nu reușească în aceste circumstanțe. Pentru un driver ODBC conform, funcția API SQLGetData returnează SUCCESS_WITH_INFO atunci când este detectat un tampon de dimensiunea 0. Pentru un driver ODBC neconform, apelul returnează NO_DATA.
Rezolvare
Informații despre remedierea rapidă
O remediere rapidă acceptată este disponibilă de la Microsoft. Cu toate acestea, această remediere rapidă este menită să corecteze doar problema descrisă în acest articol. Aplicați această remediere rapidă doar sistemelor care întâmpină această problemă. Această remediere rapidă poate fi testată suplimentar. De aceea, dacă nu sunteți grav afectat de această problemă, vă recomandăm să așteptați următoarea actualizare de software care conține această remediere rapidă.
Dacă remedierea rapidă este disponibilă pentru descărcare, există o secțiune "Remediere rapidă disponibilă" în partea de sus a acestui articol din baza de cunoștințe. Dacă această secțiune nu apare, contactați Serviciile pentru clienți și asistența Microsoft pentru a obține remedierea rapidă.
Notă: dacă apar probleme suplimentare sau dacă este necesară vreo depanare, poate fi necesar să creați o solicitare de serviciu separată. Costurile uzuale de suport se vor aplica pentru întrebări suplimentare de suport și pentru probleme ce nu fac obiectul acestei remedieri rapide specifice. Pentru o listă completă a numerelor de telefon pentru asistență și suport clienți Microsoft sau pentru a crea o solicitare separată de servicii, vizitați următorul site web Microsoft:
http://support.microsoft.com/contactus/?ws=support Notă Formularul "Descărcare remediere rapidă disponibilă" afișează limbile pentru care este disponibilă remedierea rapidă. Dacă nu vedeți limba, motivul este faptul că nu este disponibilă o remediere rapidă pentru acea limbă.
Cerințe preliminare
Trebuie să aveți instalat .NET Framework 2.0 Service Pack 2.
Informații despre repornire
Nu este necesar să reporniți computerul după ce aplicați această remediere rapidă.
Informații despre registry
Nu este necesar să modificați registry.
Informații despre fișierul de remediere rapidă
Această remediere rapidă conține numai acele fișiere care sunt necesare pentru a corecta problemele enumerate în acest articol. Această remediere rapidă poate să nu conțină toate fișierele necesare pentru a actualiza complet un produs la cea mai recentă compilare. Versiunea în limba engleză a acestei remedieri rapide are atributele de fișier (sau atributele de fișier mai recente) listate în tabelul următor. Datele și orele pentru aceste fișiere sunt listate în UTC. Când vizualizați informațiile despre fișier, acestea sunt convertite la ora locală. Pentru a găsi diferența dintre UTC și ora locală, utilizați fila Fus orar din elementul Dată și oră din Panou de control.
.NET Framework 2.0 pentru Windows 2000, Windows Server 2003, Windows XP, versiunile pe 32 de biți
| Nume fișier | Versiune de fișier | Dimensiune fișier | Dată | Oră | Platformă |
|---|---|---|---|---|---|
| System.data.dll | 2.0.50727.4063 | 2,933,760 | 19- | 05:08 | x86 |
.NET Framework 2.0 pentru versiunile Windows 2000, Windows Server 2003, Windows XP, x64
| Nume fișier | Versiune de fișier | Dimensiune fișier | Dată | Oră | Platformă |
|---|---|---|---|---|---|
| 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 |
.NET Framework 2.0 pentru versiunile Windows 2000, Windows Server 2003, Windows XP, IA-64
| Nume fișier | Versiune de fișier | Dimensiune fișier | Dată | Oră | Platformă |
|---|---|---|---|---|---|
| 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 |
.NET Framework 2.0 pentru Windows Vista, Windows Server 2008, versiunile pe 32 de biți
| Nume fișier | Versiune de fișier | Dimensiune fișier | Dată | Oră |
|---|---|---|---|---|
| System.data.dll | 2.0.50727.4400 | 2,933,760 | 10-sept-2009 | 11:54 |
.NET Framework 2.0 pentru Windows Vista, Windows Server 2008, versiunile x64
| Nume fișier | Versiune de fișier | Dimensiune fișier | Dată | Oră |
|---|---|---|---|---|
| System.data.dll | 2.0.50727.4400 | 3,008,512 | 10-sept-2009 | 11:54 |
.NET Framework 2.0 pentru versiunile Windows Vista, Windows Server 2008, IA-64
| Nume fișier | Versiune de fișier | Dimensiune fișier | Dată | Oră |
|---|---|---|---|---|
| System.data.dll | 2.0.50727.4400 | 3,234,816 | 10-sept-2009 | 11:54 |
Soluție
Pentru a evita această problemă, utilizați una dintre metodele următoare.
Metoda 1
Editați pachetul SSIS pentru a configura redirecționarea erorii și trunchierea pe sursa DataReader sau pe sursa de date ADO.NET gestionată. După ce editați pachetul SSIS pentru a redirecționa ieșirea erorii la o destinație, pachetul va rula cu succes, chiar dacă nu sunt scrise rânduri în destinație. Pentru aceasta, urmați acești pași.
Notă Următorii pași presupun că utilizați un pachet SSIS SQL Server 2005 care citește date dintr-o sursă DataReader.
Deschideți pachetul SSIS în SQL Server Business Intelligence Development Studio.
Deschideți caseta de dialog Editor avansat pentru Sursă lector de date din proiectantul Flux de date.
Faceți clic pe fila Proprietăți de intrare și ieșire , apoi extindeți nodul de ieșire DataReader în arborele de intrări și ieșiri .
Extindeți nodul Coloane de ieșire .
Faceți clic pe fiecare coloană de sub nodul Coloane de ieșire , apoi examinați proprietatea DataType. Pentru fiecare coloană a cărei proprietate DataType este DT_WSTR, DT_NTEXT, DT_BYTES sau DT_IMAGE, editați următoarele două proprietăți:
- Setați proprietatea ErrorRowDisposition la RD_RedirectRow.
- Setați proprietatea TruncationRowDisposition la RD_RedirectRow.
Faceți clic pe OK pentru a salva modificările.
În proiectantul Flux de date, adăugați o destinație nouă. De exemplu, adăugați o destinație de fișier plată sau o destinație SQL Server.
Utilizați săgeata roșie din sursa DataReader pentru a-l conecta la destinația nou adăugată. Această operațiune va direcționa rândurile de eroare și rândurile de trunchiere către destinație, pentru a salva rândurile de eroare.
Repetați pașii 1-8 pentru toate activitățile Flux de date care accesează coloane de șir sau imagine ODBC și care nu reușesc cu mesajele de eroare menționate în secțiunea "Simptome".
Metoda 2
Dezinstalați .NET Framework 2.0 SP2 sau .NET Framework 3.5 SP1. Cu toate acestea, nu recomandăm să dezinstalați un pachet Service Pack, deoarece acest lucru sacrifică fiabilitatea, îmbunătățirile de caracteristici și optimizările de performanță pe care le oferă pachetul Service Pack.
Pentru a restaura sistemul la starea în care se afla înainte de a instala .NET Framework 2.0 SP2 sau .NET Framework 3.5 SP1, urmați acești pași:
În Panou de control, faceți dublu clic pe Adăugare sau eliminare programe.
Găsiți Microsoft .NET Framework 3.5 SP1, apoi dezinstalați-l.
Găsiți Microsoft .NET Framework 3.0 SP2, apoi dezinstalați-l.
Găsiți Microsoft .NET Framework 2.0 SP2, apoi dezinstalați-l.
Reinstalați versiunea originală de .NET Framework 3.5. Acest pas va reinstala .NET Framework 2.0 SP1 și .NET Framework 3.0 SP1. Pentru a obține .NET Framework 3.5, vizitați următorul site web Microsoft:
http://www.microsoft.com/download/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=en
Metoda 3
Contactați furnizorul driverului ODBC terț pentru a determina dacă furnizorul are o actualizare pentru driver pentru a rezolva această problemă.
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft care sunt listate în secțiunea „Se aplică la”.