{"id":86886,"date":"2020-04-16T14:27:14","date_gmt":"2020-04-16T14:27:14","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/?p=86886"},"modified":"2022-04-24T20:27:00","modified_gmt":"2022-04-24T20:27:00","slug":"how-to-set-up-transactional-replication","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/databases\/sql-server\/database-administration-sql-server\/how-to-set-up-transactional-replication\/","title":{"rendered":"How to Set Up Transactional Replication"},"content":{"rendered":"<p>How many of you hear the word <em>replication<\/em> and shudder? There are indeed a lot of moving parts to it, but it is a valuable tool, and it is worth learning how to use. In this article, I\u2019ll show you how to set it up.<\/p>\n<p>For those of you who are new to the world of replication, let me briefly explain how it works from a 10,000-foot view. Replication is nothing more or less than copying data from Point A to Point B. SQL Server\u2019s vernacular lends itself to comparison with magazine publication.<\/p>\n<p>An author writes a magazine article. They want the world to read it. They send it off to a publisher. The publisher has the means to include it in a magazine that they own and send copies of that magazine out <em>en masse<\/em>. When the magazine is ready, it is packaged and mailed to a distribution center. The distribution center sends the magazines out to the subscribers.<\/p>\n<p>It\u2019s pretty much the same with SQL Server. You may have a table, a view or a stored procedure that you want to copy over somewhere else. Why? <strong><em>(HINT: NOT FOR BACKUP. Never use replication for backup)<\/em><\/strong>.<\/p>\n<p>One of the more common reasons I see for using replication is that you are using third-party vendor software that doesn\u2019t allow indexing, so performance would grind to a stop if you used it for anything but straight data entry. To get around this, you copy over the data somewhere else where you can optimize (i.e., index) it and use the copy for reporting data.<\/p>\n<p>To copy the object(s), you create a <em>publication<\/em>. Within that publication, you logically group tables, views, sprocs\u2026whatever you need to replicate. These objects are your <em>articles.<\/em> I say that you logically group them because doing it that way keeps the publications manageable and easier to track. You don\u2019t want one giant publication. Instead, group them in a way that makes sense to you and your end-users.<\/p>\n<p>Once your publication is ready to go, SQL Server takes a snapshot of your data to send to a <em>distribution<\/em> database on your <em>distributor<\/em> server. The distributor is just what you probably think it is. It is the mechanism that sends your data to the <em>subscribers<\/em> (or the point(s) you are copying your data to). Once the snapshot is complete, the SQL Server begins replicating the data.<\/p>\n<p>So now that you have an idea of how it works, let\u2019s start the data flowing! This can be done by using the GUI, T-SQL or <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/replication\/concepts\/replication-management-objects-concepts?view=sql-server-ver15\">Replication Management Objects<\/a> (RMOs). I am going to stay in my comfort zone \u2013 SQL Server.<\/p>\n<h2>Configuring the Distributor<\/h2>\n<p>Begin by ensuring you have replication installed. If you don\u2019t have the replication feature installed, you should do it now. Just go to the installation for your version of SQL Server, select the \u201cadd features to an existing installation\u201d option and install replication. If you aren\u2019t sure if it\u2019s installed, you can run <code>EXEC sp_MS_replication_installed<\/code><strong>. <\/strong>If it runs successfully, you should be good to go. If it fails, it tells you to install the feature.<\/p>\n<p>If you know you have replication installed, the next step is to configure distribution if you haven\u2019t already. Go to the intended distributor server and right-click on the <em>Replication<\/em> folder in SSMS. Select <em>Configure Distribution<\/em>.<\/p>\n<p>I am using SSMS v 18.4 for this walkthrough. For the purposes of this demo, I am choosing to use my own server as both distributor and publisher. The wizard will guide you through it \u2013 and so will I. You must decide if you want the server you are on to be the distributor or designate another server to be the distributor. Since this is a demo, my local instance will be its own distributor. If SQL Server Agent is not set to start automatically, you will also be prompted to configure it.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"532\" height=\"455\" class=\"wp-image-86887\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-5.png\" \/><\/p>\n<p>Choose where you want the replication snapshot to be stored. The amount of space you need depends on the amount of data you will be snapshotting. You can choose a network share (recommended) or a folder on the server. Just ensure that the appropriate permissions are there. In this case, you\u2019ll see further down that I am using SQL Agent to run replication, so, Agent needs permissions on the snapshot folder. It will need to read\/write\/modify\/list folder contents\/execute.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86888\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-6.png\" \/><\/p>\n<p>Next, name your distribution database and tell SQL Server where to store the data and log files.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86889\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-7.png\" \/><\/p>\n<p>If you need other servers to use this distributor, here is where you add them. I don\u2019t need another one, so I am leaving it as is.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86890\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-8.png\" \/><\/p>\n<p>The wizard asks you if you would like it to do the magic directly by running the scripts, or if you would prefer to wave the wand and have the wizard complete the steps.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86891\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-9.png\" \/><\/p>\n<p>Here is your sanity check:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86892\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-10.png\" \/><\/p>\n<p>And\u2026.poof! You have a distributor. If you want to \u201cknow that you know\u201d that distribution is in place, there are several ways to do so. The first is to look for the distribution database, which is located in the system databases on your distributor server. The second is to go to your Replication tab in the Object Explorer tab of SSMS beneath the Server Objects folder. Right-click and choose to <em>Launch Replication Monitor<\/em>. You should see the distributor, but no publications yet.<\/p>\n<h2>Configuring the Publication<\/h2>\n<p>Now, set up replication. The goal is to replicate the AdventureWorks2012 (or any version of AdventureWorks that you have) tables in the <em>Person<\/em> and <em>HumanResources<\/em> schema to a database called AdventureWorksRepl.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"260\" height=\"231\" class=\"wp-image-86893\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-11.png\" \/><\/p>\n<p>AdventureWorksRepl doesn\u2019t exist yet. But it <em>will<\/em>.<\/p>\n<p>Before starting on this step, make sure that the database has a valid owner. You can see this in the <em>Files<\/em> page of the <em>Database<\/em> <em>Properties<\/em> dialog.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"699\" height=\"313\" class=\"wp-image-86894\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-12.png\" \/><\/p>\n<p>First, create the publication. Go to the <em>Replication<\/em> folder and right-click on the <em>Local Publications <\/em>folder. Select <em>New Publication<\/em>. After the <em>Welcome<\/em> screen, your next window should look like this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86895\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-13.png\" \/><\/p>\n<p>Make sure that you have selected the database you intend to be the publisher before clicking <em>Next<\/em>.<\/p>\n<p>In the picture below, you\u2019ll see that you have several replication options from which to choose. To quickly explain the difference, snapshot replication fires off on a specified schedule. It is a good choice for publications with data that only infrequently and predictably changes. <em>Transactional replication<\/em> is used primarily for real-time data. <em>Peer-to-Peer<\/em> replication is much more complicated. Publications can stream back and forth to each other. Conflict resolution is minimal, and it\u2019s recommended that the application deal with the insert\/update\/delete behavior itself. Finally, there is <em>Merge<\/em> replication. This is primarily used when there isn\u2019t a primary key on a table, or when there is a need to detect and resolve conflicts more robustly, when multiple subscribers are updating data offline and synchronizing after the fact, etc. In this case, the goal is real-time data transfer, so transactional publication it is!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86896\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-14.png\" \/><\/p>\n<p>The goal is to copy tables in the Person and HumanResources schema. You could do these in separate publications, but for demo purposes, just do it in one. Check off the needed tables: all of the tables in the HumanResources and Person schemas.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86897\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-15.png\" \/><\/p>\n<p>It will ask you next if you want to filter your articles. Trust me, you probably do. However, if your business users disagree and want all the data from the beginning of time, remember that the customer is always right. Just warn them not to be surprised if these publications take some time to sync the data whenever replication needs to be restarted.<\/p>\n<p>For today\u2019s purposes, though, filtering is not necessary.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86898\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-16.png\" \/><\/p>\n<p>Run the snapshot immediately. This is going to create the snapshot to send the data to the distributor.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86899\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-17.png\" \/><\/p>\n<p>Security often turns into a religious debate, but I\u2019ll show you a simple way to configure it. Be sure to take time in your own environment to configure according to your company standards. Click Security Settings.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86900\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-18.png\" \/><\/p>\n<p>I am choosing to use <em>SQL Server Agent<\/em>. However, you could create a special service account for this sole purpose. Ensure that password complexity is high and that only the DBAs have access to the password since this account must be a sysadmin to run replication. My SQL Agent already meets those requirements, which is why I am using it instead.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"534\" height=\"469\" class=\"wp-image-86901\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-19.png\" \/><\/p>\n<p><em>Don\u2019t judge me.<\/em><\/p>\n<p>It will look like this after you click <em>OK<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"554\" height=\"444\" class=\"wp-image-86902\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-20.png\" \/><\/p>\n<p>You\u2019re almost done with the publication creation. To immediately create the publication, make sure that <em>Create the publication<\/em> is checked. You could also script out the script if you want to learn more or run in an automated process, for example.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86903\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-21.png\" \/><\/p>\n<p>Now, give it a name!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86904\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-22.png\" \/><\/p>\n<p>Once it\u2019s complete, you\u2019ll see this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86905\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-23.png\" \/><\/p>\n<p>Victory!<\/p>\n<h2>Configuring the Subscription<\/h2>\n<p>You\u2019ve told SQL Server that you want to copy data \u2013 and what data to copy. Now, you have to tell it <em>where<\/em> to copy the data. Locate the new subscription by refreshing the <em>Local Publications<\/em> folder. Right-click the new publication and choose <em>New Subscriptions<\/em>. After clicking through the welcome page of the wizard, you should see this screen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86906\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-24.png\" \/><\/p>\n<p>Select your publication and click <em>Next<\/em>.<\/p>\n<p>You now must choose between a push or a pull subscription. For this demo, you want a push subscription. Push subscriptions run from the distributor, which pushes out any changes in the data as soon as the log reader agent registers one. Pull subscriptions run from the subscriber, who \u201cpulls\u201d the data as it determines it needs to.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86907\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-25.png\" \/><\/p>\n<p>Select the same server as the <em>Subscriber<\/em>. Click on the right-hand side of the empty box of the <em>Subscription Database<\/em> column. A pull-down menu will appear, giving you some databases from which to choose. The desired database doesn\u2019t exist (yet), so choose <em>&lt;New database\u2026&gt;.<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86908\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-26.png\" \/><\/p>\n<p>Name your new database. Configure your size, autogrowth, and any other options as needed.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"690\" height=\"625\" class=\"wp-image-86909\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-27.png\" \/><\/p>\n<p>When you click <em>OK<\/em>, it will look something like this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86910\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-28.png\" \/><\/p>\n<p>On the next screen, you will configure security. Click the ellipsis (\u2026.)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86911\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-29.png\" \/><\/p>\n<p>And once again, I choose the following options. You may choose not to be like me. It\u2019s OK; we can agree to disagree.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"534\" height=\"669\" class=\"wp-image-86912\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-30.png\" \/><\/p>\n<p>After you do this, you\u2019ll get the following screen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86913\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-31.png\" \/><\/p>\n<p>On the next screen, you will configure the schedule. In this case, the SQL Agent job will run continuously.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86914\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-32.png\" \/><\/p>\n<p>Now, tell replication to initialize the publication right away.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86915\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-33.png\" \/><\/p>\n<p>Make it official and tell replication to create the subscription.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86916\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-34.png\" \/><\/p>\n<p>Here is your last-chance-sanity-check before creating the subscription<em>.<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86917\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-35.png\" \/><\/p>\n<p>Click <em>Finish<\/em>. If the subscription was a success, you\u2019ll see this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" class=\"wp-image-86918\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-36.png\" \/><\/p>\n<h2>Verification<\/h2>\n<p>Now that it\u2019s complete, verify that everything went across as expected. Right-click your publication and choose <em>View Snapshot Agent Status<\/em> and ensure that the snapshot completed.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"596\" height=\"285\" class=\"wp-image-86919\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-37.png\" \/><\/p>\n<p>Yay!<\/p>\n<p>Now, if you right-click the <em>Replication<\/em> folder and click <em>Launch Replication Monitor<\/em>, you\u2019ll get a whole new view of things. I prefer the distributor view, so I\u2019m choosing that option. It allows me a more global view.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"645\" height=\"422\" class=\"wp-image-86920\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-38.png\" \/><\/p>\n<p>Select your publication on the left. This is a view of the snapshot agent. It shows that the replication snapshot has completed and has been sent to the distributor.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"618\" height=\"419\" class=\"wp-image-86921\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-39.png\" \/><\/p>\n<p>This is the distributor agent, which shows the data being sent from the distributor to the tables.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1366\" height=\"728\" class=\"wp-image-86922\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-40.png\" \/><\/p>\n<p>If you right-click the publication in the tree on the left and click <em>View Details<\/em>, you can get a look under the covers. This is helpful for troubleshooting or checking progress.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"694\" height=\"571\" class=\"wp-image-86923\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-41.png\" \/><\/p>\n<p>Now, when you check SSMS, you should see this!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"292\" height=\"438\" class=\"wp-image-86924\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-42.png\" \/><\/p>\n<p>Finally, make sure that the data all went over. Go back to Replication Monitor and right-click on your publication. Choose <em>Validate Subscriptions\u2026<\/em>. Choose your publication.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"442\" height=\"464\" class=\"wp-image-86925\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-43.png\" \/><\/p>\n<p>Click <em>Validation Options<\/em>. Check the button for a fast row count and uncheck the <em>Compare checksums to verify row data\u2026<\/em>. Really, trust me. You\u2019ll be glad you did because they warn that the process can take a long time, and depending on the size of the table, it really can. Click <em>OK<\/em>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"430\" height=\"330\" class=\"wp-image-86926\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-44.png\" \/><\/p>\n<p>Go back to Replication Monitor. Go to your inner window and right-click the publication. Click <em>View Details.<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"302\" height=\"195\" class=\"wp-image-86927\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-45.png\" \/><\/p>\n<p>When it\u2019s done, you\u2019ll see something like this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"682\" height=\"469\" class=\"wp-image-86928\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2020\/04\/word-image-46.png\" \/><\/p>\n<p>That rowcount validation does just what you might think it does. It compares the rows of data between the publisher and the subscriber to confirm that it is all there. And it is!<\/p>\n<h2>Conclusion<\/h2>\n<p>You did it! It wasn\u2019t awful, was it? You now have another tool in your toolbelt for managing data (especially reporting data), and an availability alternative. Well done!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Replication is one way to copy data to another database or server. In this article, Pamela Mooney describes how to set Transactional Replication.&hellip;<\/p>\n","protected":false},"author":316278,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[143527],"tags":[95509],"coauthors":[97572],"class_list":["post-86886","post","type-post","status-publish","format-standard","hentry","category-database-administration-sql-server","tag-standardize"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/86886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/316278"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=86886"}],"version-history":[{"count":4,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/86886\/revisions"}],"predecessor-version":[{"id":86930,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/86886\/revisions\/86930"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=86886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=86886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=86886"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=86886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}