{"id":1712,"date":"2013-06-26T22:05:32","date_gmt":"2013-06-27T05:05:32","guid":{"rendered":"http:\/\/3.209.169.194\/blogs\/bobb\/?p=1712"},"modified":"2013-10-02T18:28:28","modified_gmt":"2013-10-03T01:28:28","slug":"more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/","title":{"rendered":"More XEvents in SQL Server 2014 CTP1 &#8211; don&#8217;t wait any longer"},"content":{"rendered":"<p>Don&#8217;t get me wrong, there&#8217;s almost no one who enjoys a good SQL Profiler diagnostic trace more than I do. But, starting in the early CTPs of SQL Server 2008, I&#8217;ve become impressed with the diagnostic enablement afforded through Extended Events. Enough to hack through that first beta (sans docs, with only metadata) and <a href=\"http:\/\/3.209.169.194\/blogs\/bobb\/xevent-in-sql-server-2008\/\" target=\"_blank\" class=\"broken_link\">blog about it for a week<\/a>.\u00a0XEvents&#8217;\u00a0biggest weakness was that there was no GUI, and a guy named <a href=\"http:\/\/www.sqlskills.com\/blogs\/jonathan\/\" target=\"_blank\">Jonathan Kehayias<\/a> took care of that\u00a0with <a href=\"http:\/\/extendedeventmanager.codeplex.com\/\" target=\"_blank\" class=\"broken_link\">his SSMS add-in<\/a>.<\/p>\n<p>In SQL Server 2012, it was announced that the old trace would be deprecated in favor of XEvents. The sheer number of events (618 in SQL Server 2012 RTM, with 9 more in SQL Server 2012 SP1) dwarfed the profiler events, as well as a nice GUI built into SSMS and programmatic interfaces for session definition, metadata, and trace-reading (including realtime) with a component called LINQ to XEvents, things were sort of sealed. That&#8217;s not even mentioning the actions, the powerful predicate system, and the series of targets.<\/p>\n<p>Still, XEvents seems daunting for some, mostly (I think) because there&#8217;s too much XML involved. But c&#8217;mon, XPath is, for the most part, like navigating through a file system. And basic XPath is all you need, for the most part, to reformat the event data. Goodness, the XEvent data doesn&#8217;t even use XML Namespaces, to keep the querying simple.<\/p>\n<p>After looking at the SQL Server 2014 CTP1 metadata, the results are in; things are settled. The score is:<\/p>\n<p>&#8212; 763 XEvents total (that&#8217;s 145 new ones) vs. 0 new trace events (although SQL Profiler\/event system is still around)<br \/>\n&#8212; 4 new packages, including 3 related to Hekaton (internals, compiler, and runtime).<br \/>\n&#8212; 68 events in the &#8220;sqlserver&#8221; packages, including about 10 more xtp (Hekaton) events in these packages, events to trace interactions with Windows Azure storage, for the new cardinality estimating code, and new columnstore functionality.<\/p>\n<p>In a release where there are actually 3 new Event Notification event types (for CREATE\/DROP AUDIT and DDL_DATABASE_AUDIT_EVENTS, remember Event Notifications?) the fact that there&#8217;s no new trace capability means YOU need to start learning\/experimenting with Extended Events now. if you haven&#8217;t already. Go to a class, or a presentation, or read blogs or something&#8230;\u00a0And\u00a0you may want to\u00a0brush up on your XPath&#8230;<\/p>\n<p>A good place to start would be with Jonathan&#8217;s &#8220;<a href=\"http:\/\/www.sqlskills.com\/blogs\/jonathan\/category\/xevent-a-day-series\/\" target=\"_blank\" class=\"broken_link\">An XEvent A Day<\/a>&#8221; blog series. Or his two courses on <a href=\"http:\/\/www.pluralsight.com\/training\" target=\"_blank\">Pluralsight<\/a> about them. But start NOW, before you find yourself in SQL 2012 or 2014 with your diagnostic hands tied behind your back. How else can you look at wait stats for a specific workload or work with the T-SQL stack?<\/p>\n<p>And BTW, Here&#8217;s a list of all the new events ([package name].[event name]) in\u00a02014 CTP1\u00a0(since 2012 SP1):<\/p>\n<p>hkenginexepkg.after_changestatetx_event &#8211; Fires after transaction changes state<br \/>\nhkenginexepkg.alloctx_event &#8211;<br \/>\nhkenginexepkg.attempt_committx_event &#8211; Is raised when a transaction is asked to commit<br \/>\nhkenginexepkg.before_changestatetx_event &#8211; Fires before transaction changes state<br \/>\nhkenginexepkg.compute_oldest_active_tx_hint &#8211; Indicates that the oldest active transaction hint has been recalculated<br \/>\nhkenginexepkg.dependency_acquiredtx_event &#8211; Raised after transaction takes a dependency on another transaction<br \/>\nhkenginexepkg.endts_acquiredtx_event &#8211; Fires after transaction acquires an end timestamp<br \/>\nhkenginexepkg.gc_cycle_completed &#8211; Indicates that a GC notification has been enqueued.<br \/>\nhkenginexepkg.gc_notification_enqueued &#8211; Indicates that a GC notification has been enqueued.<br \/>\nhkenginexepkg.redo_single_hk_record &#8211; Redo on a HK log record<br \/>\nhkenginexepkg.update_oldest_active_tx_stats &#8211; Indicates that an attempt is being made to recalculate the GC base generation.<br \/>\nhkenginexepkg.waiting_for_dependenciestx_event &#8211; Raised when we have explicitly waited for dependencies to clear<br \/>\nhkenginexepkg.xtp_checkpoint_file_flush &#8211; Indicates the point at which a given file has been flushed to disk.<br \/>\nhkenginexepkg.xtp_checkpoint_file_flush_complete &#8211; Indicates the point at which all in-flight buffers have been flushed to disk.<br \/>\nhkenginexepkg.xtp_checkpoint_file_read &#8211; Indicates reading of a file in XTP checkpoint recovery.<br \/>\nhkenginexepkg.xtp_checkpoint_write_io &#8211; Indicates that the checkpointing subsystem has issued or completed a write IO.<br \/>\nhkenginexepkg.xtp_create_log_record &#8211; Fires when the XTP engine creates a log record.<br \/>\nhkenginexepkg.xtp_root_file_write &#8211; Indicates that the write of the checkpoint root file is complete.<br \/>\nqds.query_store_async_shutdown_failed &#8211; Fired when query store encounters an error during async query store shutdown<br \/>\nqds.query_store_background_task_creation_failed &#8211; Fired if the background task for QDS data persistence could not be created<br \/>\nqds.query_store_background_task_initialization_failed &#8211; Fired if the background task for QDS data persistence could not be initialized<br \/>\nqds.query_store_background_task_persist_failed &#8211; Fired if the background task for QDS data persistence is not completed successfully<br \/>\nqds.query_store_begin_persist_runtime_stat &#8211; Fired immediately before current runtime statistics for a query plan is persisted to the database.<br \/>\nqds.query_store_bloom_filter_false_positive &#8211; Fired if the Bloom filter for QDS statement texts gives a false positive result<br \/>\nqds.query_store_check_consistency_init_failed &#8211; Fired when check consistency task fails during initialization<br \/>\nqds.query_store_database_initialization_failed &#8211; Fired if initialization of the Query Store for database has failed. The Query Store will be disabled for this database<br \/>\nqds.query_store_disk_size_check_failed &#8211; Fired when a check against Query Store on-disk size limit fails<br \/>\nqds.query_store_disk_size_info &#8211; Fired when a check against QDS on-disk size is performed<br \/>\nqds.query_store_execution_runtime_info &#8211; Fired when runtime information is sent to the query store.<br \/>\nqds.query_store_execution_runtime_info_discarded &#8211; Fired when runtime information sent to the query store is discarded.<br \/>\nqds.query_store_execution_runtime_info_evicted &#8211; Fired when runtime information sent to the query store is evicted.<br \/>\nqds.query_store_flush_failed &#8211; Fired when query store failed to flush dirty data<br \/>\nqds.query_store_loaded &#8211; Fired when query store is loaded<br \/>\nqds.query_store_notify_dirty_shutdown_on_partition_startup &#8211; Fired when previous instance of query store for the partition is shutdown by force in order to allow creation of a new instance<br \/>\nqds.query_store_notify_force_failure_failed &#8211; Fired when query store failed to notify force failure<br \/>\nqds.query_store_persist_task_init_failed &#8211; Fired when persist task fails during initialization<br \/>\nqds.query_store_plan_forcing_failed &#8211; Occurs when forcing of plan from qds fail<br \/>\nqds.query_store_plan_persistence_failure &#8211; Fired if there&#8217;s a failure to persist plan<br \/>\nqds.query_store_plan_removal &#8211; Fired when plan is removed<br \/>\nqds.query_store_query_persistence_failure &#8211; Fired if there&#8217;s a failure to persist query<br \/>\nqds.query_store_read_write_failed &#8211; Fired if the read\/write to Query Store internal tables failed<br \/>\nqds.query_store_statement_not_found &#8211; Fired in case when statement couldn&#8217;t be found due to race condition or ambiguous user request.<br \/>\nqds.query_store_unloaded &#8211; Fired when query store is unloaded from memory<br \/>\nsqlos.nonpreemptive_long_syncio &#8211; record long sync io operation in nonpreemptive worker<br \/>\nsqlos.stuck_dispatcher_callback_executed &#8211; Stuck dispatcher callback executed<br \/>\nsqlos.wait_completed &#8211; Occurs when there is a wait completed on a SQLOS controlled resource.\u00a0 Use this event to track wait completion.<br \/>\nsqlserver.after_natively_compiled_proc_entry_removal_on_drop &#8211; Fired after the procedure cache entry is flushed when dropping a natively compiled procedure.<br \/>\nsqlserver.before_natively_compiled_proc_entry_removal_on_drop &#8211; Fired before the procedure cache entry is flushed when dropping a natively compiled procedure.<br \/>\nsqlserver.before_redo_lsn_update &#8211; Occurs just prior to the update of the EOL LSN<br \/>\nsqlserver.buffer_pool_eviction_thresholds_recalculated &#8211; Lazywriter and\/or worker clock has wrapped the BUF array and thresholds are re-calculated.<br \/>\nsqlserver.buffer_pool_extension_pages_evicted &#8211; Page is evicted from the buffer pool extension cache.<br \/>\nsqlserver.buffer_pool_extension_pages_read &#8211; Page is read from the buffer pool extension cache.<br \/>\nsqlserver.buffer_pool_extension_pages_written &#8211; Page or contiguous set of pages evicted into the buffer pool extension cache.<br \/>\nsqlserver.check_phase_tracing &#8211; Occurs when DBCC CHECK enters a new phase of the checking. Use this event to trace the phases of DBCC CHECK process.<br \/>\nsqlserver.check_thread_message_statistics &#8211; Occurs when a phase of DBCC CHECK is finished. Use this event to collect the number of messages a DBCC CHECK thread has sent or received.<br \/>\nsqlserver.check_thread_page_io_statistics &#8211; Occurs when a phase of DBCC CHECK is finished. Use this event to collect the number of logical, physical, and read-ahead IOs a DBCC CHECK thread has performed.<br \/>\nsqlserver.check_thread_page_latch_statistics &#8211; Occurs when a phase of DBCC CHECK is finished. Use This event to collect the number and time of page latch and IO latch waits.<br \/>\nsqlserver.clustered_columnstore_index_rebuild &#8211; Occurs when clustered index on the table was rebuilt. This event is raised three times for ALTER index rebuild operation on CCSI. The event is raised when the operation takes lock on index rebuild resource, when lock is taken on the table and when S lock on the table is upgraded to SCH_M lock to switch indexes in metadata.<br \/>\nsqlserver.column_store_index_build_low_memory &#8211; Occurs when Storage Engine detects low memory condition and the rowgroup size is reduced.<br \/>\nsqlserver.column_store_index_build_process_segment &#8211; Occurs when a segment is processed<br \/>\nsqlserver.column_store_index_build_throttle &#8211; Shows the statistics of columnstore index build parallelism throttling<br \/>\nsqlserver.columnstore_tuple_mover_begin_compress &#8211; Occurs when column store tuple mover starts compressing a deltastore.<br \/>\nsqlserver.columnstore_tuple_mover_end_compress &#8211; Occurs when column store tuple mover is done compressing a deltastore.<br \/>\nsqlserver.database_xml_deadlock_report &#8211; Produces a deadlock report for a victim, with information scoped to the victim&#8217;s database.<br \/>\nsqlserver.db_lock_acquired_from_cache &#8211; Occurs when a DB lock is acquired from the XactWorkspace DB lock cache.<br \/>\nsqlserver.db_lock_released_from_cache &#8211; Occurs when a DB lock is released from the XactWorkspace DB lock cache.<br \/>\nsqlserver.ddl_with_wait_at_low_priority &#8211; A DDL statement was executed using the WAIT_AT_LOW_PRIORITY options<br \/>\nsqlserver.diag_quantum_end &#8211; Occurs when the diag is notified of quantum end.<br \/>\nsqlserver.dyn_throttle_checkpoint &#8211; Occurs when checkpointing has been dynamically throttled with a new Checkpoint rate.<br \/>\nsqlserver.feature_extension &#8211; Occurs when received and parses data for a feature in feature extension.<br \/>\nsqlserver.file_read_enqueued &#8211; File read enqueued<br \/>\nsqlserver.file_read_throttled &#8211; File read throttled<br \/>\nsqlserver.file_write_enqueued &#8211; File write enqueued<br \/>\nsqlserver.file_write_throttled &#8211; File write throttled<br \/>\nsqlserver.hadr_tds_synchronizer_payload_skip &#8211; Hadron Tds Listener Synchronizer skipped a listener payload because there were no changes since the previous payload.<br \/>\nsqlserver.lock_request_priority_state &#8211; The priority state of a lock request<br \/>\nsqlserver.log_cache_write_block &#8211; Writing a log block to the log cache<br \/>\nsqlserver.logreader_start_scan &#8211; Outputs the replnextlsn value from the database table that the first replcmds scan uses as a starting point.<br \/>\nsqlserver.metadata_ddl_add_column &#8211; Occurs when an ALTER TABLE ADD column operation is updating base index.<br \/>\nsqlserver.metadata_ddl_alter_column &#8211; Occurs when an ALTER TABLE ALTER column operation is updating base index.<br \/>\nsqlserver.metadata_ddl_drop_column &#8211; Occurs when an ALTER TABLE DROP column operation is updating base index.<br \/>\nsqlserver.mixed_extent_activation &#8211; Track mixed extent activation and deactivation operations.<br \/>\nsqlserver.mixed_extent_allocation &#8211; Track mixed extent allocation operations<br \/>\nsqlserver.mixed_extent_deallocation &#8211; Track mixed extent deallocation operations.<br \/>\nsqlserver.mixed_page_allocation &#8211; Track mixed page allocation operations<br \/>\nsqlserver.mixed_page_deallocation &#8211; Track mixed page allocation operations<br \/>\nsqlserver.mixed_page_scan_file &#8211; Track the activity of SGAM scans for mixed page allocation<br \/>\nsqlserver.mixed_page_scan_page &#8211; Track the activity of SGAM scans for mixed page allocation<br \/>\nsqlserver.mixed_page_skipextent &#8211; Track the activity of SGAM scans for mixed page allocation<br \/>\nsqlserver.natively_compiled_proc_execution_started &#8211; Fired before a natively compiled procedure is executed.<br \/>\nsqlserver.optimizer_timeout &#8211; Occurs when the optimizer times out either due to spending too much time or hitting a memory limit.\u00a0 Use this event to look at all the queries that are impacted by the optimizer timeout in a particular workload. This can be very useful when tuning a particular workload.<br \/>\nsqlserver.plan_affecting_convert &#8211; Occurs when a type convert issue affects the plan.\u00a0 The expression value indicates the conversion that can cause inaccurate Cardinality Estimation or prevent from using a seek based plan in the query plan choice.\u00a0 If performance is affected, rewriting the query could help.<br \/>\nsqlserver.process_killed_by_abort_blockers &#8211; A process is killed by an ABORT = BLOCKERS DDL statement<br \/>\nsqlserver.query_execution_batch_hash_aggregation_finished &#8211; Occurs at the end of batch hash aggregation.<br \/>\nsqlserver.query_execution_batch_hash_children_reversed &#8211; Occurs each time when hash join reverses build and probe side while processing data spilled to disk.<br \/>\nsqlserver.query_execution_batch_hash_join_spilled &#8211; Occurs each time when hash join spills some data to disk in batch processing.<br \/>\nsqlserver.query_optimizer_estimate_cardinality &#8211; Occurs when the query optimizer estimates cardinality on a relational expression.<br \/>\nsqlserver.query_optimizer_force_both_cardinality_estimation_behaviors &#8211; Both traceflags 2312 and 9481 were enabled, attempting to force both old and new cardinality estimation behaviors at the same time. The traceflags were ignored. Disable one or both of the traceflags.<br \/>\nsqlserver.query_store_failed_to_capture_query &#8211; Fired if the Query Store failed to capture query. The Query Store will not track statistics for this query<br \/>\nsqlserver.query_store_failed_to_load_forced_plan &#8211; Fired if the query failed to load forced plan from QDS. Forcing policy will not be applied<br \/>\nsqlserver.query_store_persist_on_shutdown_failed &#8211; Occurs when SQL Server fails to store dirty entries in Query Store on database shutdown.<br \/>\nsqlserver.selective_xml_index_no_compatible_sql_type &#8211; Occurs when a value() method is used in a query, specifying a sql type that differs from the type specified during selective XML index creation for that path.<br \/>\nsqlserver.selective_xml_index_no_compatible_xsd_types &#8211; Occurs when the user specifies a different resulting XSD type in a query, than the one that was used to promote the path during selective XML index creation.<br \/>\nsqlserver.selective_xml_index_path_not_indexed &#8211; Occurs when the path given in the user query is not promoted in the selective XML index, and thus the index is not used.<br \/>\nsqlserver.selective_xml_index_path_not_supported &#8211; Occurs when selective XML index is not used for a XML query due to the user using an unsupported path type.<br \/>\nsqlserver.session_recoverable_state_change &#8211; Occurs when the server determines a state change in term of session recovery on a connectionresilency-enabled connection.<br \/>\nsqlserver.spatial_guess &#8211; Occurs when the optimizer cannot get enough join selectivity information.\u00a0 Use this event to look at the queries where spatial index could be used and the optimizer guesses the spatial selectivity.<br \/>\nsqlserver.unmatched_filtered_indexes &#8211; Occurs when the optimizer cannot use a filtered index due to parameterization.\u00a0 For each such index an event is fired.\u00a0 The unmatched_database_name, unmatched_schema_name, unmatched_table_name, unmatched_index_name fields give details of the filtered index that could not be used.<br \/>\nsqlserver.xfcb_blob_properties_obtained &#8211; Windows Azure Storage blob property is obtained from response header.<br \/>\nsqlserver.xfcb_failed_request &#8211; Failed to complete a request to Windows Azure Storage.<br \/>\nsqlserver.xfcb_header_obtained &#8211; Response header is obtained from request to Windows Azure Storage.<br \/>\nsqlserver.xfcb_read_complete &#8211; Read complete from Windows Azure Storage response.<br \/>\nsqlserver.xfcb_request_opened &#8211; A request is opened to Windows Azure Storage.<br \/>\nsqlserver.xfcb_send_complete &#8211; Request send to Windows Azure Storage is complete.<br \/>\nsqlserver.xfcb_write_complete &#8211; Request send to Windows Azure Storage is complete.<br \/>\nsqlserver.xtp_create_procedure &#8211; Occurs at start of XTP procedure creation.<br \/>\nsqlserver.xtp_create_table &#8211; Occurs at start of XTP table creation.<br \/>\nsqlserver.xtp_deploy_done &#8211; Occurs at completion of XTP object deployment.<br \/>\nsqlserver.xtp_matgen &#8211; Occurs at start of MAT generation.<br \/>\nsqlserver.xtp_offline_checkpoint_scan_start &#8211; Fired by XTP offline checkpoint when the checkpoint thread begins.<br \/>\nsqlserver.xtp_offline_checkpoint_scan_stop &#8211; Fired by XTP offline checkpoint when the checkpoint thread stops.<br \/>\nsqlserver.xtp_recover_done &#8211; Occurs at completion of log recovery of XTP table.<br \/>\nsqlserver.xtp_recover_table &#8211; Occurs at start of log recovery of XTP table.<br \/>\nsqlserver.xtp_storage_table_create &#8211; Occurs at just before the XTP storage table is created.<br \/>\nucs.ucs_connection_rejected_by_proxy_whitelist &#8211; After a connection attempt to the UCS proxy endpoint is rejected by whitelist check<br \/>\nucs.ucs_proxy_connect_next_hop &#8211; UCS proxy next hop connection<br \/>\nucs.ucs_proxy_receive_proxy_connect_message &#8211; UCS proxy receive proxy connect message<br \/>\nucs.ucs_proxy_route_add &#8211; UCS proxy route added<br \/>\nucs.ucs_proxy_route_disable &#8211; UCS proxy route disabled<br \/>\nucs.ucs_proxy_route_refresh &#8211; UCS proxy route refreshed<br \/>\nucs.ucs_proxy_send_proxy_connect_message &#8211; UCS proxy send proxy connect message<br \/>\nXeXtpCompilePkg.cgen &#8211; Occurs at start of C code generation.<br \/>\nXeXtpCompilePkg.invoke_cl &#8211; Occurs prior to the invocation of the C compiler.<br \/>\nXeXtpCompilePkg.mat_export &#8211; Occurs at start of MAT export.<br \/>\nXeXtpCompilePkg.pit_export &#8211; Occurs at start of PIT export.<br \/>\nXeXtpCompilePkg.pitgen_procs &#8211; Occurs at start of PIT generation for procedures.<br \/>\nXeXtpCompilePkg.pitgen_tables &#8211; Occurs at start of PIT generation for tables.<br \/>\nXeXtpRuntimePkg.bind_md &#8211; Occurs prior to binding metadata for a memory optimized table.<br \/>\nXeXtpRuntimePkg.bind_tables &#8211; Occurs prior to binding tables for a natively compiled procedure.<br \/>\nXeXtpRuntimePkg.create_table &#8211; Occurs prior to creating memory optimized table.<br \/>\nXeXtpRuntimePkg.deserialize_md &#8211; Occurs prior to deserializing metadata.<br \/>\nXeXtpRuntimePkg.load_dll &#8211; Occurs prior to loading the generated DLL.<br \/>\nXeXtpRuntimePkg.recover_done &#8211; Occurs at completion of checkpoint recovery of a memory optimized table.<br \/>\nXeXtpRuntimePkg.recover_table &#8211; Occurs at start of checkpoint recovery of a memory optimized table.<br \/>\nXeXtpRuntimePkg.serialize_md &#8211; Occurs prior to serializing metadata.<\/p>\n<p>Enjoy.<\/p>\n<p>Cheers, Bob<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Don&#8217;t get me wrong, there&#8217;s almost no one who enjoys a good SQL Profiler diagnostic trace more than I do. But, starting in the early CTPs of SQL Server 2008, I&#8217;ve become impressed with the diagnostic enablement afforded through Extended Events. Enough to hack through that first beta (sans docs, with only metadata) and blog [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,42,41],"tags":[],"class_list":["post-1712","post","type-post","status-publish","format-standard","hentry","category-event-notifications","category-hekaton","category-sql-server-2014"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>More XEvents in SQL Server 2014 CTP1 - don&#039;t wait any longer - Bob Beauchemin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"More XEvents in SQL Server 2014 CTP1 - don&#039;t wait any longer - Bob Beauchemin\" \/>\n<meta property=\"og:description\" content=\"Don&#8217;t get me wrong, there&#8217;s almost no one who enjoys a good SQL Profiler diagnostic trace more than I do. But, starting in the early CTPs of SQL Server 2008, I&#8217;ve become impressed with the diagnostic enablement afforded through Extended Events. Enough to hack through that first beta (sans docs, with only metadata) and blog [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/\" \/>\n<meta property=\"og:site_name\" content=\"Bob Beauchemin\" \/>\n<meta property=\"article:published_time\" content=\"2013-06-27T05:05:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-10-03T01:28:28+00:00\" \/>\n<meta name=\"author\" content=\"Bob Beauchemin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bob Beauchemin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/\",\"name\":\"More XEvents in SQL Server 2014 CTP1 - don't wait any longer - Bob Beauchemin\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website\"},\"datePublished\":\"2013-06-27T05:05:32+00:00\",\"dateModified\":\"2013-10-03T01:28:28+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Event Notifications\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/category\/event-notifications\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"More XEvents in SQL Server 2014 CTP1 &#8211; don&#8217;t wait any longer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/\",\"name\":\"Bob Beauchemin\",\"description\":\"SQL Server Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e\",\"name\":\"Bob Beauchemin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g\",\"caption\":\"Bob Beauchemin\"},\"sameAs\":[\"http:\/www.sqlskills.com\/blogs\/bobb\/\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/author\/bobb\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"More XEvents in SQL Server 2014 CTP1 - don't wait any longer - Bob Beauchemin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/","og_locale":"en_US","og_type":"article","og_title":"More XEvents in SQL Server 2014 CTP1 - don't wait any longer - Bob Beauchemin","og_description":"Don&#8217;t get me wrong, there&#8217;s almost no one who enjoys a good SQL Profiler diagnostic trace more than I do. But, starting in the early CTPs of SQL Server 2008, I&#8217;ve become impressed with the diagnostic enablement afforded through Extended Events. Enough to hack through that first beta (sans docs, with only metadata) and blog [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/","og_site_name":"Bob Beauchemin","article_published_time":"2013-06-27T05:05:32+00:00","article_modified_time":"2013-10-03T01:28:28+00:00","author":"Bob Beauchemin","twitter_misc":{"Written by":"Bob Beauchemin","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/","url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/","name":"More XEvents in SQL Server 2014 CTP1 - don't wait any longer - Bob Beauchemin","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website"},"datePublished":"2013-06-27T05:05:32+00:00","dateModified":"2013-10-03T01:28:28+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/more-xevents-in-sql-server-2014-ctp1-dont-wait-any-longer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/bobb\/"},{"@type":"ListItem","position":2,"name":"Event Notifications","item":"https:\/\/www.sqlskills.com\/blogs\/bobb\/category\/event-notifications\/"},{"@type":"ListItem","position":3,"name":"More XEvents in SQL Server 2014 CTP1 &#8211; don&#8217;t wait any longer"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/","name":"Bob Beauchemin","description":"SQL Server Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/bobb\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e","name":"Bob Beauchemin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g","caption":"Bob Beauchemin"},"sameAs":["http:\/www.sqlskills.com\/blogs\/bobb\/"],"url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/author\/bobb\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts\/1712","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/comments?post=1712"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts\/1712\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/media?parent=1712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/categories?post=1712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/tags?post=1712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}