1 / 53

SQL Server Service Broker

SQL Server Service Broker. DD2, D9. Zur Person. Dipl. Inf. Marcel Gnoth, MCSD www.gnoth.net NTeam GmbH, Berlin www.nteam.de Leiter Softwareentwicklung MS Gold Partner: Busines Intelligence, Information Worker, Advanced Infrastructur Autor dotnet pro , dotnet-magazin, ComputerWorld, MSDN

Télécharger la présentation

SQL Server Service Broker

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL Server Service Broker DD2, D9

  2. Zur Person • Dipl. Inf. Marcel Gnoth, MCSD • www.gnoth.net • NTeam GmbH, Berlin • www.nteam.de • Leiter Softwareentwicklung • MS Gold Partner: Busines Intelligence, Information Worker, Advanced Infrastructur • Autor dotnetpro, dotnet-magazin, ComputerWorld, MSDN • Trainer (u.a. SPC Berlin, www.spc.de ) • Themen • VB6, COM, SQL Server • Verteilte nachrichtenbasierte Informationssysteme • Office System 2003 Integration • Reisen in ferne Länder: www.gnoth.net/reise.htm Marcel Gnoth, 2005, www.gnoth.net

  3. Agenda • Überblick SSB • Verteilte Kommunikation zwischen zwei Servern • Security • Zugriff auf SSB mit ADO.Net 2.0 • Notification • Fazit Marcel Gnoth, 2005, www.gnoth.net

  4. Service Broker in Yukon • Neu in Yukon • Ermöglicht asynchrones Messaging innerhalb des SQL-Servers • Warteschlangen sind normale DB Objekte • Können mit SQL verwendet werden CREATE QUEUE MittwochMessages Select message_body FROM MittwochMessages Marcel Gnoth, 2005, www.gnoth.net

  5. Überblick SSB • Asynchrones Messaging in der DB • Entkoppeln von Transaktionen • Garantierte Nachrichtenzustellung • Entlastung bei Spitzenlast • Batch-Verarbeitung • Automatische Aktivierung von SP Marcel Gnoth, 2005, www.gnoth.net

  6. Security War da was ???

  7. SSB Security • Kommunikation zwischen Servern • Nicht im gleichem Netz • Keine Vertrauensstellung • Keine SQL-/Windows-Logins • Security basiert auf Zertifikaten • Werden ausgetauscht • Werden je einem lokalem User zugeordnet • Dessen Sicherheitskontext wird verwendet • Transport Security • Dialog Security Marcel Gnoth, 2005, www.gnoth.net

  8. Dialog Security • Verschlüsselt Nachrichten einer Conversation • Authentifizierung • Integritätsprüfung • Nur über Zertifikate • Ohne Zertifikat -> Public Role in der Ziel DB Marcel Gnoth, 2005, www.gnoth.net

  9. Arten der Dialog Security • No Dialog Security • Keine Verschlüsselung • Operationen in der ZielDB laufen unter Public • Anonymous Security • Nachrichten werden verschlüsselt • Operationen in der ZielDB laufen unter Public • Full Security • Nachrichten werden verschlüsselt • Operationen laufen über zugeordnete User Marcel Gnoth, 2005, www.gnoth.net

  10. SSB Security - Transport • Sichert Netzwerkverbindung • Nur autorisierte DB‘s können Nachrichten schicken • Windows oder Zertifikate Marcel Gnoth, 2005, www.gnoth.net

  11. Zertifikate • Zertifikate in der Datenbank erstellen • Müssen mit dem MasterKey der DB verschlüsselt werden • ACTIVE FOR BEGIN_DIALOG • By default • Kann deaktiviert werden CREATE master KEY encryption BY password = 'TokyoMaster' Marcel Gnoth, 2005, www.gnoth.net

  12. Wie viel Zertifikate? • Kommunikation zwischen zwei Servern • Transport Security (Master DB) • Ein eigenes Zertifikat (mit PK) • Ein Remote Zertifikat • Dialog Security (DB, die die Queue enthält) • Ein eigenes Zertifikat (mit PK) • Ein Remote Zertifikat • Den remote Zertifikaten werden lokale Logins zugeordnet • = 4 Stück auf jedem SQL Server Marcel Gnoth, 2005, www.gnoth.net

  13. Zertifikate erstellen - MakeCert • MakeCert aus dem SDK • Zertifikatsdatei mit Public Key • Separate Datei mit Private Key (nur Lokal) makecert -n "CN=Tokyo" -sv Tokyo.pvk Tokyo.cer CREATE certificate ctfTokyoMasterFROM FILE ='C:\DB-Tokyo\Tokyo.cer‚WITH private_keyFILE='C:\DB-Tokyo\Tokyo.pvk',decryption_password='Hallo')active FOR begin_dialog ON Marcel Gnoth, 2005, www.gnoth.net

  14. Zertifikate erstellen - TSQL • Lokal in der DB • Public Key in Datei schreiben • Für Austausch mit remote Server create certificate TrpCertServ1with subject ='TrpCertServer1',start_date ='06/01/2005'; BACKUP CERTIFICATE TrpCertServ1 TO FILE ='C:\Tokyo.cer'; Marcel Gnoth, 2005, www.gnoth.net

  15. Login und User anlegen • Neuen Login und User anlegen • Dem User die remote Zertifikate zuordnen • Aktionen der Remote DB werden im Kontext dieses Users ausgeführt CREATE LOGIN remcert WITH password = ''CREATE user remcertFOR LOGIN remcert CREATE certificate ctfKyotoMasterAUTHORIZATION remcertFROM FILE = 'C:\Marcel\DB-Tokyo\Kyoto.cer'ACTIVE FOR BEGIN_DIALOG = ON Marcel Gnoth, 2005, www.gnoth.net

  16. EndPoint anlegen • Dienen der physischen Kommunikation • Verschiedene Typen u.a. für SSB • User Rechte für den Endpoint geben CREATE ENDPOINT epTokyoSTATE = startedAS TCP(LISTENER_PORT = 4022)FOR SERVICE_BROKER ( AUTHENTICATION = CERTIFICATEctfTokyoMaster,ENCRYPTION = REQUIRED) grant connect on endpoint::epTokyoto remcert Marcel Gnoth, 2005, www.gnoth.net

  17. Die Kommunikation • Nicht zwischen zwei Datenbanken oder Servern • Zwischen Diensten (Services) • SOA  Marcel Gnoth, 2005, www.gnoth.net

  18. Remote Service Binding • Verknüpfung zwischen • Benutzernamen • Und Namen des entfernten Dienstes • Verschlüsselung CREATE REMOTE SERVICE BINDING [Japan_Binding] TO SERVICE 'svcKyotoTanukiRequest'WITH USER =remcert,ANONYMOUS=Off Tanuki-Reihe Tanuki-Oho.jpg Marcel Gnoth, 2005, www.gnoth.net

  19. Demo User und Zertifikate

  20. Nachrichten-Infrastruktur

  21. Message Type • Alle Nachrichten müssen einen definierten Typ haben • Typ ist ein Label für den Empfänger • Kann mit XML Schema verknüpft werden • Nachrichten, die nicht dem Schema entsprechen werden beim Empfang abgewiesen create message type [mtAskKyoto] validation = well_formed_xml create message type [mtResponseTokyo] validation = well_formed_xml Marcel Gnoth, 2005, www.gnoth.net

  22. Contract • Menge von Message Types • Definieren wer welche Nachrichten senden darf create contract [ctrOrderTanuki]([mtAskKyoto] sentby initiator,[mtResponseTokyo] sentby target) Marcel Gnoth, 2005, www.gnoth.net

  23. Queue • Queue erstellen • Status • Aktiv / Inaktiv • Rentention • Entfernt aus der Queue • Oder aktualisiert den Status der Nachricht • Activation • Stored Procedure die Nachrichten verarbeitet create queue [quKyoto] with status = on Marcel Gnoth, 2005, www.gnoth.net

  24. Lokalen Service anlegen • Ordnet mehrere Contract‘s einer Queue zu. • Dialoge verwenden Serivces als Endpunkte • Beim Deployment können den Services physische Queues zugeordnet werden create service [svcKyotoTanukiRequest] on queue [quKyoto]( [ctrOrderTanuki] ) grant send on service::[svcKyotoTanukiRequest]to remcert Marcel Gnoth, 2005, www.gnoth.net

  25. Route anlegen • In der jeweiligen DB • Eine standardroute nach Lokal • SSB versucht einen Service über die Routen zu finden create route [RouteToTokyo] withservice_name ='svcTokyoTanukiResponse',address ='TCP://192.168.178.21:4022‚ Select * from sys.routes Marcel Gnoth, 2005, www.gnoth.net

  26. Demo Nachrichteninfrastruktur anlegen

  27. Nachrichten senden

  28. Conversations • Kommunikation zwischen zwei Services erfolgt in Conversations • Beliebig viele Nachrichten können zu einer Conversation gehören • Feste Reihenfolge • Mehrere Conversations können zu logischen Gruppen zusammengefasst werden • Aktuell nur ein Typ: Dialog Marcel Gnoth, 2005, www.gnoth.net

  29. Begin Conversation • FromService muss lokal existieren • ToService wird als Text übergeben • Wird über eine Route lokalisiert • Lifetime in sekunden • Encryption steuert Dialog Security begin dialog conversation @hfrom service [svcTokyoTanukiResponse]to service 'svcKyotoTanukiRequest‚on contract [ctrOrderTanuki]WITH LIFETIME=1, ENCRYPTION=On; Marcel Gnoth, 2005, www.gnoth.net

  30. Dialog Security: Remote Service Binding, Begin Dialog Marcel Gnoth, 2005, www.gnoth.net

  31. Senden • Conversation Handle, Nachrichtentyp, Nachricht • Nachrichten landen erst in Transmission Queue • Interne Ack-Messages send on conversation @hmessage type [mtAskKyoto](@msg) select * from sys.transmission_queue Marcel Gnoth, 2005, www.gnoth.net

  32. Empfangen • Select • Receive • Body ist varbinary -> casten select cast(message_body as XML), * From quKyoto Receive cast(message_body as nvarchar(MAX)),* From quKyoto Marcel Gnoth, 2005, www.gnoth.net

  33. End Conversation • Eine Seite möchte Kommunikation beenden • WITH CleanUp • Löscht alle Überreste der Conversation • WITH ERROR = failure_code (>0) • DESCRIPTION = failure_text • Liste der Conversation Endpoints end conversation '019F856F-F525-DA11-B373-505054503030‚WITHCLEANUP select * from sys.conversation_endpoints Marcel Gnoth, 2005, www.gnoth.net

  34. Demo Nachrichten senden und empfangen

  35. System Queues / Abfragen • select * from sys.transmission_queue • Ausgehende Nachrichten bleiben so lange in der Queue bis Ack vom Ziel eintrifft • Interne Nachrichten, tauchen nicht in der Queue auf • Fehler sind hier zu finden • GET_TRANSMISSION_STATUS (conversation_handle) • Letzter Fehler einer Conversation Marcel Gnoth, 2005, www.gnoth.net

  36. Demoprogramm Mit ADO.Net auf SSB zugreifen

  37. Profiler • SQL Server Profiler • Template: Blank • Event Selection Marcel Gnoth, 2005, www.gnoth.net

  38. Demo

  39. Queue Aktivierung • Beim Eintreffen einer Nachricht kann eine Aktion ausgelöst werden • Stored Proc (Internal Activation) ALTER QUEUE quKyoto WITH ACTIVATION( STATUS = On,PROCEDURE_NAME = [QueueActivation], MAX_QUEUE_READERS = 1,EXECUTE AS SELF) ALTER QUEUE quKyoto WITH ACTIVATION( STATUS = Off) Marcel Gnoth, 2005, www.gnoth.net

  40. Queue Aktivierung - SP • Normale Stored Procedure • Mehrere Instanzen möglich CREATE PROCEDURE [dbo].[QueueActivation]WITH EXECUTE AS CALLER AS DECLARE @dh uniqueidentifierDECLARE @msg XML WAITFOR(RECEIVE TOP(1) @dh = conversation_handle, @msg = message_body FROM [quKyoto] ), TIMEOUT 15000 INSERT INTO XML_MESSAGES (Nachricht) VALUES (cast(@msg as XML)) Marcel Gnoth, 2005, www.gnoth.net

  41. Demo Queue Aktivierung

  42. Query Notifications • Ergebnismenge einer SELECT-Abfrage wird überwacht • Yukon verwaltet Notification Subscription • Ändern sich die Daten, dann werden alle Subscriber informiert • Mechanismus für Indexierte Views • Änderungen werden über Service Broker publiziert Marcel Gnoth, 2005, www.gnoth.net

  43. ADO 2.0: SQLDependency und SQLNotificationRequest • Verknüpft SQLCommand mit Notification Subscription • SQLDependency • Call Back der DB-Engine in die Applikation • High Level Class • Sehr komfortabel für Entwickler • SQLNotificationRequest • Low Level, kein Call Back der DB Marcel Gnoth, 2005, www.gnoth.net

  44. Demo Query Notifications

  45. Fazit

  46. Ressourcen • Blogs • Rushi Desai: http://blogs.msdn.com/rushidesai/ • Niels: http://www.sqljunkies.com/WebLog/nielsb/ • Newsgroup • SQL Server 2005 Beta News Groups: http://msdn.microsoft.com/SQL/2005/ • SSB Devolopers Spot • www.sqlservicebroker.com • dotnetpro Marcel Gnoth, 6+7 2005 • www.gnoth.net Marcel Gnoth, 2005, www.gnoth.net

  47. Uff... Alles wird gut  Marcel Gnoth, 2005, www.gnoth.net

  48. Marcel Gnoth, 2005, www.gnoth.net

  49. Einsatzszenarien - Trigger • Asynchrone Trigger • OLTP-Systeme, sehr schnelle Ausführung des Triggers • Nachricht wird unabhängig, aber zuverlässig zugestellt • Arbeit kann auf einem anderen Server je, nach Last ausgeführt werden Marcel Gnoth, 2005, www.gnoth.net

  50. Einsatzszenarien – Abfragen • Garantierte Abfragen • Werden in Queue gestellt • Anderer Prozess: • Entnimmt Abfrage • Führt Abfrage aus • Speichert Ergebnis der Abfrage • Alles in einer Transaktion!! Marcel Gnoth, 2005, www.gnoth.net

More Related