0
レコードセットとスクリプトコンポーネントに問題がありましたので、私はその状況を説明します。SSIS - スクリプトでオブジェクト変数(レコードセット)を使用する:一度だけ
私の最初のステップでは、SQLから1つのテーブルを読み取り、結果をRecordset Destinationに格納し、このレコードセットを変数に保存するData Flow Taskを作成しました。私の第2ステップで
、私はこのコンポーネントにデータフロータスクをしました:- - 私は
- Bファイルフラットソースと.csvファイルをロードします - 私はスクリプトコンポーネント でデータを修正します
- C - 私は、私は、各行のイベントを上昇し、私はこの問題は、トンで発生したスクリプトタスク で広告イベントハンドラでこのイベントをキャッチする工程b OLE DB先
とSQLでデータを保存します彼のスクリプトタスク。これはコードです:
public void Main()
{
...
string messaggio = GetMessaggio(connection, EventNumber);
...
}
private string GetMessaggio(string eventNumber)
{
using (var adapt = new OleDbDataAdapter())
using (var dt = new DataTable())
{
adapt.Fill(dt, Dts.Variables["User::RS_EventType"].Value);
return dt.AsEnumerable()
.Where(r => r.Field<int>("ev_number").ToString() == eventNumber)
.Select(r => r.Field<string>("ev_message"))
.FirstOrDefault() ?? "ND";
}
}
初めての場合、データテーブルには正しいレコードがロードされますが、これは最初に発生します。 メソッドが再度呼び出されると、Dts.Variables ["User :: RS_EventType"]。値はまだ有効ですが、adapt.Fillはデータテーブルを埋めることはありません。
何が問題なのですか?私は解決策は、この記事を読んでい
あなたは終わりを示すために、あなたの文ブロックの最後でdt.Closeを()やってみました次のレコードはdt – Caz1224
dt.Close()の新しいインスタンスを持つでしょうか?この方法はどこですか? –