Bildirim için bir sorgu oluşturma

Sorgu bildirimleri işlevsellik değişikliği algılama mekanizmaları üzerinde oluşturur, Veritabanı Altyapısı kullandığı korumak dizinlenmiş görünümler.Gereksinimleri ve kısıtlamaları sorgu bildirim deyimleri için gereksinimleri ve kısıtlamaları dizinli görünüm için benzer.

set seçenek ayarları

Bildirim isteği altında bir deyim yürütüldüğünde, isteği gönderen bağlantı seçeneklerini bağlantınız olmalıdır küme aşağıdaki gibi:

  • ANSI_NULLS ON

  • ANSI_PADDING EDER

  • ANSI_WARNINGS ON

  • CONCAT_NULL_YIELDS_NULL ON

  • QUOTED_IDENTIFIER ON

  • NUMERIC_ROUNDABORT KAPALI

  • ARITHABORT ON

Not

Veritabanı uyumluluk düzey 90 olarak ayarlandığında ANSI_WARNINGS on olarak örtülü olarak ayarlanması ARITHABORT on olarak küme.Veritabanı uyumluluk düzey ise küme 80 veya daha önce ARITHABORT seçeneği açık olmalıdır küme açık.

deyim READ_UNCOMMITTED veya anlık görüntü yalıtım düzeyleri altında çalışması gerekir.

Bu seçenekler veya yalıtım düzey ise küme uygun bir şekilde, bildirim hemen deyim yürütüldükten sonra harekete geçirilir.Bir bildirimi ateşlenmesine neden olan bir komut yürüten bağlantı bildirim etkin olduğunda, gösterildiği gibi küme seçeneklerini küme olması gerekir.Aksi takdirde, komut başarısız olur bir Transact-SQL hata.

deyim saklı yordam içinde bulunan zaman ANSI_NULLS ve QUOTED_IDENTIFIER seçeneklerini olması gerekir küme saklı yordam oluşturulduğunda.Daha fazla bilgi için bkz: set ANSI_NULLS (Transact-sql) ve set QUOTED_IDENTIFIER (Transact-sql).

Bildirim deyimleri

Genel olarak, dizinli görünüm oluşturmak için kullanılan herhangi bir sorgu için bildirim talep edebilirsiniz.Yapabilirsiniz küme up bildirimler aþaðýdaki ifadeleri için:

  • SEÇİN

    Gereksinimleri ve sınırlamaları belirli için seçin, "select deyimlerini desteklenen" konusuna bakın. Aşağıda.deyim hakkında daha fazla bilgi için bkz: SELECT (Transact-SQL).

  • YÜRÜTME

    Bu durum, SQL Server execute deyim yerine kendisini komutu için bir bildirim kaydeder.Komut için bir deyim kısıtlamaları ve gereksinimleri karşılamalıdır.execute deyim hakkında daha fazla bilgi için bkz: EXECUTE (Transact-SQL).

Birden çok deyim, bir bildirim kaydeden bir komut içeriyorsa, Veritabanı Altyapısı her deyiminde için bir bildirim oluştururtoplu iş iş.

Desteklenen select deyimleri

Sorgu bildirimleri için aşağıdaki gereksinimleri karşılaması select deyimleri desteklenir:

  • Öngörülen sütunların deyim içinde açıkça belirtilmelidir ve tablo adları ile iki bölümü adları uygun olmalı.Yani tüm tablolar içinde başvurulan dikkat edin deyim aynı veritabanında bulunması gerekir.

  • deyim Yıldız işareti (*) kullanabilir veya table_name. * sütunları belirtmek için sözdizimi.

  • deyim değil adlandırılmamış sütunları kullanın veya yinelenen sütun adları.

  • Deyim, temel tablo bulunmanız gerekir.

  • deyim İle hesaplanan sütunlar tablolara başvuran gerekir.

  • Bir group by deyim deyim kullanılmamışsa öngörülen sütunların deyim içinde toplu ifadeleri içerebilir.Bir group by ifade sağlandığında, seçim listesinde COUNT_BIG() veya sum() toplu işlevleri içerebilir.Ancak, sum() nullable sütun için belirtilemez.deyim HAVING, cube veya rollup belirtebilir.

  • Öngörülen bir sütun basit bir deyim olarak kullanılan deyim içinde birden çok kez yer almalıdır.

  • Özet veya UNPIVOT işleçleri deyim içermelidir.

  • deyim UNION, INTERSECT veya DIŞINDAKİLER işleçler eklemeniz gerekir.

  • deyim bir görünüm başvuru gerekir.

  • deyim herhangi birini içermemesi gerekir: DISTINCT, compute veya compute by veya INTO.

  • Server global değişkenler deyim başvurmalıdır (@@deðiþken_adý).

  • Deyim türetilen tablolar, geçici tablo veya tablo değişkenlerini başvuru gerekir.

  • deyim tablo veya görünümlerin diğer veritabanlarını veya sunucularından başvuru içermemelidir.

  • deyim iç birleşimler ya da alt sorgular, dış birleşimler içermesi gerekir.

  • Deyim büyük nesne türleri başvurmanız gerekir: text, ntext, and image.

  • deyim Tam metin yüklemler CONTAINS veya freetext kullanmanız gerekir.

  • Deyim openrowset ve SORGUAÇ dahil olmak üzere, satır kümesi işlevleri kullanmanız gerekir.

  • deyim aşağıdaki toplu işlevlerinden birini kullanmanız gerekir: avg, count(*), MAK, MIN, STDSAPMA, STDSAPMAS, var veya varp.

  • Deyim sıralaması ve Pencereleme işlevleri de dahil olmak üzere tüm FUNCTION işlevleri kullanmanız gerekir.

  • Kullanıcı tanımlı toplamları deyim içermelidir.

  • deyim sistem tabloları veya görünümler de dahil olmak üzere, başvuru katalog görünümleri ve dinamik yönetimi görünümleri.

  • deyim göz bilgileri içermelidir.

  • Deyim bir sıraya başvurmak gerekir.

  • Değiştirilemez ve sonuçlar döndüremez koşullu deyimler deyim içermesi gerekir (örneğin, where 1 = 0).

  • Deyim readpast kilitleme ipucu belirtebilirsiniz.

  • deyim herhangi bir Hizmet Aracısı SIRA başvuru gerekir.

  • deyim eşanlamlı başvuru gerekir.

  • Karşılaştırma deyim olmalıdır veya deyim türleri çift/gerçek verilere dayanarak.

  • Deyimini kullanmanız gerekir ÜSTÜNE deyim.

Toplu işlemleri ve saklı yordamlar

Bir toplu iş veya saklı yordam için bir abonelik isteği yapılırsa, ayrı abonelik için her istekte deyim toplu iş veya saklı yordam içinde yürütüldü.

execute deyimlerinin bir bildirim kaydeder, ancak yürütülen komut bildirim isteği akar.Bir toplu iş, bağlam yürütülen deyimleri için uygulanacak olan ve yukarıda açıklanan aynı kurallar geçerlidir.

Yinelenen abonelikleri

Etkin bir kopyası gönderme abonelik var neden olan abonelik kullanarak yeni yenilenmesi için belirtilen saat aşımı değeri.Yinelenen bir abonelik aşağıdaki koşulları karşıladığından biridir:

  • Aynı veritabanı bağlamında aynı kullanıcı tarafından gönderilen sorgu.

  • Aynı şablona parametre değerleri, bildirim kodu ve teslim konumu kullanılır.

Yani, aynı sorguları için bir bildirim istenirse tek bir bildirim gönderilir.Bu toplu iş iş işlemde çoğaltılmış bir sorgu veya sorgu birden çok kez adlı bir saklı yordam içinde geçerlidir.