Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
SQL Server Hizmet Aracısı, SQL Server Veritabanı Altyapısı ve Azure SQL Yönetilen Örneği içinde mesajlaşma ve kuyruğa alma işlemleri için yerel destek sağlar. Geliştiriciler, farklı veritabanları arasında iletişim kurmak ve dağıtılmış ve güvenilir uygulamalar oluşturmak için Veritabanı Altyapısı bileşenlerini kullanan gelişmiş uygulamaları kolayca oluşturabilir.
Hizmet Aracısı ne zaman kullanılır?
Yerel veritabanı içi zaman uyumsuz ileti işleme işlevlerini uygulamak için Hizmet Aracısı bileşenlerini kullanın. Hizmet Aracısı kullanan uygulama geliştiricileri, karmaşık iletişim ve mesajlaşma iç işlevlerini programlamadan veri iş yüklerini çeşitli veritabanlarına dağıtabilir. Hizmet Aracısı iletişim yollarını konuşma bağlamında işlediğinden Hizmet Aracısı geliştirme ve test çalışmalarını azaltır. Ayrıca performansı artırır. Örneğin, Web sitelerini destekleyen ön uç veritabanları bilgileri kaydedebilir ve yoğun işlem gerektiren görevleri arka uç veritabanlarında kuyruğa gönderebilir. Hizmet Aracısı, güvenilirlik ve teknik tutarlılık sağlamak için tüm görevlerin işlemler bağlamında yönetilmesini sağlar.
Genel bakış
Hizmet Aracısı, yerel veritabanı içi hizmet odaklı uygulamalar oluşturmanıza olanak tanıyan bir ileti teslim çerçevesidir. Tablolardan sürekli olarak veri okuyan ve sorgu yaşam döngüsü sırasında bunları işleyen klasik sorgu işleme işlevlerinin aksine, hizmet odaklı uygulamalarda iletilerin alışverişi yapılan veritabanı hizmetleri vardır. Her hizmet için, mesajların işlenene kadar yerleştirildiği bir kuyruk bulunmaktadır.
Kuyruklardaki iletiler Transact-SQL RECEIVE komutu kullanılarak veya ileti kuyruğa her geldiğinde çağrılan etkinleştirme yordamıyla getirilebilir.
Hizmet oluşturma
Uyarı
Hedef hizmet bir veya daha fazla sözleşmeyi kullanıma sunmalıdır. Sözleşmeleri olmayan bir hizmet oluşturursanız, ileti alamaz. Gönderilen iletiler başarılı gibi görünebilir, ancak iletiler başlatıcının sys.transmission_queue kuyruğunda kalacaktır.
/*
In this example, the initiator must then use ON CONTRACT [DEFAULT] and a MESSAGE TYPE [DEFAULT]. [DEFAULT] is a delimited identifier for the built‑in contract and isn't a T‑SQL keyword, so it must be bracketed or quoted.
*/
CREATE QUEUE dbo.ExpenseQueue;
GO
CREATE SERVICE ExpensesService
ON QUEUE dbo.ExpenseQueue ([DEFAULT]);
İleti gönderme
İletiler, SEND Transact-SQL deyimi kullanılarak hizmetler arasındaki konuşmada gönderilir. Konuşma, BEGIN DIALOG Transact-SQL deyimi kullanılarak hizmetler arasında kurulan bir iletişim kanalıdır.
-- Begin a dialog
DECLARE @dialog_handle AS UNIQUEIDENTIFIER;
BEGIN DIALOG @dialog_handle
FROM SERVICE ExpensesClient
TO SERVICE N'ExpensesService'
ON CONTRACT [DEFAULT];
-- Send a message
SEND ON CONVERSATION (@dialog_handle)
MESSAGE TYPE [DEFAULT] (N'<Expense ExpenseId="1" Amount="123.45" Currency="USD"/>');
İleti adresine ExpensesService gönderilir ve içine dbo.ExpenseQueueyerleştirilir. Bu kuyrukla ilişkilendirilmiş bir etkinleştirme yordamı olmadığından, birisi okuyana kadar ileti kuyrukta kalır.
İletileri işleme
Kuyruğa yerleştirilen iletiler standart bir SELECT sorgusu kullanılarak seçilebilir.
SELECT deyimi kuyruğu değiştirmez ve iletileri kaldırmaz. Kuyruktan iletileri almak ve okumak için RECEIVE Transact-SQL deyimini kullanabilirsiniz.
RECEIVE TOP (1)
conversation_handle,
message_type_name,
TRY_CAST (message_body AS NVARCHAR (MAX)) AS message_body_text
FROM dbo.ExpenseQueue;
GO
Kuyruktan tüm iletileri işledikten sonra, END CONVERSATION Transact-SQL deyimini kullanarak konuşmayı kapatmalısınız.
-- Drain any remaining target conversations for the from the queue
DECLARE @conversation_hdl AS UNIQUEIDENTIFIER;
WHILE EXISTS (SELECT 1 FROM dbo.ExpenseQueue)
BEGIN
RECEIVE TOP (1) @conversation_hdl = conversation_handle FROM dbo.ExpenseQueue;
END CONVERSATION @conversation_hdl;
END
GO
Hizmet Aracısı belgeleri
Hizmet Aracısı hakkında daha fazla bilgi için bkz:
- , ve
CREATEdeyimleri içinALTERDROPdeyimleri - Transact-SQL deyimleri
- Hizmet Aracısı Katalog Görünümleri (Transact-SQL)
- Hizmet Aracısı İlgili Dinamik Yönetim Görünümleri (Transact-SQL)
- ssbdiagnose yardımcı programı (Hizmet Aracısı)
Ayrıca, Hizmet Aracısı kavramları ve geliştirme ve yönetim görevleri için daha önce yayımlanmış belgelere de başvurabilirsiniz.
Hizmet Aracısı'ndaki yenilikler
Hizmet Aracısı ve Azure SQL Yönetilen Örneği
Azure SQL Yönetilen Örneği örnekleri arasında örnekler arası Hizmet Aracısı ileti alışverişi ve SQL Server ile Azure SQL Yönetim Örneği arasındaki ileti alışverişi şu anda genel önizleme aşamasındadır:
-
CREATE ROUTE: Belirtilen bağlantı noktası 4022 olmalıdır. Bkz . CREATE ROUTE (Transact-SQL). -
ALTER ROUTE: Belirtilen bağlantı noktası 4022 olmalıdır. Bkz. ALTER ROUTE (Transact-SQL).
Aktarım güvenliği desteklenirken diyalog güvenliği desteklenmemektedir.
-
CREATE REMOTE SERVICE BINDINGdesteklenmez.
Hizmet Aracısı varsayılan olarak etkindir ve devre dışı bırakılamaz. Aşağıdaki ALTER DATABASE seçenekler desteklenmez:
ENABLE_BROKERDISABLE_BROKER
SQL Server 2019'da (15.x) önemli bir değişiklik yapılmadı. SQL Server 2012'de (11.x) aşağıdaki değişiklikler kullanıma sunulmuştur.
İletiler birden çok hedef hizmete gönderilebilir (çok noktaya yayın)
SEND deyiminin söz dizimi, birden çok konuşma tutamacını destekleyerek çok noktaya yayını etkinleştirmek için genişletilmiştir.
Kuyruklar, iletinin kuyruğa alındığı zamanı gösterir
Kuyruklarda, message_enqueue_timebir iletinin ne kadar süredir kuyrukta olduğunu gösteren yeni bir sütunu vardır.
Zehirli ileti işleme devre dışı bırakılabilir
CREATE QUEUE ve ALTER QUEUE deyimleri artık yan tümcesini POISON_MESSAGE_HANDLING (STATUS = ON | OFF)ekleyerek zehirli ileti işlemeyi etkinleştirebilir veya devre dışı bırakabilir. Katalog görünümünde sys.service_queues artık zehirli iletinin etkinleştirildiğini veya devre dışı bırakıldığını belirten sütun is_poison_message_handling_enabled bulunur.
Hizmet Aracısı'nda kullanılabilirlik grubu desteği
Daha fazla bilgi için bkz. Hizmet Aracısı ile Always On Kullanılabilirlik Grupları (SQL Server).