4

私は自分が取り組んでいる仕事があり、それが私を困惑させています。あなたが私を助けることができることを願っています。基本的にsqliteテーブルに行を挿入するデータフロータスクを使用しています。私は「SQLタスク」を使用してこれを行っていましたが、残念ながら、GUIDをsqliteテーブルに正常に挿入する唯一の方法は、データフロータスクを使用してそれをバイトストリームとして変換することです。データが1つのテーブルから別のテーブルに流れていないため、ソースデータベースを使用したくありません。私は本当に、入力された変数を取得してバイトストリームに変換し、それをsqliteデータベースに正常に挿入したいと思っています。問題は、ソースデータベースなしではデータフロータスクを使用できないことです。

これまでの私の回避策は、ソースデータベース/テーブルと1つの列のみを宣言することでした(ただし、データフローでは使用しないでください)。これは正常に機能し、事前設定された変数を使用してsqliteに行を挿入することはできませんが、これを行うたびに出力ログにやや厄介なメッセージが残ります。

警告:0x80047076 at、SSIS.Pipeline:出力 "OLE DB Source Output"(11)およびコンポーネント "OLE DB Source"(1)の出力列 ""(117)は、その後データフロータスクで使用されません。この未使用の出力列を削除すると、データフロータスクのパフォーマンスが向上する可能性があります。

この警告が表示されないようにするための良い方法を知っている人はいますか?

4

2 に答える 2

9

データフローで、スクリプトコンポーネントを選択します。

[ソース]、[宛先]、または[変換]を選択するように求められたら、[ソース]を選択します。

事前に入力された変数をスクリプトタブのCustomProperties.ReadOnlyVariablesセクションに追加します。

[入力と出力]セクションに移動します。

各変数のデフォルト出力に列を追加します。

スクリプト(C#を使用している場合)で、CreateNewOutputRows()セクションに次のようなものを配置します

    Output0Buffer.AddRow();
    Output0Buffer.ContainerName = Variables.ContainerName;
    Output0Buffer.TaskName = Variables.TaskName;
    Output0Buffer.TaskStartDate = Variables.ContainerStartTime;

スクリプトを保存します。

スクリプトコンポーネントを宛先オブジェクトに接続します。

于 2012-09-06T16:47:44.477 に答える
-1

これによりパッケージの実行が失敗する場合は、これらの警告/エラーを無視するオプションがあります。

DataflowのSourceブロックをダブルクリックし、左側のペインの最後のタブ( "Error OUtput")に移動するだけで、エラーを無視するオプションを選択する必要があります。(私はそのオプションのどのフレーズがそれを行うのか正確にはわかりません)

于 2012-09-04T07:32:53.853 に答える