Aracılığıyla paylaş


Sorgu bildirimleri ile çalışma

Sorgu bildirimleri, başlanan SQL Server 2005 ve SQL Server Yerel istemci. Bağlı olarak Hizmet Aracısı altyapı yerleşik SQL Server 2005, uygulamaların verileri değiştiğinde size bildirilmesini sorgu bildirimleri izin. Bu özellik önbelleği, Web uygulaması gibi bir veritabanından bilgi sağlamak ve kaynak veriler değiştiğinde bildirilmesi gereken uygulamalar için kullanışlıdır.

Sorgu bildirimleri, bildirim bir sorgunun temel veriler değiştiğinde bir belirtilen saat aşımı saat içinde istek olanak verir.Bildirim isteği, hizmet adını, ileti metnini ve sunucu saat aşımı değerini içeren bildirim seçenekleri belirtir.Bildirimler, uygulamalar için kullanılabilir bildirimleri yoklamak Hizmet Aracısı sıra ile dağıtılır.

Bildirimleri seçenekleri sorgu dizesi sözdizimi aşağıdaki gibidir:

service=<service-name>[;(local database=<database> | broker instance=<broker instance>)]

Örneğin:

service=mySSBService;local database=mydb

Bildirim işlemi, bir uygulama olarak başlatan abonelikler outlive bildirim aboneliği oluşturmak ve sonra sona erdir.Abonelik geçerli kalır ve bildirim aboneliği oluşturulduğu saat aşımı saat içinde veri değişikliklerini belirtilmiş olması durumunda ortaya çıkar.Bir bildirim yürütülmüş bir sorgu seçenekleri bildirim ve ileti metnini tarafından tanımlanır ve sıfır olarak saat aşımı değerini ayarlayarak iptal olabilir.

Yalnızca bir kez olarak bildirim gönderilir.Her bildirim işlenen sonra sorguyu re-executing sürekli bildirimi verileri için yeni bir abonelik oluşturulmalıdır.

SQL Server Native Client applications typically receive notifications by using the Transact-SQLRECEIVE command to read notifications from the queue associated with the service specified in the notification options.

Not

Tablo adları bildirim, gerekli olduğu sorgularda tam dbo.myTable. Tablo adları ile iki parça adlar nitelenmiş olmalıdır.Üç veya dört part adları kullanılıyorsa, bu abonelik geçersiz.

Bildirim altyapı olarak sıralama özelliği üstünde yerleşik SQL Server 2005. Genel olarak, sunucuda üretilen bildirimler, daha sonra işlenmek üzere bu kuyruklar üzerinden gönderilir.Daha fazla bilgi için SQL Server Sorgu bildirimleri için destek, bkz: Sorgu bildirimleri kullanma.

Sorgu bildirimleri kullanmak üzere bir sıraya ve bir hizmet sunucuda bulunması gerekir.Bunlar kullanılarak oluşturulabilir Transact-SQL aşağıdakine benzer:

CREATE QUEUE myQueue
CREATE SERVICE myService ON QUEUE myQueue 

([https://schemas.microsoft.com/SQL/Notifications/PostQueryNotification])

Not

hizmet, önceden tanımlanmış anlaşma kullanmanız gerekir https://schemas.microsoft.com/SQL/Notifications/PostQueryNotification yukarıda gösterildiği gibi.

SQL Server Native Client OLE DB Sağlayıcısı

The SQL Server Native istemci OLE DB sağlayıcı supports consumer bildirim on satır kümesi modification. Tüketici, satır kümesi değişikliği ve denenen herhangi bir değişiklik bildirim sırasında her aşama alır.

Not

Bildirimleri sorguda sunucusuna iletme ICommand::yürütmek ile sorgu bildirimleri abone olmak için yalnızca geçerli yoludurSQL Server Yerel istemci OLE DB sağlayıcı.

DBPROPküme_SQLSERVERROW küme özelliği küme

OLE DB üzerinden sorgu bildirimleri desteklemek için SQL Server Aşağıdaki yeni özellikleri, yerel istemci DBPROPSET_SQLSERVERROWSET özellik kümesine ekler.

Name

Tür

Açıklama

ssprop_qp_notification_timeout

VT_Uİ4

Sorgu bildirimdir etkin kalmasını saniye sayısı.

432000 Saniye (5 gün) varsayılandır.En düşük değer 1 saniyedir ve en büyük değer 2'olan ^ 31-1 saniye.

ssprop_qp_notification_msgtext

vt_bstr

Bildirim iletisi metni.Bu durum, kullanıcı tanımlı olduğu ve önceden tanımlı bir biçime sahip.

Varsayılan olarak, boş dize.1-2000 Karakter kullanarak bir ileti belirtebilirsiniz.

ssprop_qp_notification_options

vt_bstr

Sorgu bildirim seçenekleri.Bu dize ile belirtilir Ad=Değer sözdizimi.Kullanıcı hizmet oluşturma ve bildirimler, kapatma sırasının okuma sorumludur.

Varsayılan değer boş dize.

Bildirim abonelik her zaman, deyim, kullanıcı bir işlem veya Otomatik yürütme olup doldu veya mi deyim çalıştırdığınız hareket tamamlandıktan veya geri bakılmaksızın edinmiştir.Sunucu bildirim geçersiz bildirim aşağıdakilerden birinin harekete: Temel veriler veya şema değiştirme veya zaman aşımı süresi ulaşıldığında; hangisi ilk değil. Bunlar harekete hemen bildirim kayıtlar silinir.Ek güncelleştirmeleri almak istedikleri durumunda bu bildirimi aldıktan sonra uygulama yeniden abone olmak olmalısınız.

Bildirimler için hedef sıra, başka bir bağlantı veya iş parçacığı parçacığının denetleyebilirsiniz.Örneğin:

WAITFOR (RECEIVE * FROM MyQueue);   // Where MyQueue is the queue name. 

SELECT Not * değil sıradan girdiyi silin, ancak RECEIVE * FROM yapar.Sıra boş ise, bu sunucu bir iş parçacığı duraksıyor.Arama saat sıra girişler varsa, bunlar hemen; aksi halde bir sıra giriş yapılan çağrı bekler döndürülür.

RECEIVE * FROM MyQueue

Bu ifade, hemen boş bir sonuç döndüreceği küme sıra boş; aksi halde, tüm sıra bildirim verir.

SSPROP_QP_NOTIFICATION_MSGTEXT ve SSPROP_QP_NOTIFICATION_OPTIONS DEĞERSIZ olmayan ve null olmayan, üç özellik içeren TDS üstbilgisi, yukarıda tanımlanan sorgu bildirimleri sunucuya her komutun yürütülmesi ile gönderilir.Bunlardan birini, null (veya null) üstbilgi gönderilmedi DB_E_ERRORSOCCURRED oluşturulur (veya özelliklerini yüklenmişse DB_S_ERRORSOCCURRED isteğe bağlı'olarak işaretlenmiş), ve durum değeri DBPROPSTATUS_BADVALUE için küme.Doğrulama, Yürüt/Prepare oluşur.Benzer şekilde, sorgu bildirim özelliklerini olduğunda DB_S_ERRORSOCCURED artırılıyor küme bağlantılar için SQL Server önce sürümleri SQL Server 2005. Durum böyle bir durumda DBPROPSTATUS_NOTSUPPORTED değerdir.

Bir abonelik başlatılıyor, izleyen iletiler başarıyla teslim garanti etmez.Buna ek olarak, onay, belirtilen hizmet adının geçerliliği olarak yapılır.

Not

Deyimlerini hazırlama hiçbir zaman başlatılması abonelik neden olur; bu yalnızca deyim yürütme elde ve sorgu bildirimleri, OLE DB Çekirdek Hizmetleri kullanarak etkilenmez.

DBPROPSET_SQLSERVERROWSET özellik kümesi hakkında daha fazla bilgi için bkz: Satır kümesi özellikleri ve davranışları.

SQL Server yerel istemci ODBC sürücüsü

The SQL Server Native istemci ODBC driver supports query notifications through the addition of three new attributes to the SQLGetStmtAttr and SQLSetStmtAttr functions:

  • sql_sopt_ss_querynotification_msgtext

  • sql_sopt_ss_querynotification_options

  • sql_sopt_ss_querynotification_timeout

Yukarıda tanımlanan üç özniteliklerini içeren sorgu bildirimleri TDS üstbilgi SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT ve SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS null değilse, komut yürütülür her sunucuya gönderilir.Bunlardan birini, null üstbilgi gönderilmedi ve SQL_SUCCESS_WITH_INFO döndürdü.Doğrulama oluşur SQLPrepare, SqlExecDirect, and SqlExecuteözniteliklerin geçerli değilse, tümü başarısız. Benzer şekilde, bu sorgu bildirim öznitelikleri küme SQL Server önce sürümleri SQL Server 2005, SQL_SUCCESS_WITH_INFO ile yürütme başarısız.

Not

Hazırlama hiçbir zaman başlatılması abonelik neden olur; abonelik deyim yürütme tarafından başlatılabilir.

Özel durumlar ve sınırlamaları

Bildirimler için aşağıdaki veri türleri desteklenir:

  • text

  • ntext

  • image

Bir bildirim isteği bu türlerinden herhangi birini döndüren bir sorgu yapılırsa, bildirim hemen bildirim aboneliği mümkün olmadı belirtme tetikler.

Bir toplu iş veya saklı yordam için bir abonelik isteği yapılırsa, saklı yordam ya da toplu iş içinde yürütülen her tablo için ayrı bir abonelik isteği yapıldı.yürütmek deyimlerinin bir bildirim kaydeder, ancak bildirim isteği için yürütülen komut gönderir.Bir toplu iş olarak, içerik için yürütülen ifadeleri uygulanır ve yukarıda açıklanan aynı kurallar geçerlidir.

Aynı şablonu, aynı parametre değerleri, aynı bildirim KODU ve varolan bir etkin abone aynı teslim konumunu aynı kullanıcı aynı veritabanı bağlamında tarafından gönderilme ve bildirim sorgusunu yeni belirtilen saat aşımı'nı sıfırlamadan varolan aboneliğinizi, yenilemeniz.Yani, aynı sorgu için bildirimi istendiyse, tek bir bildirim gönderilir.Bu toplu iş iş işlemde yinelenen bir sorgu veya sorguda birden çok kez çağrıldı saklı bir yordam için uygular.