2009-12-23 2 views
1

나는 서버 A에 카탈로그가 있고 서버 B에 동일한 명명 된 카탈로그가 있습니다. 서버 B에 동의어를 사용하고 있습니다. 따라서 일부 테이블은 실제로 서버 A로 연결됩니다.테이블을 사용하여 2005 테이블 동의어 동적 쿼리 생성 오류가 발생합니다

ServerB.Table에서 select *를 호출하면 실제로 ServerA.Table의 데이터가 실제로 반환됩니다. 이 잘 작동합니다 잘 때 선택한 일을하는 것, 그리고 잘 손을 tsql 스크립트를 삽입 할 경우 삽입, ADO.NET 어댑터를 사용할 때 "동적 SQL 생성 SelectCommand에 대해 지원되지 않습니다. 기본 테이블 정보를 반환하지 않습니다. " 일반적으로 데이터가 반환 될 때 사용할 수있는 기본 키 정보가 없음을 의미합니다. 이 주위에 어떤 방법이 있습니까? (동의어를 계속 사용하는 것이 가능하면 실제로 사용을 제외시키는 옵션이 아니므로 동의어를 사용하는 것이 좋습니다.)

항상 기본 키인 "ID"열이 있으며 필요한 경우 기본 키 정보를 다시 ado.net 어댑터/데이터 테이블에 하드 코드 할 수 있음을 알고 있습니다.

감사합니다.

답변

1

데이터 수정 작업을 위해 SQL을 얻으려면 SQLCommandBuilder을 사용하고 있습니다.

원격 테이블에서 메타 데이터가 반환되지 않으므로 명령 작성자는 PK으로 사용할 필드를 알지 못하므로 테이블을 업데이트하거나 삭제하기 위해 적절한 SQL을 생성 할 수 없습니다.

데이터 어댑터 용으로 UpdateCommandDeleteCommand을 제공해야합니다.

코드는 this link을 참조하십시오.

+0

그래, 불행히도 나는 모든 업데이트 명령을 수작업으로 할 필요없이이 작업을 수행 할 수있는 방법이 있었으면 좋겠다./아니면 최악의 경우 테이블에 기본 키를 설정한다. – mrwayne

관련 문제