SSIS voert een Unicode-tekenreeks uit als een Shift-JIS-tekencode naar een tekstbestand
Patronen die leiden tot fouten
Stel dat een kolom met het type nvarchar in een tabel op SQL Server een tekenreeks heeft die niet kan worden gebruikt in Shift-JIS. Trouwens, als je deze tekens in de varchar-kolom plaatst, zijn er tekens die niet kunnen worden gebruikt, zoals de kolom "ColumnShiftJis" aan de rechterkant. Vervang het.
Op SSIS is de stroom ingesteld om gegevens uit de vorige tabel te lezen zoals weergegeven in de afbeelding en deze uit te voeren naar een tekstbestand.
Stel dat u het wilt uitvoeren als een CSV-bestand. Aangezien Shift-JIS vaak wordt gebruikt in CSV-bestanden, stelt u de tekencodering van het tekstbestand in op Shift-JIS.
Als u met deze instelling uitvoert, treedt er een fout op bij het tijdstip van uitvoer.
Er wordt een foutbericht van de volgende strekking weergegeven:
Het uitvoerbestand wordt ook halverwege onderbroken wanneer de fout optrad.
Als u probeert uit te voeren zoals het is, zal het een fout zijn, dus probeer "gegevensconversie" in het midden op te nemen.
Converteer het gegevenstype van "DT_WSTR" naar "DT_STR" en maak er een formulier van dat kan worden uitgevoerd naar Shift-JIS.
Als u dit echter ook uitvoert, krijgt u een foutmelding. Dit komt omdat SSIS strikt faalt impliciete verwerking waardoor gegevens ontbreken. Als u wilt dat SSIS tekstontgeteuvre verwerkt, moet u expliciet tekenvervanging voor alle tekens opgeven.
Tijdelijke oplossingen
Er is een manier om het type tekst te wijzigen met SQL bij het lezen van een tabel in een database. Als het SQL is, is het de SQL Server-engine die het uitvoert, niet SSIS, zodat het zonder fouten kan worden uitgevoerd. Trouwens, alle tekens die niet kunnen worden gebruikt in Shift-JIS zijn "?" Geconverteerd naar: Dit is een specificatie aan de SQL Server-zijde. Zelfs als het geen SSIS is, is het resultaat vergelijkbaar voor alle systemen die SQL Server gebruiken.
Open ADO NET Translator en wijzig de gegevenstoegangsmodus in SQL Command. Nu u SQL kunt invoeren, schrijft u een Select-instructie om gegevens uit de database op te halen. Tekst die tekens bevat die niet kunnen worden gebruikt in Shift-JIS, wordt met cast geforceerd geconverteerd naar varchar.
Aangezien tekens die niet in Shift-JIS kunnen worden gebruikt, al zijn verwijderd op het moment dat gegevens naar SSIS stromen, kan de verwerking worden doorgegeven zoals deze is.
U kunt zien dat de tekst met succes naar de CSV is geschreven. Ook zijn alle tekens die niet kunnen worden gebruikt in Shift-JIS "?" U kunt zien dat het is omgezet in: