0

Micrsoft SQL サーバーから削除クエリを実行して、リモートの mySQL テーブルのテーブルをクリアしようとしています。

クエリは次のとおりです。

delete from OPENQUERY(WEB_DB,'select id,university_name,college_name from table_name');

これはエラーを返しています:

リンク サーバー "WEB_DB" の OLE DB プロバイダー "MSDASQL" から、"キー列情報が不十分であるか正しくありません。更新の影響を受けた行が多すぎます。" が返されました。メッセージ 7345、レベル 16、状態 1、行 1 リンク サーバー "WEB_DB" の OLE DB プロバイダー "MSDASQL" は、テーブル "select id,university_name,college_name from table_name" から削除できませんでした。更新はスキーマ要件を満たしていませんでした。

テーブルの作成に使用する SQL は次のとおりです。

CREATE TABLE IF NOT EXISTS `table_name` (
  `pk` int(11) AUTO_INCREMENT,
  `studentid` int(11) default NULL,
  `university_name` varchar(255) default NULL,
  `college_name` varchar(255) default NULL,
  CONSTRAINT PRIMARY KEY(`pk`)
);

興味深いことに、リモート データベース レコードの一部を削除しているように見えます。約 900 あるはずですが、delete コマンドを初めて実行すると、これが約 700 に減少するため、制限は約 200 行になるようです?!

どんな助けでも大歓迎です。

ありがとうジョナ

4

3 に答える 3

2

リモート テーブルのすべての行を削除しようとしている場合は、次のようにしてください。

DELETE WEB_DB...table_name;

または、これを頻繁に行う場合は、呼び出し先にストアド プロシージャを配置してみませんか?

あなたも試してみてください:

EXEC ('delete table_name') AT WEB_DB;
于 2012-05-21T16:31:46.620 に答える