Presentation is loading. Please wait.

Presentation is loading. Please wait.

Microsoft TechDayshttp://www.techdays.ru Коршиков Андрей Фёдорович ведущий инженер-программист ЗАО «НИПИ «ИнжГео» MCT, MCITP, MCPD.

Similar presentations


Presentation on theme: "Microsoft TechDayshttp://www.techdays.ru Коршиков Андрей Фёдорович ведущий инженер-программист ЗАО «НИПИ «ИнжГео» MCT, MCITP, MCPD."— Presentation transcript:

1

2 Microsoft TechDayshttp://www.techdays.ru Коршиков Андрей Фёдорович ведущий инженер-программист ЗАО «НИПИ «ИнжГео» MCT, MCITP, MCPD

3 Microsoft TechDayshttp://www.techdays.ru Обеспечивает инфраструктуру для создания решений, которые: Ориентированы на базу данных Безопасные Надежные Масштабируемые Слабосвязанные Распределенные

4 Microsoft TechDayshttp://www.techdays.ru Асинхронные триггеры Пакетная обработка Распределенная обработка заказов Консолидация данных для клиентских приложений

5 Microsoft TechDayshttp://www.techdays.ru Тип объекта Описание Тип сообщенийОпределяет допустимые сообщения для обмена между службами КонтрактЗадает тип сообщений и их направление в общении Очередь Хранит сообщения до отправки и после получения как результирующий набор СлужбаОтражает адресуемую конечную точку для взаимодействия служб Служебная программаОбрабатывает сообщения из очередей и применяет бизнес-логику Служебная программа Контракт ОчередьТип сообщений Служба

6 Microsoft TechDayshttp://www.techdays.ru КонструкцияОписание СообщениеДанные, которыми обмениваются две службы Диалоговое общение Общение, предполагающее отправку и получение сообщений двумя службами Группа сообщений Группа связанных сообщений с уникальным идентификатором Маршрут Сетевой адрес и дополнительное имя службы, используемые для перенаправления сообщений при общении между разными экземплярами SQL Server Привязка удаленной службы Связь между пользователем локальной базы данных и удаленной службой

7 Microsoft TechDayshttp://www.techdays.ru Служба SubmitExpense Контракт ProcessExpense Тип сообщения (Initiator) ExpenseClaim Тип сообщения (Target) ClaimResponse Служба ProcessExpense 7 7 3 3 Очередь ExpenseQueue Хранимая процедура ExpenseResult сообщение Хранимая процедура SubmitExpense сообщение 2 2 8 8 Очередь ExpenseQueue сообщение 6 6 Хранимая процедура ProcessExpense 5 5 4 4 Сообщение ExpenseClaim Сообщение ClaimResponse 1 1

8 Microsoft TechDayshttp://www.techdays.ru Система безопасности транспорта Безопасность двустороннего общения InitiatingServiceTargetService DB1.TgtUsr DB2.TgtUsr DB1.IniUsrDB2.IniUsr Привязка удаленной службы IniUsr:InitiatingSer vice Главный ключ Привязка удаленной службы TgtUsr:TargetServ ice

9 Microsoft TechDayshttp://www.techdays.ru Включить безопасное взаимодействие 3 3 Включить компонент Service Broker 2 2 Проверить состояние компонента Service Broker 1 1 SELECT name, is_broker_enabled FROM sys.databases SELECT name, is_broker_enabled FROM sys.databases ALTER DATABASE AdventureWorks SET ENABLE_BROKER ALTER DATABASE AdventureWorks SET ENABLE_BROKER CREATE MASTER KEY ENCRYPTION BY PASSWORD '23987hxJ#KL95234nl0zBe' CREATE MASTER KEY ENCRYPTION BY PASSWORD '23987hxJ#KL95234nl0zBe'

10 Microsoft TechDayshttp://www.techdays.ru CREATE MESSAGE TYPE message_type_name [AUTHORIZATION owner_name] [VALIDATION = {NONE | EMPTY | WELL_FORMED_XML | VALID_XML WITH SCHEMA COLLECTION schema_collection_name}] CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim] VALIDATION = WELL_FORMED_XML CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ClaimResponse] VALIDATION = VALID_XML WITH SCHEMA COLLECTION awschemas CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim] VALIDATION = WELL_FORMED_XML CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ClaimResponse] VALIDATION = VALID_XML WITH SCHEMA COLLECTION awschemas

11 Microsoft TechDayshttp://www.techdays.ru CREATE CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission] ( [//Adventure-Works.com/Expenses/ExpenseClaim] SENT BY INITIATOR, [//Adventure-Works.com/Expenses/ClaimResponse] SENT BY TARGET ) CREATE CONTRACT contract_name [ AUTHORIZATION owner_name ] ( { message_type_name SENT BY { INITIATOR | TARGET | ANY } | [ DEFAULT ] } [,...n] )

12 Microsoft TechDayshttp://www.techdays.ru CREATE QUEUE queue_name [ WITH [ STATUS = { ON | OFF } [, ] ] [ RETENTION = { ON | OFF } [, ] ] [ ACTIVATION ( [ STATUS = { ON | OFF }, ] PROCEDURE_NAME = stored_procedure_name, MAX_QUEUE_READERS = max_readers, EXECUTE AS { SELF | 'user_name' | OWNER } ) ]] CREATE QUEUE ExpenseQueueWithActivation WITH STATUS = OFF, ACTIVATION ( PROCEDURE_NAME = ProcessExpense, MAX_QUEUE_READERS = 5, EXECUTE AS SELF)

13 Microsoft TechDayshttp://www.techdays.ru CREATE SERVICE service_name [ AUTHORIZATION owner_name ] ON QUEUE [ schema_name. ]queue_name [ ( contract_name | [DEFAULT] [,...n ] ) ] CREATE SERVICE [//Adventure-Works.com/SubmitExpense] ON QUEUE ExpensesInitiator ( [//Adventure-Works.com/Expenses/ProcessExpense] ) CREATE SERVICE [//Adventure-Works.com/ProcessExpense] ON QUEUE ExpensesTarget ( [//Adventure-Works.com/Expenses/ProcessExpense] ) CREATE SERVICE [//Adventure-Works.com/SubmitExpense] ON QUEUE ExpensesInitiator ( [//Adventure-Works.com/Expenses/ProcessExpense] ) CREATE SERVICE [//Adventure-Works.com/ProcessExpense] ON QUEUE ExpensesTarget ( [//Adventure-Works.com/Expenses/ProcessExpense] )

14 Microsoft TechDayshttp://www.techdays.ru Отправить сообщение 3 3 Начать диалоговое общение 2 2 Объявить переменную-дескриптор двустороннего общения 1 1 DECLARE @dialog_handle uniqueidentifier BEGIN DIALOG CONVERSATION @dialog_handle FROM SERVICE [//Adventure-Works.com/SubmitExpense] TO SERVICE '//Adventure-Works.com/ProcessExpense' ON CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] DECLARE @dialog_handle uniqueidentifier BEGIN DIALOG CONVERSATION @dialog_handle FROM SERVICE [//Adventure-Works.com/SubmitExpense] TO SERVICE '//Adventure-Works.com/ProcessExpense' ON CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] DECLARE @dialog_handle uniqueidentifier BEGIN DIALOG CONVERSATION @dialog_handle FROM SERVICE [//Adventure-Works.com/SubmitExpense] TO SERVICE '//Adventure-Works.com/ProcessExpense' ON CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] ;SEND ON CONVERSATION @dialog_handle MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim] (@msgString) DECLARE @dialog_handle uniqueidentifier BEGIN DIALOG CONVERSATION @dialog_handle FROM SERVICE [//Adventure-Works.com/SubmitExpense] TO SERVICE '//Adventure-Works.com/ProcessExpense' ON CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] ;SEND ON CONVERSATION @dialog_handle MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim] (@msgString)

15 Microsoft TechDayshttp://www.techdays.ru По завершении общения вызвать инструкцию END CONVERSATION 4 4 Проверить тип сообщения и обработать сообщение соответствующим образом 3 3 Вызвать инструкцию RECEIVE 2 2 Объявить переменные для хранения сведений о сообщении 1 1 DECLARE @conversation UNIQUEIDENTIFIER DECLARE @msg NVARCHAR(MAX), @msgType NVARCHAR(256) DECLARE @conversation UNIQUEIDENTIFIER DECLARE @msg NVARCHAR(MAX), @msgType NVARCHAR(256) DECLARE @conversation UNIQUEIDENTIFIER DECLARE @msg NVARCHAR(MAX), @msgType NVARCHAR(256) ;RECEIVE TOP(1) @conversation = conversation_handle, @msgType = message_type_name, @msg = message_body FROM ExpenseQueue DECLARE @conversation UNIQUEIDENTIFIER DECLARE @msg NVARCHAR(MAX), @msgType NVARCHAR(256) ;RECEIVE TOP(1) @conversation = conversation_handle, @msgType = message_type_name, @msg = message_body FROM ExpenseQueue DECLARE @conversation UNIQUEIDENTIFIER DECLARE @msg NVARCHAR(MAX), @msgType NVARCHAR(256) ;RECEIVE TOP(1) @conversation = conversation_handle, @msgType = message_type_name, @msg = message_body FROM ExpenseQueue IF (@msgType = '//Adventure-Works.com/Expenses/ExpenseClaim') -- process @msg … DECLARE @conversation UNIQUEIDENTIFIER DECLARE @msg NVARCHAR(MAX), @msgType NVARCHAR(256) ;RECEIVE TOP(1) @conversation = conversation_handle, @msgType = message_type_name, @msg = message_body FROM ExpenseQueue IF (@msgType = '//Adventure-Works.com/Expenses/ExpenseClaim') -- process @msg … DECLARE @conversation UNIQUEIDENTIFIER DECLARE @msg NVARCHAR(MAX), @msgType NVARCHAR(256) ;RECEIVE TOP(1) @conversation = conversation_handle, @msgType = message_type_name, @msg = message_body FROM ExpenseQueue IF (@msgType = '//Adventure-Works.com/Expenses/ExpenseClaim') -- process @msg … END CONVERSATION @conversation DECLARE @conversation UNIQUEIDENTIFIER DECLARE @msg NVARCHAR(MAX), @msgType NVARCHAR(256) ;RECEIVE TOP(1) @conversation = conversation_handle, @msgType = message_type_name, @msg = message_body FROM ExpenseQueue IF (@msgType = '//Adventure-Works.com/Expenses/ExpenseClaim') -- process @msg … END CONVERSATION @conversation

16 Microsoft TechDayshttp://www.techdays.ru

17 SSBDiagnose

18 Microsoft TechDayshttp://www.techdays.ru http://msdn.microsoft.com/ru-ru/library/ms166104.aspx http://technet.microsoft.com/ru-ru/library/ms166043(SQL.90).aspx http://www.microsoft.com/learning/en/us/course.aspx?ID=6232A&locale=en -us#tab1 http://technet.microsoft.com/ru-ru/magazine/2005.05.servicebroker(en- us).aspx http://www.amazon.com/Pro-Server-2008-Service- Broker/dp/B001W0ZD36/ref=sr_1_2?ie=UTF8&s=books&qid=1245856988 &sr=8-2 http://community.livejournal.com/ru_sql_server/4558.html http://www.sql.ru/articles/mssql/Conferenc/platform2006/DB05.zip

19 Microsoft TechDayshttp://www.techdays.ru © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

20


Download ppt "Microsoft TechDayshttp://www.techdays.ru Коршиков Андрей Фёдорович ведущий инженер-программист ЗАО «НИПИ «ИнжГео» MCT, MCITP, MCPD."

Similar presentations


Ads by Google