{"id":4523,"date":"2015-06-09T10:02:39","date_gmt":"2015-06-09T17:02:39","guid":{"rendered":"http:\/\/3.209.169.194\/blogs\/paul\/?p=4523"},"modified":"2017-04-13T11:40:40","modified_gmt":"2017-04-13T18:40:40","slug":"t-sql-tuesday-67-monitoring-log-activity-with-extended-events","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/","title":{"rendered":"T-SQL Tuesday #67 &#8211; monitoring log activity with Extended Events"},"content":{"rendered":"<p><a href=\"http:\/\/blogs.lessthandot.com\/index.php\/uncategorized\/youre-invited-to-t-sql-tuesday-67-extended-events\/\"><img decoding=\"async\" class=\" size-full wp-image-4473 alignnone\" src=\"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/02\/tsql2sday150x150_388014a5.jpg\" alt=\"TSQL2sDay150x150_388014A5\" width=\"154\" height=\"154\" \/><\/a><\/p>\n<p>On the second Tuesday of each month, many people in the SQL Server community join together to all blog on the same topic &#8211; a cool idea from Adam Machanic many years ago.<\/p>\n<p>This month&#8217;s topic is Extended Events, hosted by Jes Borland (<a href=\"http:\/\/blogs.lessthandot.com\/index.php\/author\/grrlgeek\/\" target=\"_blank\">b<\/a> | <a href=\"https:\/\/mobile.twitter.com\/grrl_geek\" target=\"_blank\">t<\/a>) &#8211; you can see her original post <a href=\"http:\/\/blogs.lessthandot.com\/index.php\/uncategorized\/youre-invited-to-t-sql-tuesday-67-extended-events\/\" target=\"_blank\">here<\/a>.<\/p>\n<p>Yesterday in class I was discussing monitoring transaction log activity with a student, to show that when a transaction commits, there is a write to the transaction log file. This is easy to do with Extended Events.<\/p>\n<p>I&#8217;m going to use the\u00a0<em>file_write_completed<\/em>\u00a0event to track writes occurring and the\u00a0<em>transaction_log<\/em> event to watch log records being generated so we can see transactions committing.<\/p>\n<p>First of all I&#8217;ll setup my simple scenario:<\/p>\n<pre class=\"brush: sql; title: ; toolbar: true; wrap-lines: true; notranslate\" title=\"\">\r\nUSE &#x5B;master];\r\nGO\r\n\r\nIF DATABASEPROPERTYEX (N'Test', N'Version') &gt; 0\r\nBEGIN\r\n\tALTER DATABASE &#x5B;Test] SET SINGLE_USER\r\n\t\tWITH ROLLBACK IMMEDIATE;\r\n\tDROP DATABASE &#x5B;Test];\r\nEND\r\nGO\r\n\r\nCREATE DATABASE &#x5B;Test] ON PRIMARY (\r\n    NAME = N'Test_data',\r\n    FILENAME = N'D:\\SQLskills\\Test_data.mdf')\r\nLOG ON (\r\n    NAME = N'Test_log',\r\n    FILENAME = N'C:\\SQLskills\\Test_log.ldf',\r\n    SIZE = 1MB,\r\n    FILEGROWTH = 0MB);\r\nGO\r\n\r\nUSE &#x5B;test];\r\nGO\r\n\r\nCREATE TABLE TestTable (\r\n\tc1 INT IDENTITY,\r\n\tc2 CHAR (1000) DEFAULT 'a');\r\nGO\r\n\r\nINSERT INTO &#x5B;TestTable] DEFAULT VALUES;\r\nGO\r\n<\/pre>\n<p>And here&#8217;s the simple Extended Event session:<\/p>\n<pre class=\"brush: sql; title: ; toolbar: true; wrap-lines: true; notranslate\" title=\"\">\r\n-- Drop the session if it exists. \r\nIF EXISTS (\r\n\tSELECT * FROM sys.server_event_sessions\r\n\t\tWHERE &#x5B;name] = N'MonitorLog')\r\n    DROP EVENT SESSION &#x5B;MonitorLog] ON SERVER\r\nGO\r\n\r\n-- Create the event session\r\nCREATE EVENT SESSION &#x5B;MonitorLog] ON SERVER\r\n\tADD EVENT &#x5B;sqlserver].&#x5B;file_write_completed],\r\n\tADD EVENT &#x5B;sqlserver].&#x5B;transaction_log]\r\n\tADD TARGET &#x5B;package0].&#x5B;ring_buffer]\r\n\t\tWITH (MAX_MEMORY = 50MB, max_dispatch_latency = 1 seconds)\r\nGO\r\n\r\n-- Start the session\r\nALTER EVENT SESSION &#x5B;MonitorLog] ON SERVER\r\nSTATE = START;\r\nGO\r\n<\/pre>\n<p>I ran both of those scripts, then executed the\u00a0<em>INSERT<\/em> a few times.<\/p>\n<p>Now if I go to Object Explorer, I can use the Live Data Viewer (in SQL Server 2012 onwards). Find the session, right-click on it and select Watch Live Data.<\/p>\n<p><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/06\/watchlivedata.jpg\"><img fetchpriority=\"high\" decoding=\"async\" class=\" size-full wp-image-4524 alignnone\" src=\"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/06\/watchlivedata.jpg\" alt=\"WatchLiveData\" width=\"338\" height=\"305\" \/><\/a><\/p>\n<p>Choose the following columns to view (right click on any column name and select Choose Columns&#8230;): name, timestamp, database_id, file_id, size, operation.<\/p>\n<p>And then run another\u00a0<em>INSERT<\/em> (you might have to run two to make the first set of data show in the Viewer) and you&#8217;ll see data like below.<\/p>\n<p><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/06\/livedata.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-4525\" src=\"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/06\/livedata.jpg\" alt=\"LiveData\" width=\"797\" height=\"275\" \/><\/a><\/p>\n<p>And then you can play around and watch stuff happening.<\/p>\n<p>Enjoy! (and check out the other posts from this T-SQL Tuesday)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>On the second Tuesday of each month, many people in the SQL Server community join together to all blog on the same topic &#8211; a cool idea from Adam Machanic many years ago. This month&#8217;s topic is Extended Events, hosted by Jes Borland (b | t) &#8211; you can see her original post here. Yesterday [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39,98],"tags":[],"class_list":["post-4523","post","type-post","status-publish","format-standard","hentry","category-extended-events","category-transaction-log"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>T-SQL Tuesday #67 - monitoring log activity with Extended Events - Paul S. Randal<\/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\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"T-SQL Tuesday #67 - monitoring log activity with Extended Events - Paul S. Randal\" \/>\n<meta property=\"og:description\" content=\"On the second Tuesday of each month, many people in the SQL Server community join together to all blog on the same topic &#8211; a cool idea from Adam Machanic many years ago. This month&#8217;s topic is Extended Events, hosted by Jes Borland (b | t) &#8211; you can see her original post here. Yesterday [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/\" \/>\n<meta property=\"og:site_name\" content=\"Paul S. Randal\" \/>\n<meta property=\"article:published_time\" content=\"2015-06-09T17:02:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-13T18:40:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/02\/tsql2sday150x150_388014a5.jpg\" \/>\n<meta name=\"author\" content=\"Paul Randal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Paul Randal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/\",\"name\":\"T-SQL Tuesday #67 - monitoring log activity with Extended Events - Paul S. Randal\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/02\/tsql2sday150x150_388014a5.jpg\",\"datePublished\":\"2015-06-09T17:02:39+00:00\",\"dateModified\":\"2017-04-13T18:40:40+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/#primaryimage\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/02\/TSQL2sDay150x150_388014A5.jpg\",\"contentUrl\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/02\/TSQL2sDay150x150_388014A5.jpg\",\"width\":154,\"height\":154},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"T-SQL Tuesday #67 &#8211; monitoring log activity with Extended Events\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\",\"name\":\"Paul S. Randal\",\"description\":\"In Recovery...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\",\"name\":\"Paul Randal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g\",\"caption\":\"Paul Randal\"},\"sameAs\":[\"http:\/\/3.209.169.194\/blogs\/paul\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/author\/paul\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"T-SQL Tuesday #67 - monitoring log activity with Extended Events - Paul S. Randal","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\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/","og_locale":"en_US","og_type":"article","og_title":"T-SQL Tuesday #67 - monitoring log activity with Extended Events - Paul S. Randal","og_description":"On the second Tuesday of each month, many people in the SQL Server community join together to all blog on the same topic &#8211; a cool idea from Adam Machanic many years ago. This month&#8217;s topic is Extended Events, hosted by Jes Borland (b | t) &#8211; you can see her original post here. Yesterday [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/","og_site_name":"Paul S. Randal","article_published_time":"2015-06-09T17:02:39+00:00","article_modified_time":"2017-04-13T18:40:40+00:00","og_image":[{"url":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/02\/tsql2sday150x150_388014a5.jpg","type":"","width":"","height":""}],"author":"Paul Randal","twitter_misc":{"Written by":"Paul Randal","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/","name":"T-SQL Tuesday #67 - monitoring log activity with Extended Events - Paul S. Randal","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/#primaryimage"},"image":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/02\/tsql2sday150x150_388014a5.jpg","datePublished":"2015-06-09T17:02:39+00:00","dateModified":"2017-04-13T18:40:40+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/#primaryimage","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/02\/TSQL2sDay150x150_388014A5.jpg","contentUrl":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2015\/02\/TSQL2sDay150x150_388014A5.jpg","width":154,"height":154},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/t-sql-tuesday-67-monitoring-log-activity-with-extended-events\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/paul\/"},{"@type":"ListItem","position":2,"name":"T-SQL Tuesday #67 &#8211; monitoring log activity with Extended Events"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/","name":"Paul S. Randal","description":"In Recovery...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/paul\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce","name":"Paul Randal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g","caption":"Paul Randal"},"sameAs":["http:\/\/3.209.169.194\/blogs\/paul"],"url":"https:\/\/www.sqlskills.com\/blogs\/paul\/author\/paul\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/4523","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/comments?post=4523"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/4523\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/media?parent=4523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/categories?post=4523"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/tags?post=4523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}