SIRA (Transact-sql) oluştur

Veritabanında yeni bir sıra oluşturur. Sıra iletileri depolar. Bir hizmet için bir ileti geldiğinde Service Brokerileti hizmetiyle ilişkili sıraya koyar.

Konu bağlantısı simgesi Transact-SQL Sözdizim 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 için veritabanı adıdır. database_nameVarolan bir veritabanı adı belirtmeniz gerekir. Ne zaman database_namesıra geçerli veritabanında oluşturulan değil sağlanır.

  • schema_name(nesne)
    Yeni bir sıra ait olduğu şema addır. Deyimini yürütür kullanıcı varsayılan şema şema öntanımlıdır. create queue deyimi bir üyesi tarafından yürütülür, sysadminsabit sunucu rolü veya bir üyesi db_dbownerveya db_ddladminsabit veritabanı rolleri veritabanında belirtilen database_name, schema_nameGeçerli bağlantı oturum açma ile ilişkili farklı bir şema belirtebilirsiniz. Aksi takdirde, schema_namedeyimini yürütür kullanıcı varsayılan şema olmalıdır.

  • queue_name
    Oluşturmak için sıra addır. Bu ad yönergelere uymalıdır SQL Servertanımlayıcıları.

  • DURUM (sıra)
    Sıra (açık) kullanılabilir veya kullanılamaz (kapalı) olup olmadığını belirtir. Sıra kullanılamaz olduğunda hiçbir ileti sıraya eklenebilir veya sıradan kaldırıldı. Sıradaki bir alter queue deyimi ile mevcut yapılıncaya kadar sıraya gelen iletileri saklamak için kullanılamaz durumda sırayı oluşturabilirsiniz. Bu yan tümcesi atlanırsa, varsayılan değer açık'tır ve sıra kullanılabilir.

  • SAKLAMA
    Sıra tutma ayarını belirtir. Eğer saklama = on, bu sırayı kullanmak gönderilen veya alınan üzerinde konuşmalar, kuyrukta korunur, konuşmaları sona kadar tüm iletileri. Bu amaçlar denetleme iletileri korumak sağlar veya hata, Dengeleme işlemleri gerçekleştirmek için oluşur. Bu yan tümcesi belirtilirse, kapalı tutma ayarı varsayılan olarak ayarlanır.

    [!NOT]

    SAKLAMA ayarlamak = on performans azaltmak. Bu ayar, yalnızca uygulama için gerektiğinde kullanılmalıdır.

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

  • DURUM (aktivasyon)
    Belirtir olup olmadığını Service Brokersaklı yordam başlıyor. Ne zaman durum = on, saklı yordam belirtilen procedure_name ile çalışmakta olan işlemleri sayısı den max_queue_readers ve sırası saklı yordamlar mesajları daha hızlı iletiler geldiğinde ise sıra başlar. Ne zaman durum = off, sıra saklı yordam başlamıyor. Bu yan tümcesi belirtilirse, varsayılan açık'tır.

  • procedure_name = <yordam>
    Bu sıradaki iletileri işlemeye başlamak için saklı yordamın adını belirtir. Bu değer olmalıdır bir SQL Servertanımlayıcısı.

  • database_name(procedure)
    Saklı yordam içeren veritabanı adıdır.

  • schema_name(procedure)
    Saklı yordam içeren şema addır.

  • procedure_name
    Saklı yordam addır.

  • max_queue_readers =max_readers
    Depolanan etkinleştirme yordamı sıra aynı anda başlayan örnekleri sayısı üst sınırını belirtir. Değeri max_readersarasında bir sayı olmalı 0 ve 32767.

  • EXECUTE AS
    Belirtir SQL Serververitabanı kullanıcı hesabı altında etkinleştirme saklı yordamı çalıştırır. SQL Serversıra saklı yordam başlar zaman bu kullanıcı izinlerini kontrol etmek gerekir. Bir etki alanı kullanıcı, sunucu etki alanına yordamı başladığında veya etkinleştirme başarısız bağlı olması gerekir. İçin bir SQL Serverkullanıcı, sunucu olabilir her zaman kontrol izin.

  • KENDİNİ
    Saklı yordam geçerli kullanıcı olarak yürütür belirtir. (Veritabanı asıl bu create queue deyimi yürütme.)

  • 'user_name'
    Saklı yordam olarak yürütür kullanıcı adıdır. user_nameParametresi geçerli bir olmalıdır SQL Serverolarak belirtilen kullanıcı bir SQL Servertanımlayıcısı. Geçerli kullanıcıya özelliklerini Al izni olmalıdır user_namebelirtilen.

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

  • POISON_MESSAGE_HANDLING
    Zarar iletisi işleme sırası için etkinleştirilip etkinleştirilmeyeceğini belirtir. ON varsayılan değerdir.

    Zarar iletisi işleme kapalı olarak ayarlanmış olan bir sıra beş ardışık işlem Al sonra devre değil. Bu uygulama tarafından tanımlanan sistem teslim özel zehir ileti sağlar.

  • ON filegroup | DEFAULT
    Belirtir SQL Serverbu sıranın oluşturulacağı filegroup. Sen-ebilmek kullanma filegroupparametresi bir filegroup belirlemek veya varsayılan filegroup için service broker veritabanı kullanmak için varsayılan tanımlayıcı kullanın. Bu fıkra kapsamında, varsayılan anahtar sözcük değildir ve tanımlayıcı olarak ayrılmış olmalıdır. Hiçbir dosya grubu belirtildiğinde sıra varsayılan filegroup veritabanı kullanır.

Açıklamalar

Bir sıra, bir select deyimi hedef olabilir. Ancak, bir sıranın içeriğine yalnızca çalışan ifadeleri kullanılarak değiştirilebilir Service Brokerkonuşmaları, gönderme, alma ve end konuşma gibi. Sıra bir INSERT, update, delete veya KESİLME deyimi işleminin hedefi olamaz.

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

Etkin olmayan bir durumda bir sıra oluşturma altyapı yerden bir hizmet üzerinde sıraya alınan iletileri izin vermeden önce almanızı sağlar.

Service Brokersıraya ileti yok olduğunda, etkinleştirme depolanan yordamlar durdurmaz. Kısa bir süre için sıraya ileti bulunduğunda depolanan etkinleştirme yordamı çıkmak.

İzinleri etkinleştirme saklı yordamı ne zaman teslim Service Brokersaklı yordam değil sıra oluşturulduğunda başlar. create queue deyimi yürütme yan saklı yordamı yürütme iznine sahip olduğu belirtilen kullanıcı yordam adı yan tümcesinde belirtilen doğrulamaz.

Sıra kullanılamadığında, Service Brokeriletiler için iletim sırada veritabanı için sıra kullanan hizmetleri tutar. sys.transmission_queueKatalog görünümü, iletim sırası görünümünü sağlar.

Sıra şema sahibi bir nesnedir. Sıraları görünür sys.objectsKatalog görünümü.

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

Sütun adı

Veri türü

Açıklama

status

tinyint

İletinin durumunu. Durumunda olan tüm iletileri al deyimi döndürür 1. İleti saklama açıksa, durum daha sonra 0 olarak ayarlanır. İ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üzeyi.

queuing_order

bigint

Sırasındaki ileti sipariş numarası.

conversation_group_id

uniqueidentifier

Bu iletiye ait olduğu konuşma grubu için tanımlayıcı.

conversation_handle

uniqueidentifier

Bu ileti parçası olan konuşma tanıtıcı.

message_sequence_number

bigint

Konuşma iletinin sıra numarası.

service_name

nvarchar(512)

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

service_id

int

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

service_contract_name

nvarchar(256)

Görüşme izleyen sözleşme adı.

service_contract_id

int

SQL Servergörüşme izleyen sözleşme nesne tanımlayıcısı.

message_type_name

nvarchar(256)

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

message_type_id

int

SQL Servernesne tanımlayıcısı ileti türü ileti açıklar.

validation

nchar(2)

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

E= Boş

N= None

{ { NEAR | ~X } } [ ,… ]

message_body

varbinary(MAX)

İletinin içeriği.

message_id

uniqueidentifier

İletiyi benzersiz tanıtıcısı.

İzinler

Bir sıra oluşturma izni kullanan üye db_ddladminya db_ownerveritabanı rolleri sabit ve sysadminsunucu rolü.

BAŞVURULAR izni sıranın varsayılan sıra, üyelerinin sahibi db_ddladminya db_ownersabit veritabanı rolleri ve üyeleri sysadminsunucu rolü.

ALMAK izin bir sıraya ait varsayılan sıra, üyelerinin sahibi db_ownersabit veritabanı rolü ve üyeleri sysadminsunucu rolü.

Örnekler

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

Aşağıdaki örnek, ileti almak kullanılabilir bir kuyruk oluşturur. Hiçbir depolanan etkinleştirme yordamı sıra için belirtilir.

CREATE QUEUE ExpenseQueue ;

CREATE QUEUE ExpenseQueue ;

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

Aşağıdaki örnek, iletileri almaya değil bir sıra oluşturur. Hiçbir depolanan etkinleştirme yordamı sıra için belirtilir.

CREATE QUEUE ExpenseQueue WITH STATUS=OFF ;

CREATE QUEUE ExpenseQueue WITH STATUS=OFF ;

C.Sıra oluşturma ve Iç etkinleştirme bilgileri belirtin

Aşağıdaki örnek, ileti almak kullanılabilir bir kuyruk oluşturur. Saklı yordam sıranın başlar expense_procedurebir ileti sıraya girdiğinde. Saklı yordam yürütür kullanıcı olarak ExpenseUser. Sıranın en fazla başlar 5saklı yordam örnekleri.

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

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

D.Belirli bir filegroup üzerinde bir sıra oluşturma

Aşağıdaki örnek, filegroup üzerinde bir sıra oluşturur. ExpenseWorkFileGroup.

CREATE QUEUE ExpenseQueue
    ON ExpenseWorkFileGroup ;

CREATE QUEUE ExpenseQueue
    ON ExpenseWorkFileGroup ;

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

Aşağıdaki örnek oluşturur: bir sıra DEFAULTfilegroup. Sıra değil. İletiler sıraya kadar ait oldukları için bitiş konuşma korunur. Sıra sıra alter queue kullanılabilir olduğunda, saklı yordam başlar 2008R2.dbo.expense_procedureişlem iletilerini. Saklı yordam çalıştıran kullanıcı yürütür CREATE QUEUEdeyimi. Sıranın en fazla başlar 10saklı yordam örnekleri.

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

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

Ayrıca bkz.

Başvuru

alter queue (Transact-sql)

Servis (Transact-sql) oluştur

SIRA (Transact-sql) bırak

(Transact-sql) alma

eventdata (Transact-sql)