{"id":316,"date":"2024-02-09T08:50:00","date_gmt":"2024-02-09T13:50:00","guid":{"rendered":"https:\/\/www.sqltabletalk.com\/?p=316"},"modified":"2024-02-07T22:11:46","modified_gmt":"2024-02-08T03:11:46","slug":"automating-sql-server-database-refreshes-with-powershell","status":"publish","type":"post","link":"https:\/\/www.sqltabletalk.com\/?p=316","title":{"rendered":"Automating SQL Server Database Refreshes with PowerShell"},"content":{"rendered":"<h3><strong>Introduction<\/strong><\/h3>\n<p>In today&#8217;s agile software development environment, keeping lower environments like development and testing synchronized with production data is essential. It not only helps in identifying issues early but also ensures that features are developed and tested against the most current dataset. This blog introduces a PowerShell script that automates the process of refreshing a SQL Server database in lower environments using a &#8220;copy only&#8221; backup from a production environment. By diving into the script, we aim to shed light on how automation can simplify database management tasks, making them more efficient and error-resistant.<\/p>\n<h3><strong>Why Automate Database Refreshes?<\/strong><\/h3>\n<p>Automating the process of refreshing databases offers significant advantages:<\/p>\n<ul>\n<li><strong>Consistency and Accuracy<\/strong>: Automating ensures that the data in lower environments accurately mirrors the production environment, providing a reliable foundation for development and testing.<\/li>\n<li><strong>Time-Saving and Efficiency<\/strong>: Reduces the time and effort required for manual database updates, allowing teams to concentrate on development and innovation.<\/li>\n<li><strong>Risk Mitigation<\/strong>: Automating refreshes with a &#8220;copy only&#8221; backup minimizes the risk of disrupting the production environment&#8217;s backup sequence, ensuring that backup integrity is maintained.<\/li>\n<\/ul>\n<h3>Prerequisites<\/h3>\n<p>Before executing the script, ensure the SqlServer module is installed in PowerShell. This module provides cmdlets for managing SQL Server, including backup and restore operations. Install it using the following PowerShell command if it&#8217;s not already available.<\/p>\n<p><code>Install-Module -Name SqlServer<\/code><\/p>\n<p>Let&#8217;s now take a look at the PowerShell script. We will go through each section and explain what the code is doing at each step.<\/p>\n<h3>1. Setting Up the Environment<\/h3>\n<pre><code># Variables\n$prodServer = \"ProdServerName\"\n$lowerEnvServer = \"LowerEnvServerName\"\n$dbName = \"YourDatabaseName\"\n$backupPath = \"\\\\Path\\\\To\\\\Backup\\\\Directory\\\\$dbName.bak\"\n$restorePath = \"\\\\Path\\\\To\\\\Lower\\\\Env\\\\Restore\\\\Directory\"\n<\/code><\/pre>\n<p><strong>Explanation:<\/strong> This initial step is about preparing your script with the necessary details specific to your environment. By setting variables for both your production and lower environment server names, the database name, and the paths for backup and restore operations, the script becomes customizable and adaptable to various setups.<\/p>\n<h3>2. Loading the SqlServer Module<\/h3>\n<pre><code># Load required SqlServer module\nImport-Module SqlServer\n<\/code><\/pre>\n<p><strong>Explanation:<\/strong> Before executing any SQL Server-related commands, the script ensures that the PowerShell session has access to the SqlServer module. This module is a powerhouse of cmdlets designed for SQL Server management, providing the necessary tools for performing the backup and restore operations that follow.<\/p>\n<h3>3. Taking a &#8220;Copy Only&#8221; Backup<\/h3>\n<pre><code># Take a \"copy only\" backup from production\nWrite-Output \"Starting copy only backup of $dbName from $prodServer...\"\nBackup-SqlDatabase -ServerInstance $prodServer -Database $dbName -BackupFile $backupPath -CopyOnly\n<\/code><\/pre>\n<p><strong>Explanation:<\/strong> The script takes a &#8220;copy only&#8221; backup of the specified database from the production server. This type of backup is necessary as it does not interfere with the sequence of regular log or database backups, ensuring the integrity of the production environment&#8217;s backup strategy remains intact.<\/p>\n<h3>4. Restoring the Database to the Lower Environment<\/h3>\n<pre><code># Restore the database to the lower environment\nWrite-Output \"Restoring $dbName to $lowerEnvServer...\"\nRestore-SqlDatabase -ServerInstance $lowerEnvServer -Database $dbName -BackupFile $backupPath -RestoreAction Database -RelocateFile @{LogicalFileName=\"$dbName\"; PhysicalFileName=\"$restorePath\\\\$dbName.mdf\"}, @{LogicalFileName=\"$dbName_log\"; PhysicalFileName=\"$restorePath\\\\$dbName_log.ldf\"}\n<\/code><\/pre>\n<p><strong>Explanation:<\/strong> This segment handles the restoration of the database from the backup file to the lower environment server. The script uses the Restore-SqlDatabase\u00a0cmdlet, demonstrating how to relocate database files if necessary\u2014a common requirement when the directory structure differs between production and lower environments.<\/p>\n<h3>5. Setting the Recovery Model to Simple<\/h3>\n<pre><code># Changing the database recovery model to Simple in the lower environment\nWrite-Output \"Setting recovery model to Simple for $dbName on $lowerEnvServer...\"\nSet-SqlDatabaseRecoveryModel -ServerInstance $lowerEnvServer -Database $dbName -RecoveryModel Simple\n<\/code><\/pre>\n<p><strong>Explanation:<\/strong> The final step in the script is to adjust the recovery model of the restored database to Simple. This model is ideal for development and testing environments as it minimizes log file growth and simplifies log management, reducing the need for frequent backups and maintenance.<\/p>\n<h3>Putting it All Together<\/h3>\n<p>The script below provides a complete example with sample values for the defined variables.<\/p>\n<pre><code># Example Variables\n$prodServer = \"PRODSERVER01\"\n$lowerEnvServer = \"DEVSERVER01\"\n$dbName = \"ExampleDB\"\n$backupPath = \"\\\\NetworkShare\\Backups\\ExampleDB.bak\"\n$restorePath = \"D:\\SQLData\\DEVSERVER01\\ExampleDB\"\n\n# Load the SqlServer module\nImport-Module SqlServer\n\n# Take a \"copy only\" backup from production\nWrite-Output \"Starting copy only backup of $dbName from $prodServer...\"\nBackup-SqlDatabase -ServerInstance $prodServer -Database $dbName -BackupFile $backupPath -CopyOnly\n\n# Restore the database to the lower environment\nWrite-Output \"Restoring $dbName to $lowerEnvServer...\"\nRestore-SqlDatabase -ServerInstance $lowerEnvServer -Database $dbName -BackupFile $backupPath -RestoreAction Database -RelocateFile @{LogicalFileName=\"${dbName}_Data\"; PhysicalFileName=\"$restorePath\\${dbName}_Data.mdf\"}, @{LogicalFileName=\"${dbName}_Log\"; PhysicalFileName=\"$restorePath\\${dbName}_Log.ldf\"}\n\n# Change the database recovery model to Simple in the lower environment\nWrite-Output \"Setting recovery model to Simple for $dbName on $lowerEnvServer...\"\nSet-SqlDatabaseRecoveryModel -ServerInstance $lowerEnvServer -Database $dbName -RecoveryModel Simple\n\nWrite-Output \"$dbName has been refreshed on $lowerEnvServer and set to Simple recovery model.\"\n<\/code><\/pre>\n<h3><strong>Conclusion<\/strong><\/h3>\n<p>Automating SQL Server database refreshes with PowerShell is a beneficial tool for database management, especially in agile development settings. The script provided offers a blueprint for efficiently updating lower environments with the latest production data, reducing manual effort, and mitigating the risk of errors. By customizing this script to fit your organization&#8217;s needs and thoroughly testing it in a safe environment, you can streamline your database operations, ensuring that your development and testing teams always have access to recent and relevant data.<\/p>\n<p>The key to successful automation is customization and testing. Adjust the script variables to match your specific environment and conduct thorough testing before rolling it out in production. With careful implementation, this automation script can become an invaluable tool in your database management toolkit, enhancing efficiency and consistency across your development lifecycle. It&#8217;s another example of how PowerShell can empower SQL Server DBAs with tools to increase their productivity and efficiency.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In today&#8217;s agile software development environment, keeping lower environments like development and testing synchronized with production data is essential. It not only helps in identifying issues early but also ensures that features are developed and tested against the most current dataset. This blog introduces a PowerShell script that automates the process of refreshing a SQL Server database in lower environments using a &#8220;copy only&#8221; backup from a production environment. By diving into the script, we aim to shed light on how automation can simplify database management tasks, making them more efficient and error-resistant.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[55,54,53,21],"tags":[56,57],"class_list":["post-316","post","type-post","status-publish","format-standard","hentry","category-automation","category-maintenance","category-powershell","category-tutorial","tag-maintenance","tag-scripting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Automating SQL Server Database Refreshes with PowerShell - SQL Table Talk<\/title>\n<meta name=\"description\" content=\"In today&#039;s agile software development environment, keeping lower environments like development and testing synchronized with production data is essential. It not only helps in identifying issues early but also ensures that features are developed and tested against the most current dataset. This blog introduces a PowerShell script that automates the process of refreshing a SQL Server database in lower environments using a &quot;copy only&quot; backup from a production environment. By diving into the script, we aim to shed light on how automation can simplify database management tasks, making them more efficient and error-resistant.\" \/>\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.sqltabletalk.com\/?p=316\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automating SQL Server Database Refreshes with PowerShell - SQL Table Talk\" \/>\n<meta property=\"og:description\" content=\"In today&#039;s agile software development environment, keeping lower environments like development and testing synchronized with production data is essential. It not only helps in identifying issues early but also ensures that features are developed and tested against the most current dataset. This blog introduces a PowerShell script that automates the process of refreshing a SQL Server database in lower environments using a &quot;copy only&quot; backup from a production environment. By diving into the script, we aim to shed light on how automation can simplify database management tasks, making them more efficient and error-resistant.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqltabletalk.com\/?p=316\" \/>\n<meta property=\"og:site_name\" content=\"SQL Table Talk\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-09T13:50:00+00:00\" \/>\n<meta name=\"author\" content=\"Stephen Planck\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Stephen Planck\" \/>\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.sqltabletalk.com\/?p=316#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=316\"},\"author\":{\"name\":\"Stephen Planck\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\"},\"headline\":\"Automating SQL Server Database Refreshes with PowerShell\",\"datePublished\":\"2024-02-09T13:50:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=316\"},\"wordCount\":677,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\"},\"keywords\":[\"maintenance\",\"scripting\"],\"articleSection\":[\"Automation\",\"Maintenance\",\"PowerShell\",\"Tutorial\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.sqltabletalk.com\/?p=316#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=316\",\"url\":\"https:\/\/www.sqltabletalk.com\/?p=316\",\"name\":\"Automating SQL Server Database Refreshes with PowerShell - SQL Table Talk\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#website\"},\"datePublished\":\"2024-02-09T13:50:00+00:00\",\"description\":\"In today's agile software development environment, keeping lower environments like development and testing synchronized with production data is essential. It not only helps in identifying issues early but also ensures that features are developed and tested against the most current dataset. This blog introduces a PowerShell script that automates the process of refreshing a SQL Server database in lower environments using a \\\"copy only\\\" backup from a production environment. By diving into the script, we aim to shed light on how automation can simplify database management tasks, making them more efficient and error-resistant.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=316#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqltabletalk.com\/?p=316\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqltabletalk.com\/?p=316#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqltabletalk.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automating SQL Server Database Refreshes with PowerShell\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#website\",\"url\":\"https:\/\/www.sqltabletalk.com\/\",\"name\":\"SQL Table Talk\",\"description\":\"Breaking Down SQL Server, One Post at a Time.\",\"publisher\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqltabletalk.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0\",\"name\":\"Stephen Planck\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g\",\"caption\":\"Stephen Planck\"},\"logo\":{\"@id\":\"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/dexterwiki.com\",\"https:\/\/www.linkedin.com\/in\/stephen-planck-4611b692?trk=people-guest_people_search-card&challengeId=AQErf8gbBmcVMwAAAYsyIsxO-0UvU8z7cHrBpZoo_n3xt9qEKpRN5B_jd_LmAMu-OfeArkQ7GDjobJ2uRoQQV35EQdh_rR6kxA&submissionId=09de7067-c335-8e17-40b8-8dc32b60ed6c&challengeSource=AgEcUCw35zpPmAAAAYsyI4vAWhJTV7Nt4vZYKc3V1qiDBpCkKgUvtlOBgYXcE84&challegeType=AgE_wZiTT09IAQAAAYsyI4vDmNvbZIYe6XHju5V2bXVvM3IVxnJslgY&memberId=AgESFTkUShzs_gAAAYsyI4vGYk0Gic1uc5kB6cKOABA26Gw&recognizeDevice=AgHdSZyUSI5CEwAAAYsyI4vKd_koF9JgpsCJShT8QfbK1QMiv8SI\",\"https:\/\/www.youtube.com\/linuxmate\"],\"url\":\"https:\/\/www.sqltabletalk.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Automating SQL Server Database Refreshes with PowerShell - SQL Table Talk","description":"In today's agile software development environment, keeping lower environments like development and testing synchronized with production data is essential. It not only helps in identifying issues early but also ensures that features are developed and tested against the most current dataset. This blog introduces a PowerShell script that automates the process of refreshing a SQL Server database in lower environments using a \"copy only\" backup from a production environment. By diving into the script, we aim to shed light on how automation can simplify database management tasks, making them more efficient and error-resistant.","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.sqltabletalk.com\/?p=316","og_locale":"en_US","og_type":"article","og_title":"Automating SQL Server Database Refreshes with PowerShell - SQL Table Talk","og_description":"In today's agile software development environment, keeping lower environments like development and testing synchronized with production data is essential. It not only helps in identifying issues early but also ensures that features are developed and tested against the most current dataset. This blog introduces a PowerShell script that automates the process of refreshing a SQL Server database in lower environments using a \"copy only\" backup from a production environment. By diving into the script, we aim to shed light on how automation can simplify database management tasks, making them more efficient and error-resistant.","og_url":"https:\/\/www.sqltabletalk.com\/?p=316","og_site_name":"SQL Table Talk","article_published_time":"2024-02-09T13:50:00+00:00","author":"Stephen Planck","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Stephen Planck","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sqltabletalk.com\/?p=316#article","isPartOf":{"@id":"https:\/\/www.sqltabletalk.com\/?p=316"},"author":{"name":"Stephen Planck","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0"},"headline":"Automating SQL Server Database Refreshes with PowerShell","datePublished":"2024-02-09T13:50:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqltabletalk.com\/?p=316"},"wordCount":677,"commentCount":3,"publisher":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0"},"keywords":["maintenance","scripting"],"articleSection":["Automation","Maintenance","PowerShell","Tutorial"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sqltabletalk.com\/?p=316#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sqltabletalk.com\/?p=316","url":"https:\/\/www.sqltabletalk.com\/?p=316","name":"Automating SQL Server Database Refreshes with PowerShell - SQL Table Talk","isPartOf":{"@id":"https:\/\/www.sqltabletalk.com\/#website"},"datePublished":"2024-02-09T13:50:00+00:00","description":"In today's agile software development environment, keeping lower environments like development and testing synchronized with production data is essential. It not only helps in identifying issues early but also ensures that features are developed and tested against the most current dataset. This blog introduces a PowerShell script that automates the process of refreshing a SQL Server database in lower environments using a \"copy only\" backup from a production environment. By diving into the script, we aim to shed light on how automation can simplify database management tasks, making them more efficient and error-resistant.","breadcrumb":{"@id":"https:\/\/www.sqltabletalk.com\/?p=316#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqltabletalk.com\/?p=316"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqltabletalk.com\/?p=316#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqltabletalk.com\/"},{"@type":"ListItem","position":2,"name":"Automating SQL Server Database Refreshes with PowerShell"}]},{"@type":"WebSite","@id":"https:\/\/www.sqltabletalk.com\/#website","url":"https:\/\/www.sqltabletalk.com\/","name":"SQL Table Talk","description":"Breaking Down SQL Server, One Post at a Time.","publisher":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqltabletalk.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/1947e42a9438bccd91691d8b791888e0","name":"Stephen Planck","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/64181114edc3de3d99072c049bcec024f025c9536dc89fc8ff1bac58976ca81e?s=96&d=mm&r=g","caption":"Stephen Planck"},"logo":{"@id":"https:\/\/www.sqltabletalk.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/dexterwiki.com","https:\/\/www.linkedin.com\/in\/stephen-planck-4611b692?trk=people-guest_people_search-card&challengeId=AQErf8gbBmcVMwAAAYsyIsxO-0UvU8z7cHrBpZoo_n3xt9qEKpRN5B_jd_LmAMu-OfeArkQ7GDjobJ2uRoQQV35EQdh_rR6kxA&submissionId=09de7067-c335-8e17-40b8-8dc32b60ed6c&challengeSource=AgEcUCw35zpPmAAAAYsyI4vAWhJTV7Nt4vZYKc3V1qiDBpCkKgUvtlOBgYXcE84&challegeType=AgE_wZiTT09IAQAAAYsyI4vDmNvbZIYe6XHju5V2bXVvM3IVxnJslgY&memberId=AgESFTkUShzs_gAAAYsyI4vGYk0Gic1uc5kB6cKOABA26Gw&recognizeDevice=AgHdSZyUSI5CEwAAAYsyI4vKd_koF9JgpsCJShT8QfbK1QMiv8SI","https:\/\/www.youtube.com\/linuxmate"],"url":"https:\/\/www.sqltabletalk.com\/?author=1"}]}},"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/316","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=316"}],"version-history":[{"count":5,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/316\/revisions"}],"predecessor-version":[{"id":324,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=\/wp\/v2\/posts\/316\/revisions\/324"}],"wp:attachment":[{"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=316"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=316"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqltabletalk.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}