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.
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] ;