2017-06-15 15 views
0

SQL Serverからdb2システムへのODBC接続があります。 OPENQUERYを使用して、目的のテーブルからレコードを選択、挿入、および削除することができます。odbc経由でSQL Serverからdb2内のレコードを削除します

しかし、テーブルからすべてのレコードを定期的に削除する必要があります。内容全体を削除しようとすると、分離レベルについてのエラーが発生しますが、実際には行数一度に削除しようとしています。

私はループスルーして一度に約600件を削除できますが、それは今のところハックです。

これをより効果的に行う方法の提案はありますか?

エラー私は取得しています:

OLE DBプロバイダリンクサーバー「MY_SERVER」の「MSDASQL」返されたメッセージ「どちら分離レベルでも、それの強化がサポートされています。」。

メッセージレベル73、レベル16、状態2、行32
リンクサーバー "MY_SERVER"のOLE DBプロバイダ "MSDASQL"のトランザクションを開始できません。

+0

OpenRowSetを使用すると、代わりにそのようにすることができます。ただし、削除操作を実行するための適切な権限があることを確認してください。 –

答えて

0

あなたは本当にあなたがしようとしない理由DB2テーブル内のすべてのレコードを削除する場合:

TRUNCATE TABLE <mytable> 

私が使用して(これはODBCではありません)あなたはOLE DBでEXECを経由してそれを実行することができると思います

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

私はそれを試みたが、私はそれのためのprivsを持っていない。また、少なくともSQL Serverでは、テーブルへのFKを持つテーブルがある場合、truncateは機能しません。これはここでは当てはまりませんが、切り捨てが常に利用可能な解決策ではないという一般的な理由です。 –

関連する問題