3

ssis でソース テーブルから宛先テーブル (SQL サーバーから SQL サーバー) にテーブルを更新しようとするたびに、更新クエリを使用してストアド プロシージャを実行します。OLE DB コマンドを使用してこの SP を実行します。OLE DB コマンドを実行するには、DT_WSTR から DT_STR へのデータ変換を行う必要があります。

ここに画像の説明を入力

私の質問は、このデータカバーなしで更新を実行することは可能ですか? 私が混乱しているのは、SQLサーバーからデータをプルしてSQLサーバーにデータをプッシュしていることです。では、なぜその varchar が異なるデータ エンコーディング (DT_WSTR と DT_STR) を持っているのでしょうか?

しかし、単に挿入を行う、つまり更新を行わない (OLE DB コマンドを使用する) 場合、カバーを行う必要はなく、SSIS パッケージは正常に動作します。現在、DT_WSTR と DT_STR の問題はありませんが、OLE DB コマンドを実行しようとしたときにのみ問題が発生します。ssis はどのように nvarchar から varchar にデータを挿入していますか?

ここに画像の説明を入力

これがばかげた質問であれば申し訳ありません。私はSSISにまったく慣れていません。

4

1 に答える 1

2

ADO.NET接続に使用しているソースSQL Azureは、デフォルトでに変換 varcharされているようですnvarchar。現在、OLEDBソースを使用して接続できないためSQL Azure、私の場合は正しい列のデータ型が得られるため、Data Conversion に変換するために使用するDT_WSTR必要がありますDT_STR

ソースでこの問題を示すMicrosft Connect 項目があります。ADO.NET

 DECLARE @column_value AS NVARCHAR(30)
 SET @column_value = ?
 UPDATE YOURTABLE 
 SET column1=convert(varchar(30),@column_value)
于 2013-04-22T06:06:06.880 に答える