2016-06-29 4 views
0

Ich möchte mehrere "Collect Statistics" nach Einfügen Anweisung kombinieren, wenn OpenQuery auf SqlServer zu Teradata ausführen. Gibt es einen Weg, es zu tun? Ich kann keine Antwort online finden. Hier ein Beispiel:So kombinieren Sie mehrere "Collect Statistics" -Anweisung in OpenQuery

EXEC ('INSERT INTO TABLE1 SELECT * FROM TABLE2; , Statistiken über TABLE1 INDEX (IDX1, IDX2); , Statistiken über TABLE1 INDEX (IDX3);') an [Linkserver];

Antwort

1

COLLECT STATS ist eine DDL-Anweisung und muss sofort commited werden, es gibt keine Möglichkeit, mehrere Sammlungen in einer Multi-Statement-Anforderung auszuführen.

Aber Sie können einfach mehrere Statistiken in einem einzigen Sammel sammeln, sollte diese Arbeit:

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

Hallo Diater, wenn ich Einsatz kombiniert und zusammen wie oben in einer Openquery sammeln, habe ich diesen Fehler „Data Definition nicht gültig, es sei denn, einsam. " Ist "collect" mit DML-Anweisung in openquery nicht erlaubt? Allerdings habe ich mehrere Indizes in einer Aussage hinzugefügt, wie Sie mir oben gezeigt haben, was großartig ist. – angelcake

+0

@angelcake: Ops, ich habe vergessen, Sie können nicht DML und DDL in einem MultiStatement mischen, benötigen Sie zwei separate EXECs. – dnoeth

+0

Danke Durchmesser! Ich habe DML und DDL in zwei EXECs getrennt und konnte mehrere Indizes für eine Tabelle hinzufügen. – angelcake

Verwandte Themen