2017-06-15 5 views
0

Ich habe eine ODBC-Verbindung zu einem DB2-System von SQL Server. Ich kann OPENQUERY verwenden, um Datensätze aus meiner beabsichtigten Tabelle auszuwählen, einzufügen und zu löschen.Löschen von Datensätzen in DB2 von SQL Server über ODBC

Aber ich muss routinemäßig alle Datensätze aus einer Tabelle löschen und beim Versuch, den gesamten Inhalt zu löschen, bekomme ich Fehler über Isolationsstufen, aber ich denke, es hat tatsächlich mit der Anzahl der Zeilen, die ich bin Versuchen, auf einmal zu löschen.

Ich kann bis zu 600 auf einmal durchlaufen und löschen, aber das ist ein Hack für jetzt.

Irgendwelche Vorschläge, wie man das effektiver macht?

Fehler Ich erhalte:

OLE DB-Provider „MSDASQL“ für den Verbindungsserver „my_server“ zurückgegeben Meldung „Weder die Isolationsstufe noch eine Stärkung der sie unterstützt.“.

Msg 7392, Ebene 16, Status 2, Zeile 32
Eine Transaktion für OLE DB-Anbieter "MSDASQL" für Verbindungsserver "MY_SERVER" kann nicht gestartet werden.

+0

können Sie OpenRowSet verwenden, um es alternativ zu tun. Stellen Sie jedoch sicher, dass Sie über die Berechtigung zum Löschen verfügen. –

Antwort

0

Wenn Sie wirklich löschen wollen versuchen, alle Datensätze in der DB2-Tabelle, warum Sie nicht:

TRUNCATE TABLE <mytable> 

Ich glaube, Sie es über EXEC in OLE DB ausgeführt werden kann (dies ist ODBC nicht) unter Verwendung von etwas wie dieses:

EXEC <mylinkedserver.db>sp_executesql 'TRUNCATE TABLE <mytable>' 
+0

Ich habe das versucht, aber ich habe keine Privilegien dafür. Außerdem wird truncate zumindest in sql server nicht funktionieren, wenn es Tabellen mit einem FK für die Tabelle gibt. Das ist hier nicht der Fall, aber es ist ein häufiger Grund, warum truncate nicht immer eine verfügbare Lösung ist. –

Verwandte Themen