BEGIN CONVERSATION TIMER(Transact-SQL)
적용 대상: SQL Server Azure SQL Managed Instance
타이머를 시작합니다. 시간 제한이 만료되면 Service Broker은 대화에 대한 로컬 큐에 형식 https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer
의 메시지를 넣습니다.
구문
BEGIN CONVERSATION TIMER ( conversation_handle )
TIMEOUT = timeout
[ ; ]
인수
BEGIN CONVERSATION TIMER (conversation_handle)
대화에 시간을 지정합니다. conversation_handle은 uniqueidentifier 형식이어야 합니다.
TIMEOUT
큐에 메시지를 넣을 때까지 대기하는 시간(초)을 지정합니다.
설명
대화 타이머는 특정 시간이 지난 후 애플리케이션이 대화에서 메시지를 받는 방법을 제공합니다. 타이머가 만료되기 전에 대화에서 BEGIN CONVERSATION TIMER를 호출하면 제한 시간이 새 값으로 설정됩니다. 대화 수명과 달리 대화의 각 측면에는 별도의 대화 타이머가 있습니다. DialogTimer 메시지는 대화의 원격측에 영향을 미치지 않고 로컬 큐에 도착합니다. 따라서 애플리케이션은 다양한 용도로 타이머 메시지를 사용할 수 있습니다.
예를 들어 대화 타이머를 사용하여 애플리케이션이 지연된 응답을 너무 오랫동안 대기하지 않도록 할 수 있습니다. 애플리케이션이 30초 후에 대화를 완료하도록 하려면 해당 대화의 대화 타이머를 60초(30초에 30초의 유예 기간을 더한 값)로 설정할 수 있습니다. 대화가 60초 후에도 계속 열려 있으면 애플리케이션은 해당 대화에 대한 제한 시간 메시지를 큐에 받습니다.
또는 애플리케이션은 대화 타이머를 사용하여 특정 시간에 활성화를 요청할 수 있습니다. 예를 들어 몇 분마다 활성 연결 수를 보고하는 서비스 또는 매일 저녁 열려 있는 주문 수를 보고하는 서비스를 만들 수 있습니다. 서비스는 원하는 시간에 만료되도록 대화 타이머를 설정합니다. 타이머가 만료되면 Service Broker는 DialogTimer 메시지를 보냅니다. DialogTimer 메시지를 통해 Service Broker는 큐에 대한 활성화 저장 프로시저를 시작할 수 있습니다. 저장 프로시저는 원격 서비스로 메시지를 보내고 대화 타이머를 다시 시작합니다.
BEGIN CONVERSATION TIMER는 사용자 정의 함수에 유효하지 않습니다.
사용 권한
대화 타이머 설정 권한은 기본적으로 대화의 서비스에 대한 SEND 권한이 있는 사용자, sysadmin 고정 서버 역할의 멤버 및 db_owner 고정 데이터베이스 역할의 멤버로 설정됩니다.
예제
다음 예에서는 @dialog_handle
로 식별되는 대화에 2분이라는 제한 시간을 설정합니다.
-- @dialog_handle is of type uniqueidentifier and
-- contains a valid conversation handle.
BEGIN CONVERSATION TIMER (@dialog_handle)
TIMEOUT = 120 ;
참고 항목
BEGIN DIALOG CONVERSATION(Transact-SQL)
END CONVERSATION(Transact-SQL)
RECEIVE(Transact-SQL)