{"id":531,"date":"2011-03-13T11:30:00","date_gmt":"2011-03-13T11:30:00","guid":{"rendered":"\/blogs\/jonathan\/post\/Sanitizing-Execution-Plans-using-Powershell.aspx"},"modified":"2017-04-13T13:05:41","modified_gmt":"2017-04-13T17:05:41","slug":"sanitizing-execution-plans-using-powershell","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/","title":{"rendered":"Sanitizing Execution Plans using Powershell"},"content":{"rendered":"<p>A few weeks ago I tweeted a couple of images showing a really nasty execution plan in <a href=\"https:\/\/www.sqlsentry.com\/plan-explorer\/sql-server-query-view.asp\" target=\"_blank\">SQL Sentry&rsquo;s free Plan Explorer tool<\/a> being displayed on a 65 inch touch screen LCD monitor.<\/p>\n<p align=\"center\"><a href=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/windowslivewriter\/sanitizingexecutionplansusingpowershell\/1083966b\/largeplanexplorerplan.jpg\" target=\"_blank\"><img decoding=\"async\" style=\"display: inline; border-width: 0px\" src=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/windowslivewriter\/sanitizingexecutionplansusingpowershell\/5cdb2a0c\/largeplanexplorerplan_thumb.jpg\" border=\"0\" alt=\"Large Plan Explorer Plan\" title=\"Large Plan Explorer Plan\" width=\"244\" height=\"183\" \/><\/a> <a href=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/windowslivewriter\/sanitizingexecutionplansusingpowershell\/4e307e27\/largeplanexplorerplan2.jpg\" target=\"_blank\"><img decoding=\"async\" style=\"display: inline; border-width: 0px\" src=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/windowslivewriter\/sanitizingexecutionplansusingpowershell\/11b8097d\/largeplanexplorerplan2_thumb.jpg\" border=\"0\" alt=\"Large Plan Explorer Plan2\" title=\"Large Plan Explorer Plan2\" width=\"244\" height=\"183\" \/><\/a> <\/p>\n<p>&nbsp;<\/p>\n<p>I&rsquo;ve been using Plan Explorer to look at execution plans since its early beta&rsquo;s, when it was known as Plan Viewer, after seeing a demo of <a href=\"https:\/\/www.sqlsentry.com\/performance-advisor\/sql-server-performance.asp\">Performance Advisor v6<\/a> by Greg Gonzalez (<a href=\"http:\/\/greg.blogs.sqlsentry.net\/\" target=\"_blank\">Blog<\/a>|<a href=\"https:\/\/twitter.com\/sqlsensei\" target=\"_blank\">Twitter<\/a>).&nbsp; During the beta I provided a lot of feed back to Greg and I pushed the tool to its limits a couple of times with some of the nasty execution plans I had.&nbsp; In the case of the plan shown above, Management Studio falls to its knees trying to manage the plan, and is everything except useful when the plan is open, but Plan Explorer handles it without a hitch.<\/p>\n<p>After posting these images and getting some comments, I began to realize how useful this type of plan could be in doing demo&rsquo;s of the tool, but one of the problems with an execution plan is that it contains a lot of very specific information about the database structures and code that could be considered intellectual property.&nbsp; It is possible to retain the integrity of the plan structure, and what it shows, while removing all of the object and statement information from the plan by replacing them with meaningless values.&nbsp; During the beta&rsquo;s I did this a couple of times when I came across an issue, or thought of a useful feature, but it was always a painstaking manual process.&nbsp; This time I set out to do it with Powershell by parsing the XML Showplan and performing replace operations on the XML nodes.&nbsp; <\/p>\n<p>Loading the XML Showplan from a .sqlplan file is relatively straightforward, and I&rsquo;ve done quite a bit of plan shredding in the past, so I thought this would be a very simple task to complete.&nbsp; It turns out that I had a bit to learn about processing XML in .NET and by extension Powershell.&nbsp; The first problem I encountered was how to use the ShowPlan XmlNamespace so that I could shred the document to find the elements of interest.&nbsp; This is accomplished using the XmlNamespaceManager in .NET.<\/p>\n<blockquote>\n<p>\t\t\t\t\t\t\t<span class=\"Apple-style-span\" style=\"white-space: pre\"><span style=\"color: #008000\">#<\/span><span style=\"color: #008000\">Setup the XmlNamespaceManager and add the ShowPlan Namespace to it.\t\t<\/span><\/span>\t\t\t\t\t<\/p>\n<p>\t\t\t\t\t<span class=\"Apple-style-span\" style=\"white-space: pre\"><span style=\"color: #008000\"><\/span><\/span><span class=\"Apple-style-span\" style=\"white-space: pre\"><span style=\"color: #800080\">$nsMgr<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #ff0000\">=<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #5f9ea0; font-weight: bold\">new-object<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #800000\">&#39;<\/span><span style=\"color: #800000\">System.Xml.XmlNamespaceManager<\/span><span style=\"color: #800000\">&#39;<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #800080\">$xml<\/span><span style=\"color: #000000\">.NameTable;\t\t<\/span><\/span>\t\t\t\t\t<\/p>\n<p>\t\t\t\t\t<span class=\"Apple-style-span\" style=\"white-space: pre\"><span style=\"color: #000000\"><\/span><\/span><span class=\"Apple-style-span\" style=\"white-space: pre\"><span style=\"color: #800080\">$nsMgr<\/span><span style=\"color: #000000\">.AddNamespace(<\/span><span style=\"color: #800000\">&quot;<\/span><span style=\"color: #800000\">sm<\/span><span style=\"color: #800000\">&quot;<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #800000\">&quot;<\/span><span style=\"color: #800000\">http:\/\/schemas.microsoft.com\/sqlserver\/2004\/07\/showplan<\/span><span style=\"color: #800000\">&quot;<\/span><span style=\"color: #000000\">);<\/span><\/span>\t\t\t\t\t\t\t<\/p>\n<\/blockquote>\n<p>The SelectNodes() method of the .NET XmlDocument is overloaded and accepts an XPath and XmlNamespaceManager to determine the nodes to select from the XmlDocument.&nbsp; With the correct nodes selected replacing the information as easy as setting a new value for the the element of interest.<\/p>\n<blockquote>\n<p>\t\t\t\t\t\t\t<span class=\"Apple-style-span\" style=\"white-space: pre\"><span style=\"color: #008000\">#<\/span><span style=\"color: #008000\">Replace the StatementText for all statements\t\t<\/span><\/span>\t\t\t\t\t<\/p>\n<p>\t\t\t\t\t<span class=\"Apple-style-span\" style=\"white-space: pre\"><span style=\"color: #008000\"><\/span><\/span><span class=\"Apple-style-span\" style=\"white-space: pre\"><span style=\"color: #800080\">$xml<\/span><span style=\"color: #000000\">.SelectNodes(<\/span><span style=\"color: #800000\">&quot;<\/span><span style=\"color: #800000\">\/\/sm:StmtSimple<\/span><span style=\"color: #800000\">&quot;<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #800080\">$nsMgr<\/span><span style=\"color: #000000\">) | <\/span><span style=\"color: #5f9ea0; font-weight: bold\">%<\/span><span style=\"color: #000000\"> {<\/span><\/span>\t\t\t\t\t<\/p>\n<p>\t\t\t\t\t<span class=\"Apple-style-span\" style=\"white-space: pre\"><span style=\"color: #000000\">\t<\/span><\/span><span class=\"Apple-style-span\" style=\"white-space: pre\">   <\/span><span class=\"Apple-style-span\" style=\"white-space: pre\"> <span style=\"color: #800080\">$_<\/span><span style=\"color: #000000\">.StatementText <\/span><span style=\"color: #ff0000\">=<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #800000\">&quot;<\/span><span style=\"color: #800000\">&#8211;Statement text stripped by ExecutionPlanSanitizer Powershell Script (https:\/\/www.sqlskills.com\/blogs\/jonathan)<\/span><span style=\"color: #800000\">&quot;<\/span><span style=\"color: #000000\"> }<\/span><\/span>&nbsp;\t\t\t\t\t<\/p>\n<\/blockquote>\n<p>The attached Powershell script replaces the statements, database names, object names, index names, non-dbo schema names,&nbsp; and column names of the input file and then writes the new plan to an output file that still conforms to the schema and can be shared without sharing intellectual property.<\/p>\n<p><a href=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/2011\/3\/executionplansanitizer.ps1\">ExecutionPlanSanitizer.ps1 (3.26 kb)<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A few weeks ago I tweeted a couple of images showing a really nasty execution plan in SQL Sentry&rsquo;s free Plan Explorer tool being displayed on a 65 inch touch screen LCD monitor. &nbsp; I&rsquo;ve been using Plan Explorer to look at execution plans since its early beta&rsquo;s, when it was known as Plan Viewer, [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22,32],"tags":[],"class_list":["post-531","post","type-post","status-publish","format-standard","hentry","category-execution-plans","category-powershell"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Sanitizing Execution Plans using Powershell - Jonathan Kehayias<\/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\/jonathan\/sanitizing-execution-plans-using-powershell\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sanitizing Execution Plans using Powershell - Jonathan Kehayias\" \/>\n<meta property=\"og:description\" content=\"A few weeks ago I tweeted a couple of images showing a really nasty execution plan in SQL Sentry&rsquo;s free Plan Explorer tool being displayed on a 65 inch touch screen LCD monitor. &nbsp; I&rsquo;ve been using Plan Explorer to look at execution plans since its early beta&rsquo;s, when it was known as Plan Viewer, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/\" \/>\n<meta property=\"og:site_name\" content=\"Jonathan Kehayias\" \/>\n<meta property=\"article:published_time\" content=\"2011-03-13T11:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-13T17:05:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/windowslivewriter\/sanitizingexecutionplansusingpowershell\/5cdb2a0c\/largeplanexplorerplan_thumb.jpg\" \/>\n<meta name=\"author\" content=\"Jonathan Kehayias\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jonathan Kehayias\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/\"},\"author\":{\"name\":\"Jonathan Kehayias\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"headline\":\"Sanitizing Execution Plans using Powershell\",\"datePublished\":\"2011-03-13T11:30:00+00:00\",\"dateModified\":\"2017-04-13T17:05:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/\"},\"wordCount\":550,\"commentCount\":3,\"image\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/windowslivewriter\\\/sanitizingexecutionplansusingpowershell\\\/5cdb2a0c\\\/largeplanexplorerplan_thumb.jpg\",\"articleSection\":[\"Execution Plans\",\"Powershell\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/\",\"name\":\"Sanitizing Execution Plans using Powershell - Jonathan Kehayias\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/windowslivewriter\\\/sanitizingexecutionplansusingpowershell\\\/5cdb2a0c\\\/largeplanexplorerplan_thumb.jpg\",\"datePublished\":\"2011-03-13T11:30:00+00:00\",\"dateModified\":\"2017-04-13T17:05:41+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/windowslivewriter\\\/sanitizingexecutionplansusingpowershell\\\/5cdb2a0c\\\/largeplanexplorerplan_thumb.jpg\",\"contentUrl\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/wp-content\\\/uploads\\\/windowslivewriter\\\/sanitizingexecutionplansusingpowershell\\\/5cdb2a0c\\\/largeplanexplorerplan_thumb.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/sanitizing-execution-plans-using-powershell\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Execution Plans\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/category\\\/execution-plans\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Sanitizing Execution Plans using Powershell\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\",\"name\":\"Jonathan Kehayias - The Rambling DBA\",\"description\":\"The Rambling DBA\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/?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\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\",\"name\":\"Jonathan Kehayias\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"caption\":\"Jonathan Kehayias\"},\"sameAs\":[\"http:\\\/\\\/3.209.169.194\\\/blogs\\\/jonathan\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Sanitizing Execution Plans using Powershell - Jonathan Kehayias","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\/jonathan\/sanitizing-execution-plans-using-powershell\/","og_locale":"en_US","og_type":"article","og_title":"Sanitizing Execution Plans using Powershell - Jonathan Kehayias","og_description":"A few weeks ago I tweeted a couple of images showing a really nasty execution plan in SQL Sentry&rsquo;s free Plan Explorer tool being displayed on a 65 inch touch screen LCD monitor. &nbsp; I&rsquo;ve been using Plan Explorer to look at execution plans since its early beta&rsquo;s, when it was known as Plan Viewer, [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/","og_site_name":"Jonathan Kehayias","article_published_time":"2011-03-13T11:30:00+00:00","article_modified_time":"2017-04-13T17:05:41+00:00","og_image":[{"url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/windowslivewriter\/sanitizingexecutionplansusingpowershell\/5cdb2a0c\/largeplanexplorerplan_thumb.jpg","type":"","width":"","height":""}],"author":"Jonathan Kehayias","twitter_misc":{"Written by":"Jonathan Kehayias","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/#article","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/"},"author":{"name":"Jonathan Kehayias","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"headline":"Sanitizing Execution Plans using Powershell","datePublished":"2011-03-13T11:30:00+00:00","dateModified":"2017-04-13T17:05:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/"},"wordCount":550,"commentCount":3,"image":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/windowslivewriter\/sanitizingexecutionplansusingpowershell\/5cdb2a0c\/largeplanexplorerplan_thumb.jpg","articleSection":["Execution Plans","Powershell"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/","name":"Sanitizing Execution Plans using Powershell - Jonathan Kehayias","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/#primaryimage"},"image":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/windowslivewriter\/sanitizingexecutionplansusingpowershell\/5cdb2a0c\/largeplanexplorerplan_thumb.jpg","datePublished":"2011-03-13T11:30:00+00:00","dateModified":"2017-04-13T17:05:41+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/#primaryimage","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/windowslivewriter\/sanitizingexecutionplansusingpowershell\/5cdb2a0c\/largeplanexplorerplan_thumb.jpg","contentUrl":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-content\/uploads\/windowslivewriter\/sanitizingexecutionplansusingpowershell\/5cdb2a0c\/largeplanexplorerplan_thumb.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/sanitizing-execution-plans-using-powershell\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/"},{"@type":"ListItem","position":2,"name":"Execution Plans","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/category\/execution-plans\/"},{"@type":"ListItem","position":3,"name":"Sanitizing Execution Plans using Powershell"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/","name":"Jonathan Kehayias - The Rambling DBA","description":"The Rambling DBA","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/?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\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c","name":"Jonathan Kehayias","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","caption":"Jonathan Kehayias"},"sameAs":["http:\/\/3.209.169.194\/blogs\/jonathan"]}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/comments?post=531"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/531\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/media?parent=531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/categories?post=531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/tags?post=531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}