2017-11-06 1 views
1

제품 데이터 및 재고 번호가 자주 업데이트되는 ERP 시스템 (Navision)이 있습니다. 제품의 특성이 업데이트 될 때마다이 변경 내용을 Service Broker를 사용하여 다른 SQL Server에 푸시합니다. 나는 탐지를 위해 트리거를 사용하는 것을 고려하고 있었지만 이것이 최선의 방법인지 그리고 그것이 확장 가능한지 여부는 확실하지 않습니다. 나는 대략 갱신이 예상한다. 초당 1 회이지만이 수는 2 배 또는 3 배가 될 수 있습니다.SQL Server의 데이터 변경 사항 실시간 감지 및 게시

의견을 보내 주시면 감사하겠습니다.

+0

_ 항상 가용성 그룹 _ 옵션이 있습니까? 대상이 정확한 사본입니까, 아니면 변형이 있습니까? https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/active-secondaries-readable-secondary-replicas-always-on-availability-groups –

+0

안녕 비욘, 당신을 알아요. Service Broker에 대해 특별히 언급했지만 이것이 유일한 옵션입니까? 몇 년 전에 비슷한 요구 사항이 있었고 결국에는 대신 복제를 사용하기로 결정했습니다. 이것은 구현하기위한 훨씬 빠른 방법이었습니다. 몇 가지 단점이 있습니다. 데이터베이스 변경으로 FOB를 가져 오는 경우 게시에서 테이블을 일시적으로 삭제해야합니다. 또한 실시간 동작을 시뮬레이트하기 위해 에이전트 간격을 빠른 폴링으로 설정해야합니다. – Roeland

+1

NAV 파트너와 상담하는 것이 좋습니다. 대부분이 상황은 NAV와 인터페이스하고 통합하도록 설계된 C \ AL 또는 프로그램을 통해 수행됩니다. 누군가가 당신에게 대답을하고 NAV를 모르는 경우, 당신은 그것에 대해 매우 비판적이어야합니다. 그들은 당신의 커스터마이제이션이나 비즈니스 로직을 미리 알지 못할 것입니다. –

답변

0

각 레코드의 최종 수정 날짜에 대한 열을 추가하고 레코드가 업데이트 될 때마다 트리거를 사용하여이 열을 업데이트하십시오. 그런 다음 마지막으로 예약 된 실행 이후에 업데이트 된 모든 레코드가 처리되도록 매일 특정 시간에 예약 된 작업을 실행합니다 (근무 시간 외 선호).

그래서 다음 항목은 DATETIME 데이터 형식의 테이블에 새로운 컬럼는 lastmodifieddate 추가

  1. 을 수행해야합니다.
  2. 는 ModifiedDate에게 레코드가
  3. 매일 지정된 시간에 실행됩니다 데이터베이스에 예약 된 작업을 만들기 스케줄 실행 날짜와 시간을 저장하는 새 테이블을 만들고 업데이트 될 때마다 업데이트 할 트리거를 만듭니다.
  4. 이 작업은 4 단계에서 테이블 만들기의 날짜보다 큰 값을 가진 모든 레코드를 선택합니다.

그래서 트리거에서 하나의 열만 업데이트되므로 테이블의 성능에는 영향을 미치지 않습니다. 또한 하루에 한 번만 업데이트 작업을 실행하므로 데이터베이스 트래픽도 감소합니다.

+0

하루에 한 번은 실시간이 아닙니다 ... –

+0

Jacob H가 말한 것처럼 실시간으로해야합니다. – Bjoern

+0

네, 그러나 그것은 단지 하나의 선택이며 우리는 우리의 필요에 따라 어떤 간격을 선택할 수 있습니다. –

관련 문제