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