6.5에서 스키마를 스크립팅하고이 스크립트의 구문 문제를 수정 한 다음이 스크립트를 사용하여 2012 데이터베이스를 만드는 방법으로 SQL Server 6.5 데이터베이스를 SQL Server 2012로 업그레이드했습니다.SQL Server 중첩 트리거가 예상대로 실행되지 않습니다.
동시에 프런트 엔드 응용 프로그램을 PowerBuilder 6에서 12.5로 업그레이드했습니다.
응용 프로그램에서 특정 작업을 수행하면 주어진 테이블에 데이터가 삽입됩니다. 이 테이블에는 INSERT 조!와 연관된 트리거가 있으며이 트리거 내에서 다른 테이블이 갱신됩니다. 이로 인해이 테이블에서도 추가 트리거가 실행됩니다.
처음에 파워 빌더 응용 프로그램은 다음과 같은 오류를보고합니다행이 검색 및 업데이트 사이에 변경되었습니다.
데이터베이스를 변경하지 않았습니다.
이제이 오류 메시지의 의미를 이해하지만 이것이 실제로 '흥미로운 부분'입니다.
트리거에서 무슨 일이 일어나고 있는지 알기 위해 이벤트 흐름을 더 잘 이해할 수 있도록 트리거 내에서 로깅 테이블에 데이터를 삽입하기로 결정했습니다. 이것은 다소 의외의 부작용을 가져 왔습니다. PowerBuilder 애플리케이션은 더 이상 오류를보고하지 않으며 데이터베이스를 체크인 할 때 모든 데이터가 예상대로 작성됩니다.
이러한 로깅 행을 제거하면 이전에 나열된 오류 메시지와 함께 응용 프로그램이 다시 실패합니다.
제 질문은 - 누군가가 왜 로깅의 일부 라인을 추가 할 때이 부작용이있을 수 있다고 설명 할 수 있습니까? 거의 로깅 테이블에 데이터를 쓰거나 로깅 속도를 늦추거나 어떻게 든 올바른 순서로 실행되도록 트리거를 직렬화하는 일부 로깅을 추가하는 것처럼 보입니다 ...
미리 알려 주셔서 감사합니다. :-)
많은 감사
테리. – user3336885
팁 테리에 대해 감사드립니다. PowerBuilder 12.5가 반환 된 Row Count를 처리하는 방법과 관련된 문제가 나타납니다. INSERT와 관련된 일련의 계단식 트리거가 있으므로 많은 다른 행 수가 반환됩니다. 이들은 PB 6.5에서는 걸러졌지만 12.5에서는 걸러지지 않았습니다. RecheckRows DBParm을 설정하면이 문제가 해결됩니다. – user3336885