2012-01-09 3 views
0

SQL Server 2008 Express를 사용하고 예산에 포함되지 않은 정식 버전을 구입할 수 없습니다.삽입 후 구성 가능한 시간이 지난 후 저장 프로 시저 호출

내가 필요한 것은 일정 시간 후에 알림 이메일을 보내기 위해 저장 프로 시저를 호출 한 후입니다. 이 시간은 구성 가능한 이유로 데이터베이스에도 저장됩니다.

Windows 스케줄러를 사용하고 하루 두 번 저장 프로 시저를 실행하는 것에 대해 생각했지만 사용자가 12 시간 미만으로 실행하도록 설정하면 사용자에게 2 회 이상 알림이 전송됩니다. 나는 또한 매 시간마다 그것을 실행하는 것이 현명하다고 생각하지 않습니다. 따라서이 두 가지 옵션이 모두 최상의 것 같지 않습니다. 궁금

이 방법은 같은 시간 일이었다 또는 (명시 적 기억 사용)

어떤 도움을 크게 읽는 감사 감사 할 것입니다이 특정 시간에 실행되도록 예약합니다!

+3

왜 매 시간마다 실행하는 것이 현명하지 않습니까? 필자는 최신 알림을 확인하기 위해 매 시간마다 실행되는 많은 알림 부분을 작성했습니다. – Eric

+0

흠 나는 모든 것을 한꺼번에 처리 할 수있을 때 자원을 필요로하는 매 시간마다 일을해야한다는 것은 나쁜 생각처럼 보였다. 그러나 나는 다른 한편으로는 한 손에 여섯 명이라 생각합니다. – user758105

+0

스케줄러를 더 자주 실행하면 사용자가 둘 이상의 알림을받는 이유는 무엇입니까? 반복을 피하기 위해 전자 메일을 보낸 후 DB의 레코드를 플래그 지정하거나 삭제해야합니다. – RickNZ

답변

1

사용 conversation timers. 인서트에 원하는 시간이 지나면 발사하도록 대화 타이머를 시작합니다. 시간이 지남에 따라 시스템에서 메시지를 대기열에 추가하고 interval activation을 사용하여 메시지 전송을 포함하여 원하는 절차를 실행할 수 있습니다. 이 구현의 장점은 SQL Express 기능에만 의존한다는 것입니다. CLR 또는 WAITFOR 기반 솔루션 에서처럼, 프로세스가 종료되면 알림도 느슨해지지 않습니다.

비슷한 생각이지만 타이머가 없으면 Asynchronous procedure execution을 참조하십시오.

보류중인 '만기'알림을 매시간 (또는 매 5 분마다) 확인하는 경우에도 '확인'작업을 활성화하기 위해 Service Broker 활성화 기반 메커니즘을 계속 사용합니다. 또한 Using tables as Queues을 읽는 것이 좋습니다.

+0

매우 철저한 답변과 정확히 내가 뭘 찾고 있었는지 고마워! – user758105

0

당신은 이것을 달성하기 위해 비주얼 스튜디오에서 CLR 프로젝트를 사용할 수 있습니다!

트리거는 테이블에서 수행 된 모든 삽입을 수신하고 그 결과로 전자 메일을 보내는 웹 서비스를 호출합니다.

+0

이메일은 어려운 부분이 아니므로 일정 기간 지연시켜야합니다. 그것은 고전적인 ASP와 오래된 프로젝트이며 이미 데이터베이스를 이메일을 보낼 수 있습니다. 나는 단지 정해진 시간 동안 그들을 지연시키는 방법이 필요하다. 답변 주셔서 감사합니다. – user758105

0

SQL Server WAITFOR 명령을 사용할 수 있으면 도움이 될 수 있습니다.

아마도 매시간 실행되는 SQL 저장 프로 시저가 "this"시간에 실행되도록 구성된 경우 전자 메일을 보낼지 확인합니다.

http://msdn.microsoft.com/en-us/library/ms187331.aspx

관련 문제