SSIS vypíše řetězec Unicode jako kód znaku Shift-JIS do textového souboru
Vzory, které vedou k chybám
Předpokládejme, že sloupec typu nvarchar v tabulce na serveru SQL Server má řetězec, který nelze použít v Shift-JIS. Mimochodem, pokud tyto znaky vložíte do sloupce varchar, existují znaky, které nelze použít, například sloupec "ColumnShiftJis" vpravo. Vyměňte jej.
V SSIS je tok nastaven tak, aby četl data z předchozí tabulky, jak je znázorněno na obrázku, a výstup do textového souboru.
Předpokládejme, že jej chcete vyvést jako soubor CSV. Vzhledem k tomu, že Shift-JIS se často používá v souborech CSV, nastavte kódování znaků textového souboru na Shift-JIS.
Pokud provedete s tímto nastavením, dojde k chybě při časování výstupu.
Zobrazí se chybová zpráva podobná následující:
Výstupní soubor bude také přerušen v polovině, když dojde k chybě.
Pokud se pokusíte výstup tak, jak je, bude to chyba, takže zkuste začlenit "převod dat" uprostřed.
Převeďte datový typ z "DT_WSTR" na "DT_STR" a vytvořte jej do formuláře, který lze výstupem do Shift-JIS.
Pokud to však také provedete, zobrazí se chyba. Je to proto, že SSIS striktně selhává implicitní zpracování, které způsobuje, že data chybí. Pokud chcete, aby SSIS prováděl zpracování textu bez překlepu, budete muset explicitně zadat nahrazení znaků pro všechny znaky.
Možná zástupná řešení
Existuje způsob, jak změnit typ textu pomocí SQL při čtení z tabulky v databázi. Pokud je to SQL, je to modul SQL Server, který ho spouští, ne SSIS, takže se dá spustit bez chyb. Mimochodem, všechny znaky, které nelze použít v Shift-JIS, jsou "?" Převedeno na: Toto je specifikace na straně SQL Serveru. I když se nejedná o SSIS, výsledek je podobný pro všechny systémy, které používají SQL Server.
Otevřete ADO NET Translator a změňte režim přístupu k datům na SQL Command. Teď, když můžete zadat SQL, napište příkaz Select pro načtení dat z databáze. Text, který obsahuje znaky, které nelze použít v Shift-JIS, je násilně převeden na varchar pomocí přetypování.
Vzhledem k tomu, že znaky, které nelze použít v Shift-JIS, již byly odebrány v době toku dat do SSIS, může být zpracování předáno tak, jak je.
Můžete vidět, že text je úspěšně zapsán do souboru CSV. Také všechny znaky, které nelze použít v Shift-JIS, jsou "?" Můžete vidět, že byl převeden na: