[Powerpoint] - SQLSat_Kiev_2016_ServiceBrokerx
Download
Report
Transcript [Powerpoint] - SQLSat_Kiev_2016_ServiceBrokerx
Service Broker in action
Tomasz Libera
[email protected]
@tomasz_libera
SQLSat Kyiv Team
Olena Smoliak
Oksana Borysenko
Vitaliy Popovych
Yevhen Nedashkivskyi
Mykola Pobyivovk
3 Sponsor Sessions at 12:40
Don’t miss them, they might be providing
some interesting and valuable information!
Room A
Room B
Room C
13:00 - 13:15
Intapp
DB Best
NULL
13:20 - 13:50
Microsoft
DevArt
JetBrains
Our Awesome Sponsors
Session will begin very soon :)
Please complete the evaluation form from
your pocket after the session. Your feedback
will help us to improve future conferences
and speakers will appreciate your feedback!
Enjoy the conference!
Tomasz Libera
DB Developer - WSZiB Krakow
Polish SQL Server User Group Association
plssug.org.pl
Member of The Board
Krakow Local Group Leader
Certificates
MCT,
MCSE
MCITP-DBA, MCITP-DD…
Interests
mountain biking
MTB marathons
www.wszib.edu.pl
Університет управління та
банківської справи пропонує
навчання на таких академічних
ступнях: бакалавр, спеціаліст,
магістр і післядипломна освіта.
Вуз оснащений є у власну
дидактичну базу.
Agenda
Introduction, History
Anatomy of Service Broker
Message, Contract, Service
First Conversation
Activation
Troubleshooting
SB as SQL Server Agent
Introduction
Introduced in SQL Server 2005
Asynchronous messaging system
Very little support in SSMS GUI
Specific T-SQL clauses
SEND
RECEIVE
Receiving and processing messages is done
on demand or based on activation
Send and Receive
SEND puts a message on a queue
(equivalent of INSERT)
SEND ON CONVERSATION @Ch
MESSAGE TYPE [//PLSSUG/SQLSB/MyMsg]
(@MsgBody);
RECEIVE removes a message from a queue
(equivalent of SELECT)
RECEIVE TOP(1)
@Ch = conversation_handle,
@MsgTypeName = message_type_name,
@MsgBody = CAST(message_body AS XML)
FROM ReceiverQueue
History
• Multicast - Messages can be
sent to multiple target services
• message_enqueue_time
• Poison message handling can
be disabled
• AlwaysOn support
• Service Broker
introduction
SQL 2005
SQL 2008
SQL 2012
• Conversation priorities
• SSBdiagnose utility
• Alternate poison message
handling
• Performance objects/counters
SQL 2014
• REBUILD QUEUE
SQL 2016
• No changes
Agenda
Intruduction, History
Anatomy of Service Broker
Message, Contract, Service
First Conversation
Activation
Troubleshooting
SB as SQL Server Agent
Dialog
Must be started before exchanging messages
Messages are being sent
in the same database
in different databases in the same instance
in different databases in different instances
BEGIN DIALOG CONVERSATION @Ch
FROM SERVICE [//PLSSUG/SQLSB/SenderService]
TO SERVICE '//PLSSUG/SQLSB/ReceiverService', 'CURRENT DATABASE'
ON CONTRACT [//PLSSUG/SQLSB/Contract]
WITH ENCRYPTION = OFF;
Message
VARBINARY(MAX) structure
Defines the name and the validation
NONE (default) – no validation is performed.
EMPTY - message body must be NULL.
WELL_FORMED_XML (most popular) - must contain well-formed XML.
VALID_XML WITH SCHEMA COLLECTION - message body must
contain XML that complies with a schema in the specified schema
collection
XML is implemented internally in SQL Server as a binary
structure
Service Broker Anatomy
Queue - sys.service_queue
An object which hold messages
Service - sys.services
Messages are being sent to services which placed them on
the queue
Message – sys.service_message_types
The name and the validation
Contract - sys.service_contracts
What types of messages can be used by sender and
receiver
Route – sys.routes
Remote service binding - sys.remote_service_binding
Agenda
Introduction, History
Anatomy of Service Broker
Message, Contract, Service
First Conversation
Activation
Troubleshooting
SB as SQL Server Agent
Message exchange
in Service Broker
SENDER SERVICE
RECEIVER SERVICE
SENDER
QUEUE
SYS.
TRANSMISSION
QUEUE
STORED
PROCEDURE
RECEIVER
QUEUE
request
massage
SYS.
TRANSMISSION
QUEUE
STORED
PROCEDURE
Message exchange
in Service Broker
SENDER SERVICE
RECEIVER SERVICE
SENDER
QUEUE
SYS.
TRANSMISSION
QUEUE
STORED
PROCEDURE
RECEIVER
QUEUE
response
messages
SYS.
TRANSMISSION
QUEUE
STORED
PROCEDURE
DEMO1: Setup
DEMO2: First conversation
Create
message types
contracts
services
queues
Begin conversation
Send and receive messages
End conversation
/SQL/ServiceBroker/EndDialog
MessageType that marks the endpoint as closed
http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog
When endpoint receives the EndDialog message,
it can’t send messages on the dialog
Must be sent by both services
END CONVERSATION @Ch
Could be sent because of an error
END CONVERSATION @Ch WITH ERROR = 31472
DESCRIPTION = 'Something goes wrong'
To cleanup orphaned dialogs
END CONVERSATION @Ch WITH CLEANUP
DEMO2B: EndDialog
END CONVERSATION
END CONVERSATION WITH ERROR
Agenda
Introduction, History
Anatomy of Service Broker
Message, Contract, Service
First Conversation
Activation
Troubleshooting
SB as SQL Server Agent
Activation
Activation lunches the process in response to
the enqueue receiving messages
Internal activation - runs the stored procedure
within the database.
External activation - external process (.NET
application) , processes messages which are
waiting in the queue.
Both types of activation has ability to launch
multiple processes to handle large volume of
messages in parallel
DEMO3: Activation
Create activation stored procedures
For Sender
For Receiver
Alter queue to enable activation
Test activation
Agenda
Introduction, History
Anatomy of Service Broker
Message, Contract, Service
First Conversation
Activation
Troubleshooting
SB as SQL Server Agent
Troubleshooting
Transmission queue
Poison message
Error Handling
Transmission queue
sys.transmission_queue
One in every database.
Stores messages temporarily before they reach
destination
Important for troubleshooting transmission_status
Is used:
The destination is on a different SQL Server instance
The destination is disabled STATUS=OFF (poison
message)
Service Broker is disabled (after restore/attach)
The destination is unknown
Poison messages
When error occurs during message
processing – transaction is rolled back and
message is going back to the queue
After 5 rollbacks in a row – a queue will be
disabled to stop the poison message
SOLUTION: prevent
DEMO4: transmission queue
Sending message to disabled queue
Disabled ServiceBroker
Poison message
/SQL/ServiceBroker/Error
MessageType when a dialog is ended with error
http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog
When endpoint receives the Error message, neither side
of conversation can send messages
Can contain error number and description
Usually used in CATCH block
END CONVERSATION @Ch
WITH ERROR = 5555
DESCRIPTION = 'Incorrect e-mail address'
DEMO5: Error Handling
TRY…CATCH code in activated procedures
Do you want more?
Books
Pro SQL Server 2008 Service Broker - Klaus Aschenbrenner
http://www.apress.com/9781590599990
Inside Microsoft SQL Server 2008 T-SQL Programming (Roger Wolter chapter)
Links
RUSANU – the best source about troubleshooting Service Broker
http://rusanu.com/articles
SQLDay 2013 | DBA/DEV Track | Denny Cherry - Getting SQL Service Broker
Up and Running
https://www.youtube.com/watch?v=5MGlqCfG1p0
SQL Server Service Broker
http://msdn.microsoft.com/en-us/library/bb522893(v=sql.105).aspx
Scheduling Jobs in SQL Server Express
http://www.sqlteam.com/article/scheduling-jobs-in-sql-server-express
SQL Server 2012 – What’s new in Service Broker
http://sqlwithsanil.com/2012/05/18/sql-server-2012-whats-new-in-service-broker/
How to use Service Broker to scale out SQL Server database applications
https://www.youtube.com/watch?v=CXPJL1jhipA
FOR HELP, CONTACT ME:
[email protected]
THANK YOU