問題タブ [dataflowtask]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - プログラムで SSIS パッケージを作成する方法は?
同じデータベース内のテーブル A からテーブル B への単純なデータ フローを含む SSIS パッケージをプログラムで作成しようとしています。hereの例を使用しています。パッケージが作成され、dtsx ファイルに保存されますが、ビジュアル スタジオで開くと、ソース テーブルと宛先テーブルが選択されていないことがわかります。
また、宛先に到達する前に変換タスクを間に挿入したいと考えています。
編集
ソーステーブルと宛先テーブルを選択することができ、タスクも正常に実行されました。私がする必要があることがわかりました
(a) ソースと宛先にそれぞれ 1 つの oleDB 接続を使用します [この方法は好きではありません。1つの接続のみを使用したい]
(b) 宛先SetComponentProperty("AccessMode", 3)で Accessmode を 3 に設定します。これは、Table または View - fast load に相当します。
これに関するドキュメントはどこかにありますか。私が見つけることができるのは、SetComponentPropertyが行うことだけであり、それを行うために使用できるすべてのパラメーターではありません。例えば。「AccessMode」以外に何を指定できますか? 2 番目のパラメーター 3 または 2 または 1 は何を表していますか?
まだモニカをマッピングしようとしています。STOCK:PipelineTask は DataFlow タスクを意味します。say... copy column のモニカは何ですか?
datetime - SSIS パッケージの > 条件付き分割が >= 結果を返すのはなぜですか? 更新: (DateTime != DT_DBTIMESTAMP ?!)
> 結果を返す必要があるときに >= 結果を返す SSIS データ フローの条件付き分割変換があります。
最初から...私のSSISパッケージは、パッケージスコープを持つDateTime型の変数User::max_dateに1つのテーブルからmax(date)を格納するSQLタスクを実行します。
次に、パッケージは、条件付きの分割変換を含むデータ フロー タスクの実行に進みますdate > @[User::max_date]
。結果セットは常に User::max_date に等しい DateTime 値を持つ単一の行です。つまり、max(date) より新しい日付を持つ行が追加されていない場合、max(date) を含む行を返します。これは予期しない動作です。
さらに、条件付き分割からの他の出力は正しくありません。期待どおりのdate < @[User::max_date]
すべての行ではなく、すべての行です。date <= @[User::max_date]
なぜこうなった?
アップデート:
これがどのように起こっているかはわかりましたが、理由はわかりません。 User::max_date
は DateTime を格納しておりdate
、データ フロー タスクの値はDT_DBTIMESTAMP
. それらを a と比較すると、DATEDIFF(..)
ミリ秒以上の差しかありません。
だから私は問題を回避することができますが、なぜこれがこのように実装されるのか分かりません。
コメント?
sql-server-2005 - SSIS を使用してテーブルを更新する
共通キーに基づいて、テーブル内のフィールドを別のテーブルのデータで更新しようとしています。単純な SQL の場合は、次のようになります。
ただし、2 つのテーブルは同じデータベースにないため、SSIS を使用して更新しようとしています。ああ、sitenum/site_code は一方が varchar で、もう一方が nvarchar であるため、一致するようにデータ変換を行う必要があります。
どうすればいいのですか?
ソースが EHSIDMS、宛先が EHSIT のデータ フロー オブジェクトがあります。ユニコードを非ユニコードに変換するデータ変換があります。しかし、一致に基づいて更新するにはどうすればよいですか? データ アクセス モードとして SQL コマンドを使用して宛先を試しましたが、ソース テーブルがないようです。更新するフィールドをマップするだけの場合、フィールドの一致に基づいてどのように制限しますか?
ソース テーブルを Excel などにエクスポートして、そこから入力しようとしていますが、データ変換ステップを削除するだけで十分なようです。
データ更新タスクか何かがあってはいけませんか?それはデータ フロー変換タスクの 1 つですか?私はそれがどれなのかわかりませんか?
ssis - SSIS データ フローの進行状況の測定
フラット ファイルから 100 万行をロードする SSIS パッケージを実行しています。これは、複雑な変換と SQL Server テーブルの変換先にスクリプト タスクを使用します。私は、データフロー処理中に別のテーブルに行数を書き出すための最良の方法 (この段階では任意の方法) を見つけようとしています (おそらく、より効率的にするために 1000 の倍数で)。これは、定期的にテーブルにクエリを実行するだけで、数分かかるタスク全体の進行状況のパーセンテージを判断できるようにするためです。
フローに SQL タスクを追加できないようです。そのため、唯一の方法は .NET スクリプト内で SQL データベースに接続することだと推測しています。これは苦痛に思えますし、それが可能かどうかさえ確信が持てません。別のよりエレガントな方法はありますか?「Rows Read」パフォーマンス カウンターへの参照を見てきましたが、SSIS でこれにアクセスする場所がわかりません。また、データ フロー処理中に SQL テーブルに書き込む方法もわかりません。
任意の提案をいただければ幸いです。
グレン
sql-server-2005 - コンポーネント「x」のバージョンは、このバージョンの DataFlow と互換性がありません
SS2K5 Enterprise Edition SP3 の 64 ビット インストールで SSIS パッケージを実行しようとすると、このエラーが発生します。
パッケージは 32 ビット BIDS を使用して開発され、64 ビット SS2K5 Enterprise Edition SP2 および 64 ビット SS2K5 Developer Edition SP3 に正常に展開されました。
クライアント ツールを SP3 にアップグレードしましたが、結果は同じでした。
エイミーのアイデア?
ssis - SSIS Data Flow で '0.00' をフラット ファイルに入れるにはどうすればよいですか?
ADO.NET データ ソース (小さなテーブルのみ) を受け取り、select * クエリを実行し、クエリ結果をフラット ファイルに出力するデータ フローを備えた SSIS パッケージがあります (テーブル全体をプルすることも試みました)。 SQL select を使用しない)。
問題は、データ ソースが Money データ型の列を取得し、値が 0 でない場合はテキスト フラット ファイルに問題なく ('123.45' のように) 取り込まれますが、値が 0 の場合は表示されることです。宛先フラット ファイルでは「.00」として。先頭のゼロをフラット ファイルに戻す方法を知る必要があります。
通貨や文字列など、(フラット ファイル接続マネージャーで) 出力用にさまざまなデータ型を試しましたが、効果がないようです。
次のように、select で case ステートメントを試しました。
(それでも結果は「.00」になります)
私はこのようなバリエーションを試しました:
(それでも結果は '.00' になります)
と:
(結果は「.000000000000000000」)
このばかげた小さな問題は私を殺しています。ゼロの Money データ型データベース値を「0.00」としてフラット ファイルに取得する方法を誰か教えてもらえますか?
ssis - SSIS データ フローの更新
次のシナリオにアプローチする最善の方法を見つけようとしています。
概要
支払いは 1 日を通して収集され、テーブル (SQL Server) に格納されます。毎日の終わりに、これらの支払いはエクスポートされ、別のデータベース (Oracle) に挿入されます。Oracle データベースに正常に挿入された支払いは、タイムスタンプで更新されます。
プロセス
ステップ 1 - 各支払いレコードを Oracle データベースと照合して、支払いレコードによって参照される値が Oracle データベースに存在することを確認する必要があります。このステップを満たす支払いは、パイプラインを下に移動します。
ステップ 2 - 支払いが Oracle データベースに挿入され、挿入エラーがあればレコードセットにリダイレクトされます。
アプローチ
支払い (SQL Server) とルックアップ値 (Oracle) に OLEDB データ ソースを使用し、Merge Join (Left Outer) を使用してデータを支払いに追加しています。Merge Join の結果から条件分岐を使用して、ルックアップ データと一致した支払いを OLEDB Destination に渡します。
元の支払いテーブルを、挿入された支払いのみで更新する必要があります。条件付き分割を使用すると、ステップ 1 で一致しなかった行を特定でき、最後の挿入でエラー出力の行をリダイレクトすることで、そこで失敗した行を特定できます。ただし、正常に挿入された支払いを特定する最善の方法と、元のテーブルを更新する最善の方法がわかりません。
sql - SSIS式で「LIKE」ステートメントを実行することは可能ですか?
派生列タスクを使用して、CASEWHENステートメントを使用して列データを変更しています。しかし、私は言うことができる必要があります。
SQLコードは次のようになります。
SSIS式言語では、次のようになります。
LIKE演算子を使用することは可能ですか?
sql-server-2005 - SSIS ジョブの作成時に「選択されたデータ ソースはリモート コンピューターにあります」というエラーが表示される
ワークステーションで SSIS ジョブを開発中です。データ フロー タスクは、ローカル ワークステーションでカンマ区切りのフラット ファイルを開き、データをリモート サーバーの SQL サーバー データベースにインポートします。
SQL 宛先オブジェクトで宛先テーブルを選択しようとすると、次のエラーが表示されます。
選択したデータ ソースはリモート コンピューターにあります。一括挿入操作は、ローカル コンピューターで実行できます。
SSIS パッケージをテストできるように問題を解決するにはどうすればよいですか。
sql - SSISデータフロータスクでの複数のソースの使用
データフロータスクには、OLEDBソースがあります。このSQLコマンドのセクションでは、同じインスタンスに保持されている2つの異なるデータベースのテーブルに基づいてselectクエリをコンパイルしました。これを実行するたびにエラーが発生しますが、テーブルを同じデータベースに移動すると(テスト目的で)機能しました。
これから、ソースデータは同じデータベースからのものである必要があると推測していますが、とにかくこれの周りにありますか?ルックアップを使用してみましたが、機能しませんでした。ソースデータベースにビューを作成することもできますが、すべてをパッケージ内に保持する方法が必要だと思います。
前もって感謝します!これは、OLEDBソースで使用していたクエリです。
select * from commoncomponents.meta.ItemTypeLabelDefinition where internalid not in(select internalid from iscanimport.dbo.ItemTypeLabelDefinition)