{"id":510,"date":"2012-02-06T10:06:00","date_gmt":"2012-02-06T10:06:00","guid":{"rendered":"\/blogs\/joe\/post\/VirtualBox-Script-to-Batch-Save-and-Start-Multiple-Guests.aspx"},"modified":"2013-01-02T20:36:32","modified_gmt":"2013-01-03T04:36:32","slug":"virtualbox-script-to-batch-save-and-start-multiple-guests","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/joe\/virtualbox-script-to-batch-save-and-start-multiple-guests\/","title":{"rendered":"VirtualBox Script to Batch Save and Start Multiple Guests"},"content":{"rendered":"<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">I use Windows 7 as my laptop host OS and this limits me from using Hyper-V natively to handle VM guests. <span>&nbsp; <\/span>Yes, I could do the dual-boot thing, but I haven&rsquo;t done it yet and I do like the simplicity of not having to switch host OS contexts. <span>&nbsp;<\/span>Windows 8 will, thankfully, be adding Hyper-V hosting support to the client, but in the meantime I&rsquo;ve been using VirtualBox for my guest OS needs.<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">Jonathan Kehayias blogged about it extensively in his &ldquo;<\/font><\/font><font style=\"font-size: 11pt\"><a href=\"http:\/\/www.SQLskills.com\/blogs\/jonathan\/post\/building-a-completely-free-playground-for-sql-server-e28093-(1-of-3)-downloading-the-software-and-setting-up-a-windows-server-2008r2-vm-template.aspx\" target=\"_blank\"><font face=\"Calibri\" color=\"#0000ff\"><u>Building a Completely Free Playground<\/u><\/font><\/a><\/font><font face=\"Calibri\"><font style=\"font-size: 11pt\">&rdquo; series &ndash; and once I moved to SQLskills I felt less skittish about running a product that happened to have the big &ldquo;O&rdquo; word listed prominently on the application toolbar header.<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">I actually use VirtualBox for a variety of purposes &ndash; not just for SQL Server test environments. For example, if I need to connect to an environment that has conflicting (or unique) remote connectivity requirements, rather than risk clobbering my host VPN settings, I provision a clean, isolated guest environment that I use for connectivity and configuration instead.<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">Sometimes I&rsquo;ll have a group of servers that I want to launch at the same time or I&rsquo;ll want to put a group of them in a saved state at the same time (for example &ndash; when running a guest Failover Cluster).<span>&nbsp; <\/span>In one case I have six different guests that I want to save or start at (nearly) the same time and I don&rsquo;t like having to right-click save on each one &ndash; especially since my guests will quickly think something is wrong and when I bring them back from a saved state, it takes a few seconds to get them de-frazzled.<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<em><font face=\"Calibri\"><font style=\"font-size: 11pt\">By the way &ndash; I&rsquo;m using these scripts for test environments.<span>&nbsp; <\/span>These are test environments that if I lost them, I&rsquo;d be annoyed &ndash; but not devastated.<\/font><span><font style=\"font-size: 11pt\">&nbsp; <\/font><\/span><\/font><\/em>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">Rather than rely on the GUI, I created a BAT file to save the guests in a batch:<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">cd \/D &quot;C:\\Program Files\\Oracle\\VirtualBox\\&quot;<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">START \/b VBoxManage.exe<span>&nbsp; <\/span>controlvm &quot;Node4_D2&quot;<span>&nbsp; <\/span>savestate <\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">START \/b VBoxManage.exe<span>&nbsp; <\/span>controlvm &quot;Node3_D2&quot;<span>&nbsp; <\/span>savestate <\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">START \/b VBoxManage.exe<span>&nbsp; <\/span>controlvm &quot;Node2_D1&quot;<span>&nbsp; <\/span>savestate <\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">START \/b VBoxManage.exe<span>&nbsp; <\/span>controlvm &quot;Node1_D1&quot;<span>&nbsp; <\/span>savestate <\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">START \/b VBoxManage.exe <span>&nbsp;<\/span>controlvm &quot;SAN_D1&quot; savestate <\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">START \/b VBoxManage.exe<span>&nbsp; <\/span>controlvm &quot;Node_DC&quot;<span>&nbsp; <\/span>savestate<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\"><\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">I use the START option so that I&rsquo;m not waiting for the save operation in a serial fashion.<span>&nbsp; <\/span>I use the &ldquo;\/b&rdquo; so that six windows don&rsquo;t pop up.<span>&nbsp; <\/span>As for the Virtualbox command syntax &ndash; it&rsquo;s pretty straightforward &ndash; I call VBoxManage.exe with controlvm followed by the name of the VM and the option to save it (savestate).<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">As for <em>starting<\/em> them up from the saved state, I do stagger things a bit.<span>&nbsp; <\/span>I use startvm instead of controlvm, followed by the VM name and I don&rsquo;t use the START keyword for anything I want to ensure is executed in order (I also use the TIMEOUT option to wait a few seconds before launching other VMs):<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">cd \/D &quot;C:\\Program Files\\Oracle\\VirtualBox\\&quot;<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">VBoxManage.exe startvm &quot;Node_DC&quot;<\/font><span><font style=\"font-size: 11pt\">&nbsp; <\/font><\/span><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">VBoxManage.exe startvm &quot;SAN_D1&quot; <\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">TIMEOUT 10<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">START \/b VBoxManage.exe startvm &quot;Node1_D1&quot;<\/font><span><font style=\"font-size: 11pt\">&nbsp; <\/font><\/span><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">START \/b VBoxManage.exe startvm &quot;Node2_D1&quot;<\/font><span><font style=\"font-size: 11pt\">&nbsp; <\/font><\/span><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">START \/b VBoxManage.exe startvm &quot;Node3_D2&quot;<\/font><span><font style=\"font-size: 11pt\">&nbsp; <\/font><\/span><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 0pt 0.5in\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">START \/b VBoxManage.exe startvm &quot;Node4_D2&quot;<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\"><\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">Even with these scripts I wouldn&rsquo;t call this an orderly and synchronized save and start.<span>&nbsp; <\/span>A Windows guest cluster may sometimes catch on to something being amiss &ndash; but often it does not.<span>&nbsp; <\/span>Sometimes I&rsquo;ll have to wait a few seconds for the nodes to start talking to each other again.<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">Anyhow &ndash; if you also use VirtualBox and have any tips you&rsquo;d like to share when it comes to coordinating the guest launches, please post here as I&rsquo;m definitely curious to learn about them.<\/font><\/font><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I use Windows 7 as my laptop host OS and this limits me from using Hyper-V natively to handle VM guests. &nbsp; Yes, I could do the dual-boot thing, but I haven&rsquo;t done it yet and I do like the simplicity of not having to switch host OS contexts. &nbsp;Windows 8 will, thankfully, be adding [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27,35],"tags":[],"class_list":["post-510","post","type-post","status-publish","format-standard","hentry","category-off-topic","category-virtual-machines"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>VirtualBox Script to Batch Save and Start Multiple Guests - 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\/virtualbox-script-to-batch-save-and-start-multiple-guests\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"VirtualBox Script to Batch Save and Start Multiple Guests - Joe Sack\" \/>\n<meta property=\"og:description\" content=\"I use Windows 7 as my laptop host OS and this limits me from using Hyper-V natively to handle VM guests. &nbsp; Yes, I could do the dual-boot thing, but I haven&rsquo;t done it yet and I do like the simplicity of not having to switch host OS contexts. &nbsp;Windows 8 will, thankfully, be adding [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/joe\/virtualbox-script-to-batch-save-and-start-multiple-guests\/\" \/>\n<meta property=\"og:site_name\" content=\"Joe Sack\" \/>\n<meta property=\"article:published_time\" content=\"2012-02-06T10:06:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-01-03T04:36:32+00:00\" \/>\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\/virtualbox-script-to-batch-save-and-start-multiple-guests\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/virtualbox-script-to-batch-save-and-start-multiple-guests\/\",\"name\":\"VirtualBox Script to Batch Save and Start Multiple Guests - Joe Sack\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#website\"},\"datePublished\":\"2012-02-06T10:06:00+00:00\",\"dateModified\":\"2013-01-03T04:36:32+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/virtualbox-script-to-batch-save-and-start-multiple-guests\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/joe\/virtualbox-script-to-batch-save-and-start-multiple-guests\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/virtualbox-script-to-batch-save-and-start-multiple-guests\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Off-Topic\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/category\/off-topic\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"VirtualBox Script to Batch Save and Start Multiple Guests\"}]},{\"@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":"VirtualBox Script to Batch Save and Start Multiple Guests - 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\/virtualbox-script-to-batch-save-and-start-multiple-guests\/","og_locale":"en_US","og_type":"article","og_title":"VirtualBox Script to Batch Save and Start Multiple Guests - Joe Sack","og_description":"I use Windows 7 as my laptop host OS and this limits me from using Hyper-V natively to handle VM guests. &nbsp; Yes, I could do the dual-boot thing, but I haven&rsquo;t done it yet and I do like the simplicity of not having to switch host OS contexts. &nbsp;Windows 8 will, thankfully, be adding [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/joe\/virtualbox-script-to-batch-save-and-start-multiple-guests\/","og_site_name":"Joe Sack","article_published_time":"2012-02-06T10:06:00+00:00","article_modified_time":"2013-01-03T04:36:32+00:00","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\/virtualbox-script-to-batch-save-and-start-multiple-guests\/","url":"https:\/\/www.sqlskills.com\/blogs\/joe\/virtualbox-script-to-batch-save-and-start-multiple-guests\/","name":"VirtualBox Script to Batch Save and Start Multiple Guests - Joe Sack","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#website"},"datePublished":"2012-02-06T10:06:00+00:00","dateModified":"2013-01-03T04:36:32+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/virtualbox-script-to-batch-save-and-start-multiple-guests\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/joe\/virtualbox-script-to-batch-save-and-start-multiple-guests\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/virtualbox-script-to-batch-save-and-start-multiple-guests\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/joe\/"},{"@type":"ListItem","position":2,"name":"Off-Topic","item":"https:\/\/www.sqlskills.com\/blogs\/joe\/category\/off-topic\/"},{"@type":"ListItem","position":3,"name":"VirtualBox Script to Batch Save and Start Multiple Guests"}]},{"@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\/510","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=510"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts\/510\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/media?parent=510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/categories?post=510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/tags?post=510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}