2012-05-21 3 views
0

Micrsoft SQL 서버에서 삭제 된 쿼리를 실행하여 원격 mySQL 테이블의 테이블을 지우려고합니다.SQL 서버 openquery - "키 열 정보가 부족하거나 잘못되었습니다. 업데이트로 인해 영향을받는 행이 너무 많습니다."

쿼리는 다음과 같습니다

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

이 오류를 반환 :

OLE DB provider "MSDASQL" for linked server "WEB_DB" returned message "Key column information is insufficient or incorrect. Too many rows were affected by update.". Msg 7345, Level 16, State 1, Line 1 The OLE DB provider "MSDASQL" for linked server "WEB_DB" could not delete from table "select id,university_name,college_name from table_name". Updating did not meet the schema requirements.

다음과 같이 테이블을 만드는 데 사용되는 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, fi에 대한 삭제 명령을 실행해야합니다 처음에는 한계가 ~ 700으로 줄어들어 한계가 약 200 줄인 것처럼 보입니다!

도움을 주시면 감사하겠습니다.

감사 요나

+0

테이블에 기본 키가 있습니까? –

+0

현재 ID가 중복 값을 가질 수 있으므로 새 열을 만들어야합니다. – Jona

+1

와우 ... null 일 수도 있고 중복 된 열을 포함하는 매우 잘못된 이름 일 수도 있습니다. 나는 너와 나 혼란에 대처해야한다는 것이 기쁘다. –

답변

0

원격 테이블의 모든 행을 삭제, 왜 안하려는 경우 :

DELETE WEB_DB...table_name; 

또는이 자주하고있는 일이 있다면, 왜 넣지

전화를 다른쪽에 저장 프로 시저?

또한 시도 할 수 있습니다 :

EXEC ('delete table_name') AT WEB_DB; 
+0

답장을 보내 주셔서 감사합니다. 링크 된 서버에서 사용중인 삭제 구문 형식을 보여주는 페이지가 마음에 드시면 언제든지 작동하지 않을 수 있습니다. 스토어드 프로 시저가 갈 수있는 방법 일 수 있지만 이렇게 작동해야하는 것처럼 보입니다. – Jona

+0

미안합니다. 미안합니다. 그것은 아마도'WEB_DB.dbname..table_name' 또는'WEB_DB.dbname.table_name'이어야합니다 ... –

0

가 OPENQUERY를 사용하여 MySQL의 테이블을 삭제하려면, 당신은 이것을 시도한다 :

EXEC('TRUNCATE TABLE table_name') AT WEB_DB