{"id":480,"date":"2012-08-21T03:42:22","date_gmt":"2012-08-21T03:42:22","guid":{"rendered":"\/blogs\/joe\/post\/Replication-Extended-Events-Not-a-Tool-in-your-Toolbox-(Yet).aspx"},"modified":"2013-01-02T20:31:48","modified_gmt":"2013-01-03T04:31:48","slug":"replication-extended-events-not-a-tool-in-your-toolbox-yet","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/","title":{"rendered":"Replication Extended Events, Not a Tool in your Toolbox (Yet)"},"content":{"rendered":"<p>There are already a number of data sources you can reference when investigating replication issues.&#160; One data source on my wish list was to have a one-stop shop in Extended Events similar to the AlwaysOn Health Session.<\/p>\n<p>It turns out that SQL Server 2012 does have a few new replication related events, but don\u2019t get too excited\u2026 Books Online manages our expectations in the following text (underlined text added by me):<\/p>\n<blockquote>\n<p>\u201cReplication supports Extended Events, however, this feature is for <u>internal use only at this time<\/u>. Replication extended events were added to help customer support engineers collect information to troubleshoot replication problems. <u>The information collected is not useful for replication performance tuning or monitoring<\/u>.\u201d <\/p>\n<\/blockquote>\n<p>There was a dash of hope in the \u201cat this time\u201d qualifier, but that was the only good news I could get from this. But even then, I wanted to be absolutely sure that there were truly no hidden diagnostic data sources that could be leveraged for replication issues.<\/p>\n<p>I found the following potentially promising events in sys.dm_xe_objects:<\/p>\n<blockquote>\n<p>repl_event     <br \/>logreader_process_text_info      <br \/>logreader_process_text_ptr      <br \/>logreader_process_filestream_info      <br \/>logreader_add_compensation_range      <br \/>logreader_add_eor      <br \/>logreader_apply_filter_proc      <\/p>\n<\/blockquote>\n<p>The first one was what I decided to investigate today was \u201crepl_event\u201d.&#160; It is described in sys.dm_xe_objects as \u201cOccurs when sp_repl_generateevent is called. this event is an internal repl event for tracing repl stored procedures. The data that is returned from user_event includes the event_id that was specified in the call to sp_repl_generateevent. This can be a value between x and y.\u201c :<\/p>\n<blockquote>\n<pre class=\"csharpcode\"><span class=\"kwrd\">CREATE<\/span> EVENT <span class=\"kwrd\">SESSION<\/span> [repl_event] <span class=\"kwrd\">ON<\/span> SERVER \r\n<span class=\"kwrd\">ADD<\/span> EVENT sqlserver.repl_event \r\n<span class=\"kwrd\">ADD<\/span> TARGET package0.ring_buffer\r\n<span class=\"kwrd\">WITH<\/span> (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=<span class=\"kwrd\">NONE<\/span>,TRACK_CAUSALITY=<span class=\"kwrd\">OFF<\/span>,STARTUP_STATE=<span class=\"kwrd\">ON<\/span>);\r\n<span class=\"kwrd\">GO<\/span><\/pre>\n<\/blockquote>\n<style type=\"text\/css\">\n.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<p>I started this event session and set up transactional replication (configured the distributor, simple publication, one subscriber).&#160; No events were triggered when I did this.<\/p>\n<p>I then investigated the sp_repl_generateevent procedure itself.&#160; Looking at the definition (or trying), returned the message \u201creplgenerateevent extended procedure\u201d.&#160; <\/p>\n<p>Which objects reference sp_repl_generateevent?&#160; All I could find was sys.sp_MSaddmergetriggers_internal.&#160; The referencing section of the system stored procedure was as follows:<\/p>\n<blockquote>\n<p>select @command2 = &#8216;<br \/>\n    <br \/>&#160;&#160;&#160;&#160;&#160;&#160; &#8212; update any ppm row that already exist with this gen<\/p>\n<p>&#160;&#160;&#160;&#160;&#160;&#160; update ppm set ppm.generation = case when @is_mergeagent = 1 then 0 else @newgen end<\/p>\n<p>&#160;&#160;&#160;&#160;&#160;&#160; from &#8216; + @quoted_past_mappings_viewname + &#8216; ppm with (rowlock) inner join deleted v<\/p>\n<p>&#160;&#160;&#160;&#160;&#160;&#160; on ppm.tablenick =@tablenick&#160; and ppm.rowguid = v.&#8217; + @quoted_rgcol + &#8216;<\/p>\n<p>&#160;&#160;&#160;&#160;&#160;&#160; &#8212; insert the past partition mapping into gen 0 if this is the merge agent <\/p>\n<p>&#160;&#160;&#160;&#160;&#160; insert into &#8216; + @quoted_past_mappings_viewname + &#8216; with (rowlock) (publication_number, tablenick, rowguid, partition_id, generation,reason)<\/p>\n<p>&#160;&#160;&#160;&#160;&#160; select distinct &#8216; + convert(nvarchar(100), @publication_number) + &#8216;, @tablenick, v.&#8217; + @quoted_rgcol + &#8216;, v.partition_id, case when @is_mergeagent = 1 then 0 else @newgen end, 1<\/p>\n<p>&#160;&#160;&#160;&#160;&#160; from ( &#8216; + @partition_deleted_view_rule + &#8216; ) as v&#160;&#160; <br \/>&#160;&#160;&#160;&#160;&#160; if (@@ROWCOUNT &lt;= 0)<\/p>\n<p>&#160;&#160;&#160;&#160;&#160; begin<\/p>\n<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; select @xe_message = CAST(&#8221;replica_id: &#8221; + convert(nvarchar(100), @replnick) + &#8221;, article_id: &#8221; + convert(nvarchar(100), @tablenick) + &#8221;, rowguid: &#8221; + case when @article_rows_deleted = 1 then convert(nvarchar(100), @rowguid) else N&#8221;0&#8221; end + &#8221;, generation: &#8221; + case when @is_mergeagent = 1 then N&#8221;0&#8221; else convert(nvarchar(100), @newgen) end + &#8221;, Reason: -1&#8221; AS varbinary(1000));<\/p>\n<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font style=\"background-color: #ffff00\"><font style=\"style\">&#160; exec master..sp_repl_generateevent 1, N&#8221;Event : ppm_insert&#8221;<\/font>, @xe_message<\/font><\/p>\n<p>&#160;&#160;&#160;&#160;&#160; end<\/p>\n<p>&#160;&#160;&#160;&#160;&#160; &#8216;<\/p>\n<p><\/p>\n<\/blockquote>\n<p>Since I was on a test SQL Server instance, I thought I would test out a direct call to this procedure just to indeed see that this procedure was hooked to the repl_event:<\/p>\n<blockquote>\n<pre class=\"csharpcode\"><span class=\"kwrd\">DECLARE<\/span> @xe_message varbinary(1000) = \r\n    <span class=\"kwrd\">CAST<\/span>(<span class=\"str\">'Event payload'<\/span> <span class=\"kwrd\">AS<\/span> varbinary(1000));\r\n\r\n<span class=\"kwrd\">EXEC<\/span> sp_repl_generateevent 1, N<span class=\"str\">'Event: Am I captured?'<\/span>, @xe_message;<\/pre>\n<\/blockquote>\n<style type=\"text\/css\">\n.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<p>Sure enough \u2013 the repl_event was fired:<\/p>\n<p><a href=\"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/replication-extended-events-in-sql-serve\/14cfb4c8\/image.png\"><img fetchpriority=\"high\" decoding=\"async\" style=\"background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/replication-extended-events-in-sql-serve\/6d956b92\/image_thumb.png\" width=\"389\" height=\"278\" \/><\/a><\/p>\n<p>&#160;<\/p>\n<p>Whether repl_event gets leveraged in the future, we\u2019ll see.&#160; If Microsoft implements this in the future, my wish list would include the following events (and knowing that we can capture these in other areas \u2013 but again I\u2019m interested in a consolidated session):<\/p>\n<ul>\n<li>Replication configuration events (creation, dropping, changes)<\/li>\n<li>Agent statistics, like periodic reader\/writer thread latency statistics<\/li>\n<li>Subscription expirations<\/li>\n<li>Conflicts<\/li>\n<li>Failed replication jobs and retries<\/li>\n<li>Data sync warnings<\/li>\n<li>Interoperability events (for example \u2013 database mirroring failovers of the publication database)<\/li>\n<\/ul>\n<p>I may investigate the logreader_* related events at some point, but based on the naming and descriptions of these events I don\u2019t see significant use cases at this time.<\/p>\n<p>If you run across any other replication related events that you find useful, please share your comments on this post.&#160; Thanks!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are already a number of data sources you can reference when investigating replication issues.&#160; One data source on my wish list was to have a one-stop shop in Extended Events similar to the AlwaysOn Health Session. It turns out that SQL Server 2012 does have a few new replication related events, but don\u2019t get [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30],"tags":[],"class_list":["post-480","post","type-post","status-publish","format-standard","hentry","category-replication"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Replication Extended Events, Not a Tool in your Toolbox (Yet) - Joe Sack<\/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\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Replication Extended Events, Not a Tool in your Toolbox (Yet) - Joe Sack\" \/>\n<meta property=\"og:description\" content=\"There are already a number of data sources you can reference when investigating replication issues.&#160; One data source on my wish list was to have a one-stop shop in Extended Events similar to the AlwaysOn Health Session. It turns out that SQL Server 2012 does have a few new replication related events, but don\u2019t get [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/\" \/>\n<meta property=\"og:site_name\" content=\"Joe Sack\" \/>\n<meta property=\"article:published_time\" content=\"2012-08-21T03:42:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-01-03T04:31:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/replication-extended-events-in-sql-serve\/6d956b92\/image_thumb.png\" \/>\n<meta name=\"author\" content=\"Joseph Sack\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joseph Sack\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/\",\"name\":\"Replication Extended Events, Not a Tool in your Toolbox (Yet) - Joe Sack\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#website\"},\"datePublished\":\"2012-08-21T03:42:22+00:00\",\"dateModified\":\"2013-01-03T04:31:48+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Replication\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/category\/replication\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Replication Extended Events, Not a Tool in your Toolbox (Yet)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/\",\"name\":\"Joe Sack\",\"description\":\"SQL Server Performance Tuning, High Availability and Disaster Recovery Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648\",\"name\":\"Joseph Sack\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g\",\"caption\":\"Joseph Sack\"},\"description\":\"Joe Sack is a Principal Consultant with SQLskills. He has worked as a SQL Server professional since 1997 and has supported and developed for SQL Server environments in financial services, IT consulting, manufacturing, retail and the real estate industry. Prior to joining SQLskills he worked at Microsoft as a Premier Field Engineer supporting very large enterprise customer environments. He was responsible for providing deep SQL Server advisory services, training, troubleshooting and ongoing solutions guidance. His areas of expertise include performance tuning, scalability, T-SQL development and high-availability. In 2006 Joe earned the \u201cMicrosoft Certified Master: SQL Server 2005\u201d certification and in 2008 he earned the \u201cMicrosoft Certified Master: SQL Server 2008\u201d certification. In 2009 he took over responsibility for the entire SQL Server Microsoft Certified Master program and held that post until 2011. He was given the SQL Server MVP award in 2013.\",\"sameAs\":[\"http:\/\/3.209.169.194\/blogs\/joe\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/josephsack\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/author\/joe\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Replication Extended Events, Not a Tool in your Toolbox (Yet) - Joe Sack","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\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/","og_locale":"en_US","og_type":"article","og_title":"Replication Extended Events, Not a Tool in your Toolbox (Yet) - Joe Sack","og_description":"There are already a number of data sources you can reference when investigating replication issues.&#160; One data source on my wish list was to have a one-stop shop in Extended Events similar to the AlwaysOn Health Session. It turns out that SQL Server 2012 does have a few new replication related events, but don\u2019t get [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/","og_site_name":"Joe Sack","article_published_time":"2012-08-21T03:42:22+00:00","article_modified_time":"2013-01-03T04:31:48+00:00","og_image":[{"url":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/replication-extended-events-in-sql-serve\/6d956b92\/image_thumb.png"}],"author":"Joseph Sack","twitter_misc":{"Written by":"Joseph Sack","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/","url":"https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/","name":"Replication Extended Events, Not a Tool in your Toolbox (Yet) - Joe Sack","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#website"},"datePublished":"2012-08-21T03:42:22+00:00","dateModified":"2013-01-03T04:31:48+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/replication-extended-events-not-a-tool-in-your-toolbox-yet\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/joe\/"},{"@type":"ListItem","position":2,"name":"Replication","item":"https:\/\/www.sqlskills.com\/blogs\/joe\/category\/replication\/"},{"@type":"ListItem","position":3,"name":"Replication Extended Events, Not a Tool in your Toolbox (Yet)"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/joe\/","name":"Joe Sack","description":"SQL Server Performance Tuning, High Availability and Disaster Recovery Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/joe\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648","name":"Joseph Sack","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g","caption":"Joseph Sack"},"description":"Joe Sack is a Principal Consultant with SQLskills. He has worked as a SQL Server professional since 1997 and has supported and developed for SQL Server environments in financial services, IT consulting, manufacturing, retail and the real estate industry. Prior to joining SQLskills he worked at Microsoft as a Premier Field Engineer supporting very large enterprise customer environments. He was responsible for providing deep SQL Server advisory services, training, troubleshooting and ongoing solutions guidance. His areas of expertise include performance tuning, scalability, T-SQL development and high-availability. In 2006 Joe earned the \u201cMicrosoft Certified Master: SQL Server 2005\u201d certification and in 2008 he earned the \u201cMicrosoft Certified Master: SQL Server 2008\u201d certification. In 2009 he took over responsibility for the entire SQL Server Microsoft Certified Master program and held that post until 2011. He was given the SQL Server MVP award in 2013.","sameAs":["http:\/\/3.209.169.194\/blogs\/joe","https:\/\/twitter.com\/https:\/\/twitter.com\/josephsack"],"url":"https:\/\/www.sqlskills.com\/blogs\/joe\/author\/joe\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts\/480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/comments?post=480"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts\/480\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/media?parent=480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/categories?post=480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/tags?post=480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}