언어
쿼리 알림을 사용하려면 쿼리 알림을 지원하도록 데이터베이스를 구성하고 데이터베이스 보안 주체에게 필요한 권한을 부여합니다.
쿼리 알림을 사용하려면 다음을 수행해야 합니다.
데이터베이스에 대한 쿼리 알림을 사용하도록 설정합니다.
데이터베이스에 연결하는 데 사용되는 사용자 ID에 필요한 권한이 있는지 확인합니다.
연결된
SELECT또는 SqlCommand 개체와 함께 유효한 SqlNotificationRequest 문을 실행하려면 SqlDependency을 사용합니다.모니터링 중인 데이터가 변경되는 경우 알림을 처리하는 코드를 제공합니다.
쿼리 알림 요구 사항
쿼리 알림은 특정 요구 사항 목록을 충족하는 SELECT 문에 대해서만 지원됩니다. 다음 표에서는 SQL Server 문서의 Service Broker 및 쿼리 알림 설명서에 대한 링크를 제공합니다.
SQL Server 설명서
샘플 코드를 실행하도록 쿼리 알림 사용
SQL Server Management Studio를 사용하여 AdventureWorks 데이터베이스에서 Service Broker를 사용하도록 설정하려면 다음 Transact-SQL 문을 실행합니다.
ALTER DATABASE AdventureWorks SET ENABLE_BROKER;
쿼리 알림 샘플이 올바르게 실행되려면 데이터베이스 서버에서 다음 Transact-SQL 문을 실행해야 합니다.
CREATE QUEUE ContactChangeMessages;
CREATE SERVICE ContactChangeNotifications
ON QUEUE ContactChangeMessages
([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]);
쿼리 알림 권한
큐 구성에 필요한 데이터베이스 주체 SUBSCRIBE QUERY NOTIFICATIONS 및 Service Broker 권한을 부여합니다. 예를 들어 자리 표시자를 기존 데이터베이스 사용자로 바꾸세요.
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [<database_user>];
최신 .NET에서는 코드 액세스 보안을 지원하지 않습니다. 쿼리 알림을 승인하는 데 SqlClientPermission.Demand를 사용하지 말고 대신 데이터베이스 권한을 구성합니다.
알림 개체 선택
쿼리 알림 지원은 알림을 처리하기 위한 두 개체(SqlDependency 및 SqlNotificationRequest)를 제공합니다.
SqlDependency를 사용하여 변경 이벤트를 수신하고 애플리케이션의 캐시를 무효화합니다.
SqlNotificationRequest 고유한 알림 수신기를 구현해야 하는 경우에 사용합니다.
Important
새 개발에는 System.Data.SqlClient를 사용하지 마세요. 대신 Microsoft.Data.SqlClient를 사용하세요. ASP.NET Framework SqlCacheDependency 클래스는 System.Data.SqlClient이(가) 필요하며 Microsoft.Data.SqlClient와 통합되지 않습니다. 새 Microsoft.Data.SqlClient 애플리케이션의 경우 SqlDependency.OnChange를 처리하고 애플리케이션의 캐시 API를 통해 캐시를 업데이트하세요.
SqlDependency 사용
사용 SqlDependency하려면 사용 중인 SQL Server 데이터베이스에 대해 Service Broker를 사용하도록 설정해야 하며 사용자에게 알림을 받을 수 있는 권한이 있어야 합니다. 알림 큐와 같은 Service Broker 개체가 미리 정의됩니다.
또한 SqlDependency 자동으로 작업자 스레드를 시작하여 알림이 큐에 게시될 때 알림을 처리합니다. 또한 Service Broker 메시지를 구문 분석하여 정보를 이벤트 인수 데이터로 노출합니다.
SqlDependency 는 데이터베이스에 대한 종속성을 설정하기 위해 메서드를 호출 Start 하여 초기화해야 합니다. 필요한 각 데이터베이스 연결에 대해 애플리케이션을 초기화하는 동안 한 번만 호출해야 하는 정적 메서드입니다. 만들어진 Stop 각 종속성 연결에 대해 애플리케이션 종료 시 메서드를 호출해야 합니다.
SqlNotificationRequest 사용
반대로, SqlNotificationRequest 리스닝 인프라를 직접 구현해야 합니다. 또한 큐, 서비스 및 큐에서 지원하는 메시지 유형과 같은 모든 지원 Service Broker 개체를 정의해야 합니다. 이 수동 방법은 애플리케이션에 특별한 알림 메시지 또는 알림 동작이 필요하거나 애플리케이션이 더 큰 Service Broker 애플리케이션의 일부인 경우에 유용합니다.