2016-06-29 8 views
0

SqlServer to Teradataでopenqueryを実行するときにinsert文の後に複数の "統計収集"を組み合わせたいと思います。それを行う方法はありますか?私はオンラインで回答を見つけることができません。ここでの例である:[linkserver] ATopenqueryで複数収集統計情報を組み合わせる方法

EXEC( '; はTABLE1インデックス(IDX1、IDX2)に関する統計情報を収集し; はTABLE1インデックス(IDX3)に関する統計を収集TABLE2 FROM INSERT INTO TABLE1 SELECT *')。

答えて

1

COLLECT STATSはDDLステートメントであり、すぐにコミットする必要があります。マルチステートメントリクエストで複数のコレクションを実行する方法はありません。

しかし、あなたは、単に単一コレクトで複数の統計情報を収集することができ、これは動作するはずです:

EXEC ('INSERT INTO TABLE1 SELECT * FROM TABLE2; 
     COLLECT STATISTICS INDEX (IDX1,IDX2), INDEX (IDX3) ON TABLE1;') AT [linkserver]; 
+0

こんにちはDiater、私は挿入を組み合わせて、上記のように1つのOPENQUERYで一緒に集まるとき、私はこのエラーを得た「データ定義ではありません孤独でない限り有効です "。 openqueryのDML文で "collect"は許可されていませんか?しかし、私はあなたが上に示したように、複数のインデックスを1つのステートメントに追加する必要があります。 – angelcake

+0

@angelcake:Ops、忘れていますが、MultiStatement内でDMLとDDLを混在させることはできません。別々のEXECが2つ必要です。 – dnoeth

+0

ダイアエーターありがとう!私は2つのEXECでDMLとDDLを分けて、1つのテーブルに複数のインデックスを追加することができました。 – angelcake

関連する問題