SSIS gibt eine Unicode-Zeichenfolge als Shift-JIS-Zeichencode in eine Textdatei aus
Muster, die zu Fehlern führen
Angenommen, eine Spalte vom Typ nvarchar in einer Tabelle in SQL Server verfügt über eine Zeichenfolge, die in Shift-JIS nicht verwendet werden kann. Übrigens, wenn Sie diese Zeichen in die varchar-Spalte einfügen, gibt es Zeichen, die nicht verwendet werden können, z. B. die Spalte "ColumnShiftJis" auf der rechten Seite. Ersetzen Sie es.
In SSIS wird der Fluss so eingerichtet, dass Daten aus der vorherigen Tabelle wie in der Abbildung dargestellt gelesen und in eine Textdatei ausgegeben werden.
Angenommen, Sie möchten es als CSV-Datei ausgeben. Da Shift-JIS häufig in CSV-Dateien verwendet wird, setzen Sie die Zeichenkodierung der Textdatei auf Shift-JIS.
Wenn Sie mit dieser Einstellung ausführen, tritt zum Zeitpunkt der Ausgabe ein Fehler auf.
Eine Fehlermeldung ähnlich der folgenden wird angezeigt:
Die Ausgabedatei wird auch auf halbem Weg unterbrochen, wenn der Fehler aufgetreten ist.
Wenn Sie versuchen, so auszugeben, wie es ist, wird es ein Fehler sein, also versuchen Sie, "Datenkonvertierung" in der Mitte zu integrieren.
Konvertieren Sie den Datentyp von "DT_WSTR" in "DT_STR" und machen Sie ihn in ein Formular, das in Shift-JIS ausgegeben werden kann.
Wenn Sie dies jedoch auch ausführen, erhalten Sie eine Fehlermeldung. Dies liegt daran, dass SSIS die implizite Verarbeitung, die dazu führt, dass Daten fehlen, strikt versagt. Wenn SSIS eine Textverarbeitung ausführen soll, müssen Sie die Zeichenersetzung für alle Zeichen explizit angeben.
Problemumgehungen
Es gibt eine Möglichkeit, den Texttyp mithilfe von SQL zu ändern, wenn Sie aus einer Tabelle in einer Datenbank lesen. Wenn es sich um SQL handelt, wird es vom SQL Server-Modul ausgeführt, nicht von SSIS, sodass es ohne Fehler ausgeführt werden kann. Übrigens sind alle Zeichen, die in Shift-JIS nicht verwendet werden können, "?" Konvertiert in: Dies ist eine serverseitige Spezifikation für SQL Server. Auch wenn es sich nicht um SSIS handelt, ist das Ergebnis für alle Systeme, die SQL Server verwenden, ähnlich.
Öffnen Sie ADO NET Translator, und ändern Sie den Datenzugriffsmodus in SQL-Befehl. Nachdem Sie nun SQL eingeben können, schreiben Sie eine Select-Anweisung, um Daten aus der Datenbank abzurufen. Text, der Zeichen enthält, die in Shift-JIS nicht verwendet werden können, wird mithilfe von "cast" zwangsweise in varchar konvertiert.
Da Zeichen, die in Shift-JIS nicht verwendet werden können, bereits zum Zeitpunkt des Datenflusses an SSIS entfernt wurden, kann die Verarbeitung so übergeben werden, wie sie ist.
Sie können sehen, dass der Text erfolgreich in die CSV-Datei geschrieben wurde. Außerdem sind alle Zeichen, die in Shift-JIS nicht verwendet werden können, "?" Sie können sehen, dass es konvertiert wurde in: