0

データがテーブルに挿入された後の私のパッケージ。SQL TASK を使用した更新クエリでチェックサム値を入力しましたが、時間がかかりました。これを解決する方法 サードパーティのコンポーネントなし。

親切に私を助けてください。

以下のクエリは、checksumID を入力します。このテーブルには、Import_Id に基づく 1,000 万件以上のレコードがあります。

UPDATE Communication SET ChecksumId = CHECKSUM(address1,address2,state,zip,city,....) どこで import_id=?

このプロセスにかかる時間は、最低でも 1 ~ 2 時間です。

4

2 に答える 2

1

1 つの可能性は、独自のチェックサム関数をコーディングし、データをロードするデータ フローのスクリプト変換を使用して、受信データの各行に適用することです。実行時間の観点からは、おそらく最速です。ただし、値が T-SQL CHECKSUM と一致することが不可欠な場合は、多くのリバース エンジニアリングを行う必要があります。

または、ターゲット テーブルを直接ロードする代わりに、ターゲット テーブルと同じレイアウトで作業テーブルを作成し、必要な列の CHECKSUM として定義された計算列を作成します。

CREATE TABLE WRK_Communication
(
    address1 VARCHAR(50),
    address2 VARCHAR(50),
    -- other columns
    ChecksumId CHECKSUM(address1,address2,state,zip,city,....)    
) 

SSIS パッケージでは、最初に SQL 実行タスクを使用してこの作業テーブルを切り捨て、次にデータ フローを使用してそれを読み込み、別の SQL 実行タスクを使用して作業テーブルの内容をターゲット テーブルに挿入します。

于 2012-12-02T00:15:04.620 に答える
1

T-SQL CHECKSUM 関数を使用します: http://msdn.microsoft.com/en-us/library/ms189788.aspx

次のように、行全体で使用できます。

select FirstName, LastName, CheckSum(*) As CheckSum
  from SomeUserTable
于 2012-11-30T13:43:26.800 に答える