{"id":2041,"date":"2017-03-02T14:38:45","date_gmt":"2017-03-02T19:38:45","guid":{"rendered":"http:\/\/3.209.169.194\/blogs\/jonathan\/?p=2041"},"modified":"2017-04-13T13:05:58","modified_gmt":"2017-04-13T17:05:58","slug":"exception-calling-initializeasreader-in-powershell-reading-trace-files","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/","title":{"rendered":"Exception calling &#8220;InitializeAsReader&#8221; in PowerShell Reading Trace Files"},"content":{"rendered":"<p>Today I needed to process some results files from Distributed Replay to compare before and after metrics from a synchronized replay that I had a client run for testing a change in hardware. \u00a0I&#8217;ve done this before using PowerShell to automate things and the script for it is pretty simple:<\/p>\n<pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\r\n&#x5B;Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SqlServer.ConnectionInfoExtended&quot;) | Out-Null;\r\n&#x5B;Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SqlServer.ConnectionInfo&quot;) | Out-Null;\r\n&#x5B;Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SqlServer.Smo&quot;) | Out-Null;\r\n\r\n$InputFile = &quot;E:\\Results\\27\\ResultDir\\ReplayResult.trc&quot;;\r\n$TableName = &quot;ReplayResults_2&quot;\r\n\r\n$conn = New-Object &quot;Microsoft.SqlServer.Management.Common.SqlConnectionInfo&quot;;\r\n$conn.ServerName = &quot;.&quot;;\r\n$conn.DatabaseName = &quot;ReplayAnalysis&quot;\r\n$InputTrace = New-Object &quot;Microsoft.SqlServer.Management.Trace.Tracefile&quot;;\r\n$InputTrace.InitializeAsReader($InputFile);\r\n$TableWriter = New-Object &quot;Microsoft.SqlServer.Management.Trace.TraceTable&quot;;\r\n$TableWriter.InitializeAsWriter($InputTrace, $conn, $TableName);\r\n\r\nwhile($TableWriter.Write())\r\n{}\r\n<\/pre>\n<p>However, when I tried to do this on a new VM that was running Windows Server 2012R2 with SQL Server 2016 using the PowerShell ISE I kept running into the following exception that I had never encountered in the past before:<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #ff0000;\">Exception calling &#8220;InitializeAsReader&#8221; with &#8220;1&#8221; argument(s): &#8220;Failed to initialize object as reader.&#8221;<\/span><br \/>\n<span style=\"color: #ff0000;\">At line:14 char:1<\/span><br \/>\n<span style=\"color: #ff0000;\">+ $InputTrace.InitializeAsReader($InputFile);<\/span><br \/>\n<span style=\"color: #ff0000;\">+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<\/span><br \/>\n<span style=\"color: #ff0000;\"> + CategoryInfo : NotSpecified: (:) [], MethodInvocationException<\/span><br \/>\n<span style=\"color: #ff0000;\"> + FullyQualifiedErrorId : SqlTraceException<\/span><\/p>\n<p>I asked about this on Twitter and Shane O&#8217;Neill (<a href=\"https:\/\/mobile.twitter.com\/SOZDBA\" target=\"_blank\">@SOZDBA<\/a>) gave me a nudge in the right direction towards finding out the root of the problem by suggesting I look at the error in more detail. \u00a0So I wrapped the command in a try\/catch block piping the exception to a select *<\/p>\n<pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\r\n&#x5B;Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SqlServer.ConnectionInfoExtended&quot;) | Out-Null;\r\n&#x5B;Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SqlServer.ConnectionInfo&quot;) | Out-Null;\r\n&#x5B;Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SqlServer.Smo&quot;) | Out-Null;\r\n\r\n$InputFile = &quot;E:\\Results\\27\\ResultDir\\ReplayResult.trc&quot;;\r\n$TableName = &quot;ReplayResults_2&quot;\r\n\r\n$conn = New-Object &quot;Microsoft.SqlServer.Management.Common.SqlConnectionInfo&quot;;\r\n$conn.ServerName = &quot;.&quot;;\r\n$conn.DatabaseName = &quot;ReplayAnalysis&quot;\r\n$InputTrace = New-Object &quot;Microsoft.SqlServer.Management.Trace.Tracefile&quot;;\r\ntry {\r\n$InputTrace.InitializeAsReader($InputFile);\r\n}\r\ncatch\r\n{\r\n$_ | select *\r\n}\r\n<\/pre>\n<p>Now I had a more detail about the exception being raised:<\/p>\n<blockquote><p>Exception : System.Management.Automation.MethodInvocationException: Exception calling &#8220;InitializeAsReader&#8221; with &#8220;1&#8221; argument(s): &#8220;Failed to initialize object as reader.&#8221; &#8212;&gt;<br \/>\nMicrosoft.SqlServer.Management.Trace.SqlTraceException: Failed to initialize object as reader. &#8212;&gt; <strong>System.IO.FileNotFoundException: Could not load file or assembly <\/strong><br \/>\n<strong> &#8216;file:\/\/\/C:\\Program Files\\Microsoft SQL Server\\130\\Tools\\Binn\\pfclnt.dll&#8217; or one of its dependencies. The system cannot find the file specified.<\/strong><br \/>\nat System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark&amp;<br \/>\nstackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)<br \/>\nat System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark&amp;<br \/>\nstackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)<br \/>\nat System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm,<br \/>\nBoolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark&amp; stackMark)<br \/>\nat System.Reflection.Assembly.LoadFrom(String assemblyFile)<br \/>\nat Microsoft.SqlServer.Management.Trace.TraceUtils.CreateInstance(String assemblyRelativePath, String objectClass)<br \/>\nat Microsoft.SqlServer.Management.Trace.TraceFile.InitializeAsReader(String fileName)<br \/>\n&#8212; End of inner exception stack trace &#8212;<br \/>\nat Microsoft.SqlServer.Management.Trace.TraceFile.InitializeAsReader(String fileName)<br \/>\nat CallSite.Target(Closure , CallSite , Object , Object )<br \/>\n&#8212; End of inner exception stack trace &#8212;<br \/>\nat System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)<br \/>\nat System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)<br \/>\nat System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)<br \/>\nat System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)<\/p><\/blockquote>\n<p>A quick Google search for pfclnt.dll landed me on a <a href=\"https:\/\/connect.microsoft.com\/SQLServer\/feedback\/details\/483926\/cannot-open-server-tracefile-with-sql-server-r2-x64\" target=\"_blank\">old Connect item<\/a>\u00a0that pointed out that the SQL Server Profiler supporting DLL&#8217;s for SMO are 32-bit only and to use them in .NET you must compile your assembly for x86. \u00a0So the answer was pretty simple, start Windows PowerShell (x86) from the Start menu, paste the same exact script into the ISE window and run it and it works as expected.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I needed to process some results files from Distributed Replay to compare before and after metrics from a synchronized replay that I had a client run for testing a change in hardware. \u00a0I&#8217;ve done this before using PowerShell to automate things and the script for it is pretty simple: &#x5B;Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SqlServer.ConnectionInfoExtended&quot;) | Out-Null; &#x5B;Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SqlServer.ConnectionInfo&quot;) | [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32],"tags":[],"class_list":["post-2041","post","type-post","status-publish","format-standard","hentry","category-powershell"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Exception calling &quot;InitializeAsReader&quot; in PowerShell Reading Trace Files - 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\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Exception calling &quot;InitializeAsReader&quot; in PowerShell Reading Trace Files - Jonathan Kehayias\" \/>\n<meta property=\"og:description\" content=\"Today I needed to process some results files from Distributed Replay to compare before and after metrics from a synchronized replay that I had a client run for testing a change in hardware. \u00a0I&#8217;ve done this before using PowerShell to automate things and the script for it is pretty simple: &#x5B;Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SqlServer.ConnectionInfoExtended&quot;) | Out-Null; &#x5B;Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SqlServer.ConnectionInfo&quot;) | [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/\" \/>\n<meta property=\"og:site_name\" content=\"Jonathan Kehayias\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-02T19:38:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-13T17:05:58+00:00\" \/>\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\\\/exception-calling-initializeasreader-in-powershell-reading-trace-files\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/exception-calling-initializeasreader-in-powershell-reading-trace-files\\\/\"},\"author\":{\"name\":\"Jonathan Kehayias\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"headline\":\"Exception calling &#8220;InitializeAsReader&#8221; in PowerShell Reading Trace Files\",\"datePublished\":\"2017-03-02T19:38:45+00:00\",\"dateModified\":\"2017-04-13T17:05:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/exception-calling-initializeasreader-in-powershell-reading-trace-files\\\/\"},\"wordCount\":652,\"commentCount\":3,\"articleSection\":[\"Powershell\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/exception-calling-initializeasreader-in-powershell-reading-trace-files\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/exception-calling-initializeasreader-in-powershell-reading-trace-files\\\/\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/exception-calling-initializeasreader-in-powershell-reading-trace-files\\\/\",\"name\":\"Exception calling \\\"InitializeAsReader\\\" in PowerShell Reading Trace Files - Jonathan Kehayias\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\"},\"datePublished\":\"2017-03-02T19:38:45+00:00\",\"dateModified\":\"2017-04-13T17:05:58+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/exception-calling-initializeasreader-in-powershell-reading-trace-files\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/exception-calling-initializeasreader-in-powershell-reading-trace-files\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/exception-calling-initializeasreader-in-powershell-reading-trace-files\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Powershell\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/category\\\/powershell\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Exception calling &#8220;InitializeAsReader&#8221; in PowerShell Reading Trace Files\"}]},{\"@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":"Exception calling \"InitializeAsReader\" in PowerShell Reading Trace Files - 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\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/","og_locale":"en_US","og_type":"article","og_title":"Exception calling \"InitializeAsReader\" in PowerShell Reading Trace Files - Jonathan Kehayias","og_description":"Today I needed to process some results files from Distributed Replay to compare before and after metrics from a synchronized replay that I had a client run for testing a change in hardware. \u00a0I&#8217;ve done this before using PowerShell to automate things and the script for it is pretty simple: &#x5B;Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SqlServer.ConnectionInfoExtended&quot;) | Out-Null; &#x5B;Reflection.Assembly]::LoadWithPartialName(&quot;Microsoft.SqlServer.ConnectionInfo&quot;) | [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/","og_site_name":"Jonathan Kehayias","article_published_time":"2017-03-02T19:38:45+00:00","article_modified_time":"2017-04-13T17:05:58+00:00","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\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/#article","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/"},"author":{"name":"Jonathan Kehayias","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"headline":"Exception calling &#8220;InitializeAsReader&#8221; in PowerShell Reading Trace Files","datePublished":"2017-03-02T19:38:45+00:00","dateModified":"2017-04-13T17:05:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/"},"wordCount":652,"commentCount":3,"articleSection":["Powershell"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/","name":"Exception calling \"InitializeAsReader\" in PowerShell Reading Trace Files - Jonathan Kehayias","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website"},"datePublished":"2017-03-02T19:38:45+00:00","dateModified":"2017-04-13T17:05:58+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/exception-calling-initializeasreader-in-powershell-reading-trace-files\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/"},{"@type":"ListItem","position":2,"name":"Powershell","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/category\/powershell\/"},{"@type":"ListItem","position":3,"name":"Exception calling &#8220;InitializeAsReader&#8221; in PowerShell Reading Trace Files"}]},{"@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\/2041","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=2041"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/2041\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/media?parent=2041"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/categories?post=2041"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/tags?post=2041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}