使用查詢通知

SQL Server 2005 導入了查詢通知,這是一個新功能,可讓應用程式在查詢結果變更時要求 SQL Server 提供通知。查詢通知可讓程式設計人員將應用程式設計成只在應用程式先前擷取的資訊有變更時才查詢資料庫。

例如,線上目錄應用程式可能會快取列示要出售之項目的查詢結果。應用程式會根據快取的資料來呈現目錄。當出售項目清單變更時,應用程式中的事件處理常式會收到通知事件,並捨棄快取的資料。下次有客戶要求提供出售項目的清單時,應用程式會查詢資料庫取得現有資料,並更新通知訂閱。

應用程式可以利用查詢通知來減少查詢資料庫的次數。不用撰寫會定期重新執行查詢以維護現行結果的程式碼,程式設計人員可以設計在查詢結果可能過期時就自動被通知的應用程式。有了查詢通知,應用程式可以發出含有查詢及通知要求的命令。應用程式可快取查詢的結果,或查詢結果所產生的動態內容。當應用程式收到查詢通知時,應用程式會清除快取的內容。然後在應用程式需要更新的查詢結果時,應用程式會重新發出查詢及通知要求。

Database Engine 會使用「通知訂閱」來追蹤查詢通知的要求。當命令含有通知要求時,資料庫會將要求註冊為通知訂閱,然後再執行此命令。

Database Engine 會使用 Service Broker 來傳遞通知訊息。因此,在應用程式要求訂閱的資料庫中,Service Broker 必須處於作用中。查詢通知功能不需要或不會使用 Notification Services。查詢通知與事件通知無關。

若要在包含訂閱之資料庫以外的資料庫中接收通知訊息,必須將包含訂閱之資料庫的 TRUSTWORTHY 屬性設定為 ON。如需詳細資訊,請參閱<ALTER DATABASE (Transact-SQL)>。