2013-05-21 2 views
1

데이터베이스에 테이블을 삽입하는 것에 대한 트리거를 만들고 싶습니다. 삽입 된 ID를 사용하는 SQL Server 트리거

  • 은 행의 새로 삽입 된 ID를 가져옵니다 트리거를 호출 서버에

    1. 삽입 새 행 company_name에 테이블 : 나는 company_name 테이블이 경우에 따라서, 예를 들어, 나는 다음을 수행하고 싶습니다 A. 서버에 company_name 단지 B. 서버에 company_name 테이블에 서버 A에 삽입하여 서버 B
    2. 삽입 똑같은 로우에서 company_name 테이블
    3. Set identity_insert ON
    ,174,

    연결된 서버는 [ServerB].[ServerB-Database].dbo.company_name이라고 할 수 있습니다.

    이것은 다른 국가의 클라이언트의 데이터 호스팅 제한으로 인해 필요합니다.

  • +0

    그렇다면이 문제에 대한 귀하의 질문은 무엇입니까? –

    +0

    이렇게하려면이 트리거를 어떻게 작성합니까? –

    +2

    id가 guid입니까, 그렇지 않은 경우 서버에서 B의 ID와 충돌하는 것을 피하려면 어떻게해야합니까? serverB를 사용할 수없는 경우 수행 할 작업은 서버 a의 삽입에 실패한 것입니까? 나는 문제를 본다. –

    답변

    4

    하나의 문제는 지연 및 원격 삽입이 발생하지만, 로컬 트랜잭션이 여전히 실행되고있는 국가 A와 B

    사이의 연결입니다. 이렇게하면 성능이 저하되고 차단이 증가합니다.

    원격 서버를 사용할 수 없습니다. 또는 너무 오랫동안 응답해야합니다. 트리거가 실패하지 않도록 코딩 할 수 있지만 일관성없는 데이터가있는 경우

    마지막으로 원격 서버에 삽입이 있으면 다중 마스터 문제가 있습니다.

    다른 서버에 데이터를 게시하기 위해 복제와 같은 솔루션을 고려할 것입니다. 서비스 브로커를 사용하여 로컬 및 원격 삽입을 분리하는 방법을 고려하십시오.

    +0

    답장을 보내 주셔서 감사합니다. 나는 다른 접근 방식을 택할 것이라고 생각한다. –