우리는 SQL Server 2008R2를 사용하여 메일 큐를 처리합니다. 새 메일이 대기열에 입력되고 1 분마다 한 번씩 일괄 처리 파일이 처리되지 않은 메일을 읽고 처리하고, smtp를 통해 메일을 보내고 대기열의 메일에 플래그를 지정합니다 (레코드가 대기열에서 삭제됨). 메일 히스토리 테이블).배치 파일을 트리거하는 SQL
이 방법의 문제점은 1 분에 1 회만 실행되므로 메일이 "자동으로"발송되지 않으며 몇 시간 동안 발신 메일이없는 경우에도 매분마다 배치 파일이 실행된다는 것입니다.
메일 큐에 삽입 된 각 새 항목에서 SQL Server가 배치 파일을 실행하는 방법이 있습니까? 나는 트리거가 있다는 것을 알고 있지만 비동기 적이기 때문에 배치 파일에 시간이 걸리면 SQL 서버를 유지할 것입니다.
왜 외부 배치 파일을 사용해야합니까? SQL Server 내에서이 기능을 직접 쉽게 구현할 수 있으므로 관리가 더 쉬워집니다. 또한 : x 분마다 실행할 SQL 작업을 작성하여 수행해야 할 작업이 있는지 확인하십시오. 즉, 데이터베이스의 "정상적인"작업과 분리되어 데이터를 입력하는 사용자를 방해하지 않습니다. –
보내기 전에 수행 된 비 관련 처리가 있으므로 이메일을 외부로 실행해야합니다. 그리고 대기열을 확인하기 위해 몇 분마다 실행되는 프로세스의 단점은 불필요 할 때 여러 번 실행되며 다른 한편으로는 전자 메일이 즉시 대신 몇 분 후에 꺼지기 때문에 응답이없는 것처럼 보일 것입니다. – user1480192
현재 해결책이 잘된 것 같습니다. 실제로 메일이 "자동"으로 전송되지 않는다는 귀하의 의견을 이해할 수 없습니다. 메시지를 즉시 보내야하는 경우 전자 메일은 잘못된 메커니즘이므로 어쨌든 배달되지 않으며 읽는 데 어느 정도 시간이 걸릴지 알 수 없습니다. 또한 서비스를 효율적으로 쿼리하는 한 몇 분마다 데이터베이스를 확인하는 서비스에는 아무런 문제가 없습니다. – Pondlife