Trigger und Event Notifications im SQL Server 2005 Artus Krohn-Grimberghe Ehem. Student Partner Microsoft Student Program [email protected] Microsoft SQL Server 2005 Architektur Komponenten des SQL Server 2005 Development Tools Reporting Services Analysis Services OLAP & Data Mining Integration Services ETL SQL Server Relational Engine Management Tools RDBMS ETL Werkzeug OLAP Server Data Mining Reporting-Dienste Management-Tools Entwicklungs-Tools Agenda Aktive Komponenten DML- und DDL-Trigger Event Notifications Ausblick SQL Server 2008 Aktive Komponenten SQL Server Agent Jobs (Automatisierung) Alerts (Ereignis und Aktion) Trigger Event Notifications Declarative Management Framework (ab „Katmai“) Agenda Aktive Komponenten DML- und DDL-Trigger Event Notifications Ausblick SQL Server 2008 DML- und DDL-Trigger Prozeduren, die bei Datenbankereignissen automatisch ausgeführt werden Laufen im Kontext des Auslösers ab (sind Teil der Transaktion, die sie ausgelöst hat) Können den Auslöser zurückrollen Werden nur einmal pro Befehl ausgeführt DML- und DDL- / LOGON-Trigger AFTER- und INSTEAD OF-Trigger T-SQL- und .NET-Trigger Ausführung im Kontext Zurückrollen der Transaktion möglich Beim Zurückrollen entstehen doppelte Kosten, daher n.M. constraints (Datentyp, CHECK, DEFAULT, PK, FK, DRI) benutzen Berechtigungskontext beachten! CREATE TRIGGER trg1 ON dbo.tbl1 AFTER INSERT AS IF EXISTS(SELECT * FROM inserted WHERE col1 = <some_value>) ROLLBACK TRANSACTION Verschachtelung und Rekursion Trigger können standardmäßig andere Trigger auslösen Trigger können sich selbst aufrufen (ALTER DATABASE <name> SET RECURSIVE_TRIGGERS ON;) AFTER Trigger inserted und deleted Spezialtabellen inserted: Zeilen für INSERT und UPDATE deleted: Zeilen für UPDATE und DELETE Mehrere Trigger pro Objekt möglich (Reihenfolge nur als „first“ und „last“; sp_settriggerorder) INSTEAD OF Trigger Original-Anweisung wird durch den Code des Triggers komplett ersetzt inserted und deleted enthalten die Daten, die geändert worden *wären*! Nie rekursiv, immer nur einer pro Operation Auch auf Sichten möglich Werden *vor* contraint-Prüfung ausgeführt DDL Trigger Auf Datenbank oder Serverebene Für einzelne DDL Ereignisse oder Gruppen EVENTDATA() Funktion Nur AFTER Trigger CREATE TRIGGER ddlTrigger ON DATABASE FOR DROP_TABLE CLR Trigger Trigger können seit SQL Server 2005 in .NET geschrieben werden Zugriff auf die .NET Klassenbibliotheken Zugriff auf externe Ressourcen Warnung: Transaktion erst beendet, wenn Trigger fertig! Externe Aufrufe eine Sicherheitsproblem! [SqlTrigger(Event=„FOR INSERT“)] public static void trg_LogToEventlog() { … Agenda Aktive Komponenten DML- und DDL-Trigger Event Notifications Ausblick SQL Server 2008 Trigger bieten im Vergleich zu Event Notifications den Vorteil, dass sie im Kontext der sie auslösenden Transaktion ablaufen (und sie daher auch zurückrollen können). Gleichzeitig leiden sie aber auch an dem eklatanten Nachteil, dass sie im Kontext der sie auslösenden Transaktion ablaufen (und die Transaktion folglich warten muss, bis jegliche Triggeraktivität beendet ist, ehe sie fortfahren kann)! WAITFOR DELAY ‚0:03‘; … Event Notifications „Asynchrone Antworten auf ein Ereignis“ Können keine Transaktionen zurückrollen! Trigger: Reaktion auf DML und DDL Ereignisse Führen Code aus Event Notifications: Reaktion auf DDL und Trace/Performance Ereignisse (CREATE TABLE, LOCK_DEADLOCK,…) Senden XML-Nachrichten Voraussetzungen für Event Notifications SQL Server 2005 oder neuer Service Broker Nachrichtenwarteschlange muss aktiviert sein Ein Dienst, der auf EN reagiert, muss erstellt werden Erweiterte Service Broker Funktionalität (Aktivierung, …) kann genutzt werden Agenda Aktive Komponenten DML- und DDL-Trigger Event Notifications Ausblick SQL Server 2008 Management by Intent Today Tomorrow From Managing by scripts To Management by Policies By default SQL Server 2005 turns off sensitive features e.g. CLR, Database Mail and OLE Automation To enable CLR and Database Mail the DBA must either: Use Surface Area Configurator (SAC) tool to explicitly enable these features OR Use T-SQL script to do so To monitor compliance the DBA will manually run SAC or her script regularly In Katmai, Declarative Management Framework (DMF) will offer easy configuration, automation and enforcement To enable CLR and Database Mail with DMF, the DBA will simply Define a policy to enable these features From Management Studio simply run the policy Compliance checking: DMF will automatically enforce the policy based on a schedule OR it will check once a user changes the configuration Reporting: DMF reports policy violation each time it occurs Can run on multiple servers automatically Advanced Performance Analysis Extensible Data Collector • Katmai will collect performance data e.g. memory usage, disk usage, etc • User can also define other sets of events for tracking Performance Data Warehouse • The Performance data warehouse will store deep data on SQL Server’s performance including query performance and locking issues • The data can be analyzed to offer deep insights on SQL Server’s performance Rich Performance Reports • Historical data on database performance will be displayed in rich reports • Reports will allow drill downs for root cause analysis Administratives… PASS – Professional Association for SQL Server „Die“ SQL Server Nutzergruppe! www.sqlpass.de Regelmäßige SQL Server Workshops und BootCamps Nutzergruppentreffen – von Usern für User SQL Jedis und SQL Rookies – jeder ist willkommen Ressourcen SQL Server http://www.microsoft.com/sql http://connect.microsoft.com/SQLServer http://forums.microsoft.com/MSDN http://www.microsoft.com/vhd MSDN AA für Informatik-Studenten! Inside SQL Server Buch-Reihe Data Mining with Microsoft SQL Server 2005 (Tang, MacLennan) Microsoft Certified Professional, Technology Specialist, IT Professional, … http://www.microsoft.com/mcp Microsoft Student Program Friedrich-Schiller-Universität Jena Fakultät für Mathematik und Informatik MSDN - Academic Alliance Microsoft Software für Euch kostenlos!!! • • • • • Betriebssysteme (Vista, XP, 2003, …) SQL Server 2005 Visual Studio 2005 Office Visio, Project, Access, InfoPath … Euer Ansprechpartner: Dr. Günter Schorr (EAP Raum 3416) 25 Veranstaltungen an der FSU Jena • • ASP.NET 2.0 Workshop 24.-25. März 2007 12.-13. Mai 2007 … weitere Veranstaltungen in Planung! Ankündigung unter: www.dotnetcommunity.de 26 Microsoft Student Partner an der FSU Jena Stefan Kontschinsky (Dipl. Informatik) [email protected] Auch Student Partner werden: www.studentprogram.de 27 Fragen Was ist neu am SQL Server 2005 .NET Framework Database Maintenance Replication Common Language Runtime Integration Backup and Restore Enhancements Auto-tuning Replication Agents User-defined Aggregates Checksum Integrity Checks Oracle Publication User-defined Data Types Dedicated Administrator Connection Improved Blob Change Tracking User-defined Functions Dynamic AWE OLAP and Data Mining SQL Server .NET Data Provider Fast Recovery Analysis Management Objects Extended Triggers Highly-available Upgrade Windows Integrated Backup and Restore Data Types Online Index Operations Web Service/XML for Analysis Managed SQL Types Online Restore DTS and DM Integration New XML Datatype Parallel DBCC New Data Mining Algorithms SQL Server Engine Parallel Index Operations Auto Packaging and Deployment New Message Service Broker Management Tools Data Transformation Services HTTP Support (Native HTTP) New Management Studio New Architecture (DTR + DTP) Database Tuning Advisor MDX Query Editor Complex Control Flows Multiple Active Result Sets Version Control Support Control Flow Debugging Persisted Computed Columns XML/A For Each Enumerations Queuing Support SQLCMD Command Line Tool Property Mappings Snapshot Isolation Level Performance Tuning Full Data Flow Designer Scale Up Partitioning Profiler Enhancements Full DTS Control Flow Designer VIA support Profiling Analysis Services Graphical Presentation of Pkg Execution NUMA support Exportable Showplan Immediate Mode and Project Mode Database Failure and Redundancy Exportable Deadlock Traces Package (Advanced) Deployment Tools Fail-over Clustering (up to 8 node) Full-text Search Custom Tasks and Transformations Enhanced Multi-instance Support Indexing of XML Datatype Reporting Services Database Mirroring MDAC Multiple Output Formats Database Viewpoints Side by Side installation Parameters (Static, Dynamic, Hierarchical) XML Microsoft Installer base setup Bulk Delivery of Personalized Content XQUERY Support (Server & Mid Tier) Support for Active Directory Deployment Support Multiple Data Sources XML Data Manipulation Language SQL Client .NET Data Provider STS (Web Parts, Doc Libraries) FOR XML Enhancements Server Cursor Support Visual Design Tool XML Schema (XSD) Support Asynch Charting, Sorting, Filtering, Drill-Through MSXML 6.0 (Native) Security Scheduling, Caching .Net XML Framework All Permissions Grantable Complete Scripting Engine Notification Services & SQL Server CE Fine Grain Administration Rights Scale Out architecture Transparent Data Encryption External Key Management Data Auditing Pluggable CPU Transparent Failover for Database Mirroring Declarative Management Framework Server Group Management Streamlined Installation Enterprise System Management Performance Data Collection System Analysis Data Compression Query Optimization Modes Resource Governor Entity Data Model LINQ Visual Entity Designer Entity Aware Adapters SQL Server Change Tracking Synchronized Programming Model Visual Studio Support SQL Server Conflict Detection FILESTREAM data type Integrated Full Text Search Sparse Columns Large User Defined Types Date/Time Data Type LOCATION data type Enterprise Reporting Engine Internet Report Deployment Block Computations Scale out Analysis BI Platform Management Export to Word and Excel Author reports in Word and Excel SPATIAL data type Report Builder Enhancements Virtual Earth Integration TABLIX Partitioned Table Parallelism Rich Formatted Data Query Optimizations Personalized Perspectives Persistent Lookups … and many more Change Data Capture Backup Compression MERGE SQL Statement Data Profiling Star Join