Aracılığıyla paylaş


SIRA (Transact-SQL) oluştur

Bir veritabanında yeni bir sıra oluşturur.Sıra iletileri depolar.Bir hizmetiçin ileti geldiğinde Service Broker ' % s'hizmeti hizmetile ilişkili sıraya ileti koyar.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

CREATE QUEUE <object>
   [ WITH
     [ STATUS = { ON | OFF }  [ , ] ]
     [ RETENTION = { ON | OFF } [ , ] ] 
     [ ACTIVATION (
         [ STATUS = { ON | OFF } , ] 
           PROCEDURE_NAME = <procedure> ,
           MAX_QUEUE_READERS = max_readers , 
           EXECUTE AS { SELF | 'user_name' | OWNER } 
            ) [ , ] ]
     [ POISON_MESSAGE_HANDLING (
       [ STATUS = { ON | OFF } )
    ]
     [ ON { filegroup | [ DEFAULT ] } ]
[ ; ]

<object> ::=
{
    [ database_name. [ schema_name ] . | schema_name. ]
        queue_name
} 

<procedure> ::=
{
    [ database_name. [ schema_name ] . | schema_name. ]
        stored_procedure_name
} 

Bağımsız değişkenler

  • database_name(nesne)
    İçinde yeni bir sıra oluşturmak veritabanı adıdır.database_nameVarolan bir veritabanının adını belirtmeniz gerekir.Zaman database_name olan değil koşuluyla, sıra oluşturulmuş geçerli bir veritabanı.

  • schema_name(nesne)
    Yeni sıra ait olduğu şema addır.Şema varsayılan deyimyürütür kullanıcı varsayılan şema.KUYRUK oluşturma deyim üye tarafından yürütülür, sysadmin sabit sunucu rolüya da üye db_dbowner veya db_ddladmin sabit veritabanı rolleri veritabanında belirtilen tarafından database_name, schema_name dışında geçerli bağlantı oturum açma ile ilişkili bir şema belirtebilirsinizAksi takdirde, schema_name deyimyürütür kullanıcı varsayılan şema olmalıdır.

  • queue_name
    Sıra oluşturmak için adıdır.Bu ad için yönergelere uygun olması gerekir SQL Server tanımlayıcıları.

  • Durum (sıra)
    Sıra (açık) kullanılabilir veya kullanılamaz (kapalı) olup olmadığını belirtir.Sıra kullanılamaz durumdayken hiçbir ileti sıraya eklenebilir veya sıradan kaldırıldı.Sıra sıra SIRA alter deyimkullanılabilir olana kadar sıraya gelen iletileri saklamak için kullanılamaz durumda oluşturabilirsiniz.Bu yan tümce atlanırsa, varsayılan değer açık'tır ve sıra kullanılabilir.

  • SAKLAMA
    Sıra saklama ayarını belirtir.SAKLAMA = on, tüm iletileri kullanan bu sıraya gönderilen veya alınan üzerinde görüşmeler sırada görüşmeleri sonlandırmış kadar korunur.Bunu korumak amacıyla Denetim iletileri sağlar veya hata durumunda karşılayan işlemleri gerçekleştirmek için oluşur.Bu yan tümce belirtilmezse, saklama ayarı varsayılan olarak kapalı olur.

    Not

    SAKLAMA ayarlamak = on performans azaltmak.Bu ayar, yalnızca uygulama için gerekliyse kullanılmalıdır.Daha fazla bilgi için, bkz. İleti saklama.

  • ETKİNLEŞTİRME
    Bu sıradaki iletileri işlemeye başlamak zorunda hakkında hangi saklı yordam bilgileri belirtir.

  • Durum (etkinleştirme)
    Belirtir olup olmadığını Service Broker saklı yordambaşlar.Zaman durum = on, saklı yordam yordamları şu anda çalışan sayısı max_queue_readers ve ileti sırası saklı yordamlar iletilere daha hızlı geldiğinde azsa procedure_name ile belirtilen sıra başlar.Zaman durum = off, sıra saklı yordambaşlamıyor.Bu yan tümce belirtilmezse, varsayılan değer açık'tır.

  • procedure_name = <yordam>
    Bu sıradaki iletileri işlemeye başlamak için saklı yordam adını belirtir.Bu değer olmalıdır bir SQL Server tanımlayıcısı.Daha fazla bilgi için, bkz. Etkinleştirme oluşuyor olduğunda anlama.

  • database_name(yordam)
    saklı yordamiçeren veritabanı adıdır.

  • schema_name(yordam)
    saklı yordamiçeren şema addır.

  • procedure_name
    saklı yordamadıdır.

  • max_queue_readers =max_readers
    Sıra aynı saatbaşlar etkinleştirmesaklı yordam örnekleri sayısı üst sınırını belirtir. Değeri max_readers arasında bir sayı olmalı 0 ve 32767.

  • EXECUTE AS
    Belirtir SQL Server veritabanı kullanıcı hesabı etkinleştirme saklı yordam çalıştırır.SQL Serversıra saklı yordambaşlar saat bu kullanıcının izinlerini denetlemek olması gerekir.Bir etki alanı kullanıcısı için sunucu ' % s'etki etki alanı için yordamı başladığında veya etkinleştirme başarısız bağlı olması gerekir.İçin bir SQL Server kullanıcı, sunucu can her zaman denetleme izinleri.

  • SELF
    saklı yordam , geçerli kullanıcı olarak yürütür belirtir.(Bu kuyruk oluşturma deyimyürütme veritabanı asıl.)

  • 'user_name'
    saklı yordam olarak çalıştıran kullanıcının adıdır.user_name Parametresi geçerli bir olmalıdır SQL Server olarak belirtilen kullanıcı bir SQL Server tanımlayıcısı.Geçerli kullanıcı için özelliklerini Al izni olmalıdır user_name belirtilen.

  • SAHİBİ
    saklı yordam sıranın sahibi olarak yürütür belirtir.

  • POISON_MESSAGE_HANDLING
    zehirli ileti işleme sırası için etkinleştirilip etkinleştirilmeyeceğini belirtir.Varsayılan açık'tır.

    küme off işleme zehirli ileti sırası, sonra beş ardışık hareketi geri alma devre değil.Bu uygulama tarafından tanımlanmış sistem etme özel bir zehirli ileti için sağlar.

  • ON filegroup | DEFAULT
    Belirtir bu sıranın oluşturulacağıdosya grubuSQL Server. Kullanabileceğiniz filegroup dosya grubutanımlamak ve kullanmak için hizmet broker veritabanı varsayılan dosya grubu kullanmak için varsayılan tanımlayıcısı parametresiBu yan tümcebağlamında, varsayılan anahtar sözcük değildir ve tanımlayıcı olarak ayrılmış.Hiçbir dosya grubu belirtildiğinde sıra varsayılan dosya grubu için bir veritabanı kullanır.

Açıklamalar

Bir sıra, bir select deyim hedef olabilir.Ancak, bir sıranın içeriğine yalnızca buralardan ifadeleri kullanılarak değiştirilebilir Service Broker görüşmeleri, gibi Al ve Gönder son konuşma.Sıra, INSERT, update, delete veya truncate deyimişleminin hedef olamaz.

Bir sıra geçici bir nesne olmayabilir.Bu nedenle, sıra ile başlayan adlarının # geçerli değildir.

Durumu etkin bir kuyruk oluşturma hizmet için sıraya alınan iletileri izin vermeden önce yerde altyapı elde sağlar.

Service Brokersıraya ileti yok olduğunda, etkinleştirme depolanan yordamlar durdurmaz.Kısa bir saatiçin sıraya ileti kullanılabilir olduğunda, etkinleştirmesaklı yordam çıkmalıdır.

saklı yordam etkinleştirmeizinleri denetlenir, Service Broker saklı yordamdeğil, sıra oluşturulduğunda başlar. KUYRUK oluşturma deyim yan tümce yürütmek iznine sahip olarak execute içinde belirtilen kullanıcı saklı yordam yordam adı yan tümcetümcesinde belirtilen doğrulamaz.

Bir sıra kullanılamaz durumdayken Service Broker tutan hizmetler için veritabanı iletim sırasındaki sıra kullanmak için iletilerisys.transmission_queue Katalog görünümü sağlar bir görünümünü iletim sırası.

Bir sıra şema sahibi bir nesnedir.Kuyruklar görüntülenir sys.objects Katalog görünümü.

Aşağıdaki tablo , sıradaki sütunları listeler.

Sütun adı

Veri türü

Açıklama

status

tinyint

İleti durumu.Durumunda olan tüm iletileri Al deyim döndürür 1.İleti saklama açıksa, durum 0 küme gitmektir.İleti saklama kapalıysa, iletiyi kuyruktan silinir.Sıradaki iletileri aşağıdaki değerlerden birini içerebilir:

0= Alınan Retained iletisi

1= Almaya hazır

2Henüz tam = değil

3= Retained gönderilen ileti

priority

tinyint

Bu iletiye atanan öncelik düzey .

queuing_order

bigint

Sırasındaki ileti sipariş numarası.

conversation_group_id

uniqueidentifier

Bu iletiye ait olduğu konuşma grubu tanımlayıcısı.

conversation_handle

uniqueidentifier

Bu ileti parçası olan konuşma işleci.

message_sequence_number

bigint

Görüşmedeki iletinin sıra numarası.

service_name

nvarchar(512)

Görüşme için hizmet adı.

service_id

int

SQL Servergörüşme için hizmet nesne tanımlayıcısı.

service_contract_name

nvarchar(256)

Görüşme izleyen anlaşma adı.

service_contract_id

int

SQL ServerGörüşme izleyen anlaşma nesne tanımlayıcısı.

message_type_name

nvarchar(256)

İletiyi tanımlayan ileti türü adı.

message_type_id

int

SQL Serveriletiyi tanımlayan ileti türü tanımlayıcısı nesne.

validation

nchar(2)

İleti için kullanılacak doğrulama.

E= Boş

N= None

X= XML

message_body

varbinary(MAX)

İletinin içeriği.

message_id

uniqueidentifier

İleti için benzersiz tanımlayıcı.

İzinler

Bir sıra oluşturma izni kullanan üyeleri db_ddladmin veya db_owner veritabanı rolleri sabit ve sysadmin sabit sunucu rolü.

Sıra için başvurular izni sahibi sıradan, üyeleri için varsayılan db_ddladmin veya db_owner sabit veritabanı rolleri ve üyeleri sysadmin sabit sunucu rolü.

ALDIĞINIZ bir sıraya ait izin sahibi sıradan, üyeleri için varsayılan db_owner veritabanı rolüve üyeleri sabit sysadmin sabit sunucu rolü.

Örnekler

A.Herhangi bir parametre ile bir sıra oluşturma

Aşağıdaki örnek, ileti almak kullanılabilir olan bir sıra oluşturur.Sıra için belirlenen hiçbir etkinleştirme saklı yordam .

CREATE QUEUE ExpenseQueue ;

B.Kullanılamayan bir sıra oluşturma

Aşağıdaki örnek, ileti almak kullanılamayan bir sıra oluşturur.Sıra için belirlenen hiçbir etkinleştirme saklı yordam .

CREATE QUEUE ExpenseQueue WITH STATUS=OFF ;

C.Bir sıra oluşturma ve iç etkinleştirme bilgileri belirtin

Aşağıdaki örnek, ileti almak kullanılabilir olan bir sıra oluşturur.saklı yordamsıra başlarexpense_procedure zaman bir ileti girer sıra. saklı yordam yürütür kullanıcı olarak ExpenseUser.Sıranın en fazla başlar 5 saklı yordamörnekleri.

CREATE QUEUE ExpenseQueue
    WITH STATUS=ON,
    ACTIVATION (
        PROCEDURE_NAME = expense_procedure,
        MAX_QUEUE_READERS = 5,
        EXECUTE AS 'ExpenseUser' ) ;

D.Bir sıranın üzerinde belirli bir dosya grubuoluşturma

Aşağıdaki örnek, dosya grubuüzerinde bir sıra oluştururExpenseWorkFileGroup.

CREATE QUEUE ExpenseQueue
    ON ExpenseWorkFileGroup ;

E.Birden çok parametre ile bir sıra oluşturma

Aşağıdaki örnek bir sıra oluşturur DEFAULT dosya grubu.Sıra kullanılamaz.İletileri sıraya sonlarına ait oldukları konuşma kadar korunur.Sıra sıra SIRA alter kullanıma sunulduğunda, saklı yordambaşlar2008R2.dbo.expense_procedure işlem iletileri. saklı yordam çalıştıran kullanıcı çalıştırır CREATE QUEUEdeyim. Sıranın en fazla başlar 10 saklı yordamörnekleri.

CREATE QUEUE ExpenseQueue
    WITH STATUS = OFF,
      RETENTION = ON,
      ACTIVATION (
          PROCEDURE_NAME = AdventureWorks2008R2.dbo.expense_procedure,
          MAX_QUEUE_READERS = 10,
          EXECUTE AS SELF )
    ON [DEFAULT] ;