<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>2016-02 on Funky Si's Blog (Dev)</title><link>https://blog-dev.funkysi1701.com/2016/02/</link><description>Recent content in 2016-02 on Funky Si's Blog (Dev)</description><generator>Hugo -- gohugo.io</generator><language>en-gb</language><managingEditor>funkysi1701@gmail.com (Simon Foster)</managingEditor><webMaster>funkysi1701@gmail.com (Simon Foster)</webMaster><lastBuildDate>Thu, 25 Feb 2016 20:00:45 +0000</lastBuildDate><atom:link href="https://blog-dev.funkysi1701.com/2016/02/index.xml" rel="self" type="application/rss+xml"/><item><title>Coding myself into a corner</title><link>https://blog-dev.funkysi1701.com/posts/2016/coding-myself-into-a-corner/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 25 Feb 2016 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2016/coding-myself-into-a-corner/</guid><category term="Databse">Databse</category><category term="Access">Access</category><description>&lt;p&gt;I spend an awful lot of my working life adding new features and improvements to a legacy database system.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;legacy&lt;/strong&gt; system is an old method, technology, computer system, or application program, “of, relating to, or being a previous or outdated computer system.” Often a pejorative term, referencing a system as &amp;ldquo;&lt;strong&gt;legacy&lt;/strong&gt;&amp;rdquo; often implies that the system is out of date or in need of replacement.&lt;/p&gt;
&lt;p&gt;My particular legacy system is Microsoft Access. We use Microsoft Access to provide the front end for all our internal databases. The particular technology we use is ADP files which are only supported in Access 2000, 2003 or 2010.&lt;/p&gt;
&lt;p&gt;Microsoft has already dropped support for Access 2000 and 2003, and support for 2010 is due to be dropped in 2020.&lt;/p&gt;
&lt;p&gt;So why am I coding myself into a corner? Its simple for every feature or improvement I create in Access, I increase the amount of features I need to create or port to a new front end.&lt;/p&gt;
&lt;p&gt;This is a very depressing thought, everything I create will need creating again. I am not saving myself work but increasing the amount of work I need to do again.&lt;/p&gt;
&lt;p&gt;The bad news is that my employers like almost all businesses demand results and like a good employee I have been delivering them. I have been promised the mythical “when we are quiet” you can work on rebuilding the database front end. I know this will likely never happen so what are my options.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do nothing&lt;/strong&gt; I have warned my managers that this work needs doing and it is up to them to give me the resources I need. This is not an acceptable option. Firstly I am not future proofing the business, 2020 will be here before we know it. Also I am not developing myself as a developer, as the only experience I am getting is with Legacy technology that has expired or will do very soon. No one wants to employ someone who only has legacy experience.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do something&lt;/strong&gt; I need to keep delivering results and doing what is asked of me. Like any good engineer I should be multiplying my estimates by four, meaning that I have some time that can be used for looking at the bigger picture. This is a win-win option really. Employer gets a solution that is future proof, Employee gets valuable experience in up to date technology.&lt;/p&gt;
&lt;p&gt;What do you think? Have you been tied to legacy technology? Why not leave a comment below.&lt;/p&gt;</description></item><item><title>Trek review: Best of Both Worlds</title><link>https://blog-dev.funkysi1701.com/posts/2016/star-trek-episode-review-the-best-of-both-worlds/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 18 Feb 2016 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2016/star-trek-episode-review-the-best-of-both-worlds/</guid><category term="StarTrek">StarTrek</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2016/Picard_kidnapped_by_the_Borg.jpg"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="Captain Picard assimilated by the Borg as Locutus of Borg" src="https://blog-dev.funkysi1701.com/images/2016/Picard_kidnapped_by_the_Borg.jpg" loading="lazy"
width="1000" height="865"
/&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Episode Title: &lt;strong&gt;The Best of Both Worlds&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Star Trek Type: TNG&lt;/li&gt;
&lt;li&gt;Original Air Date: 18 June 1990 &amp;amp; 24 September 1990&lt;/li&gt;
&lt;li&gt;Written By: Michael Piller&lt;/li&gt;
&lt;li&gt;Directed By: Cliff Bole&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Borg threaten the Federation, when they kidnap Captain Picard and destroy a fleet of 39 Starships. Luckily some original thinking from Commander Riker and Lieutenant Commander Shelby saves the Federation from assimilation.&lt;/p&gt;
&lt;p&gt;Thoughts: I love this episode! It is probably my favourite episode in the whole of trek. I can’t think of a single scene which I don’t like.&lt;/p&gt;
&lt;p&gt;It is a two parter that actually works best as a two parter. The moment that Riker orders the Enterprise to fire on the Borg is great. At the time some thought that Patrick Stewart might leave the show and be replaced by Riker/Shelby. I am very glad that didn’t happen but it is interesting to ponder what that might be like.&lt;/p&gt;
&lt;p&gt;The Borg soundtrack in this episode is great. Ron Jones really captures the spooky threat that the Borg are. I was always disappointed that some of that didn’t continue in First Contact and when the Borg return in Voyager.&lt;/p&gt;
&lt;p&gt;The episode has a cracking pace. From the moment the Borg first attack the Enterprise to the moment the Borg ship explodes the show doesn’t slow down.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;I am Locutus… of Borg. Resistance… is futile.
Your life, as it has been… is over. From this time forward… you will service… us.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Commander Shelby is a great character that enhances the episode and introduces conflict between characters, particularly Riker.&lt;/p&gt;
&lt;p&gt;I have heard that Riker’s thoughts about his career was a mirror to writer Michael Piller’s thoughts about leaving the show. Luckily for us he stayed.&lt;/p&gt;
&lt;p&gt;In a future episode of DS9 Worf comments that he felt there was nothing that they couldn’t do during this time. I have to agree the tag team of him and Data is a great one. If I want rescuing it would be Data and Worf that I would want.&lt;/p&gt;
&lt;p&gt;My good friends at &lt;a href="https://www.trekmate.org.uk/the-best-of-both-worlds-tng-s3-e26-review-the-battle-bridge/" target="_blank" rel="noopener noreferrer"&gt;Trekmate&lt;/a&gt;
have just reviewed part one, why not have a listen?&lt;/p&gt;
&lt;p&gt;The Best of Both Worlds along with all 900+ Star Trek episodes is now available in &lt;a href="https://www.episodeatlas.com/" target="_blank" rel="noopener noreferrer"&gt;Episode Atlas&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>My git repository is too large!</title><link>https://blog-dev.funkysi1701.com/posts/2016/my-git-repository-is-too-large/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 11 Feb 2016 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2016/my-git-repository-is-too-large/</guid><category term="Git">Git</category><category term="SourceControl">SourceControl</category><description>&lt;p&gt;Today I did a clone of one of my git repositories and it took ages to download. Looking into what got downloaded it was easy to see why. The .git folder was over 500Mb in size.&lt;/p&gt;
&lt;p&gt;I know how this has happened. This repository was created in 2013 and has been used by me as a dumping ground for lots of things related to the code which never should have been committed.&lt;/p&gt;
&lt;p&gt;Since 2013 I have learnt a lot more about coding and git so the current version of the files in git isn’t too bad. But git keeps the history of changes for every file so bad practices like this are kept.&lt;/p&gt;
&lt;p&gt;What can I do about this? Well what does google suggest? I found this &lt;code&gt;https://stevelorek.com/how-to-shrink-a-git-repository.html&lt;/code&gt; (link no longer exists).&lt;/p&gt;
&lt;p&gt;It suggests ways of listing all the large files that are stored in git and a way to remove them. As I am the only person that regularly commits to this repository I see no problem with giving it a go.&lt;/p&gt;
&lt;p&gt;I will summarise the steps here.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone url
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now you need all the remote branches so there is a bash script to run&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; branch in &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;git branch -a | grep remotes | grep -v HEAD | grep -v master&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git branch –track &lt;span style="color:#e6db74"&gt;${&lt;/span&gt;branch##*/&lt;span style="color:#e6db74"&gt;}&lt;/span&gt; $branch
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Another bash script then lists the top 10 large files&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#set -x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Shows you the largest objects in your repo’s pack file.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Written for osx.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# @see https://stubbisms.wordpress.com/2009/07/10/git-script-to-show-largest-pack-objects-and-trim-your-waist-line/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# @author Antony Stubbs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# set the internal field spereator to line break, so that we can iterate easily over the verify-pack output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IFS&lt;span style="color:#f92672"&gt;=&lt;/span&gt;$’&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;’;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# list all objects including their size, sort by size, take top 10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;objects&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;git verify-pack -v .git/objects/pack/pack-*.idx | grep -v chain | sort -k3nr | head&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo “All sizes are in kB. The pack column is the size of the object, compressed, inside the pack file.”
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;output&lt;span style="color:#f92672"&gt;=&lt;/span&gt;“size,pack,SHA,location”
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; y in $objects &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# extract the size in bytes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;size&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$((&lt;/span&gt;&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;echo $y | cut -f &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt; -d ‘ ‘&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1024&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# extract the compressed size in bytes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;compressedSize&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$((&lt;/span&gt;&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;echo $y | cut -f &lt;span style="color:#ae81ff"&gt;6&lt;/span&gt; -d ‘ ‘&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1024&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# extract the SHA&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sha&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;echo $y | cut -f &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; -d ‘ ‘&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# find the objects location in the repository tree&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;other&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;git rev-list –all –objects | grep $sha&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#lineBreak=`echo -e “\n”`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;output&lt;span style="color:#f92672"&gt;=&lt;/span&gt;“&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;output&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;size&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;compressedSize&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;other&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;”
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo -e $output
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After running the script you will see details of your largest files. I had *.msi and *.exe files in the mix. To remove them run the following, where filename is the path to the file that needs removing.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git filter-branch –tag-name-filter cat –index-filter ‘git rm -r –cached –ignore-unmatch filename’ –prune-empty -f — –all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To reclaim the disk space run the following commands&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rm -rf .git/refs/original/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git reflog expire –expire=now –all
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git gc –prune=now
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git gc –aggressive –prune=now
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now push your changes back to the remote server.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git push origin –force –all
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git push origin –force –tags
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now if you do a clone it will be much smaller than before and you can get back to coding much quicker, without having to wait.&lt;/p&gt;</description></item><item><title>SQL Transaction Log Backups</title><link>https://blog-dev.funkysi1701.com/posts/2016/transaction-log-backups/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 04 Feb 2016 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2016/transaction-log-backups/</guid><category term="Database">Database</category><category term="SQL">SQL</category><category term="Backups">Backups</category><description>&lt;p&gt;Like many DBAs I spend a lot of time maintaining my SQL Server backups.&lt;/p&gt;
&lt;p&gt;From SQL Server I maintain both full backups and transaction log backups. I have often restored my full backups but until recently I have never restored a transaction log backup. All backup strategy’s are only as good as the last time you tested the restore process.&lt;/p&gt;
&lt;h2 id="so-what-is-a-transaction-log-backup"&gt;So what is a transaction log backup?&lt;a class="anchor ms-1" href="#so-what-is-a-transaction-log-backup" aria-label="Permalink: So what is a transaction log backup?"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A transaction log backup contains all the transaction log records generated since the last full backup and is used to allow the database to be recovered to a specific point in time (usually the time right before a disaster strikes). Since these are incremental, if you want to restore the database to a particular point in time, you need to have all the transaction log records necessary to replay database changes up to that point in time.&lt;/p&gt;
&lt;h2 id="how-to-do-the-restore"&gt;How to do the restore.&lt;a class="anchor ms-1" href="#how-to-do-the-restore" aria-label="Permalink: How to do the restore."&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;First right click on Databases in SQL Management Studio and select restore database. You should then get a screen similar to this.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="SQL Server Management Studio restore database dialog" src="https://blog-dev.funkysi1701.com/images/2016/restore1.jpg" loading="lazy"
width="878" height="732"
/&gt;
&lt;/p&gt;
&lt;p&gt;In source click the &amp;hellip; to allow you to select your backup files.&lt;/p&gt;
&lt;p&gt;Now normally I have only ever selected one file here, the *.bak file. Instead select the *.bak and all the *.trn files as well. After SQL Server has chugged for a few minutes (time will depend on number of transaction files and server/disk speed etc) the restore plan section should fill up with files.&lt;/p&gt;
&lt;p&gt;In the destination database box, type in the name of the database you want to restore. I recommend using a different name to avoid overwriting the original database, appending Test or a datetime to the name is what I usually do.&lt;/p&gt;
&lt;p&gt;On my test server I need to untick the take tail-log backups option off the options screen before I can execute the restore.&lt;/p&gt;
&lt;p&gt;Now you can either check the tick boxes in the restore plan section or (more fun) click the timeline button to select at what point in time you want to restore to.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="SQL Server point-in-time restore timeline selector" src="https://blog-dev.funkysi1701.com/images/2016/restore2.jpg" loading="lazy"
width="797" height="474"
/&gt;
&lt;/p&gt;
&lt;p&gt;You can either select the point in time with your mouse or specify the exact point in the time textbox. Alternatively you can just select the most recent point, probably the most likely option when disaster strikes.&lt;/p&gt;
&lt;p&gt;Now that I have tried doing this on my test server I feel much more confident that when disaster does strike I can get things restored quickly and painlessly.&lt;/p&gt;
&lt;h2 id="how-often-should-you-run-transaction-backups"&gt;How often should you run transaction backups?&lt;a class="anchor ms-1" href="#how-often-should-you-run-transaction-backups" aria-label="Permalink: How often should you run transaction backups?"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The answer to this question depends on how critical your data is. Until very recently I ran mine ever 15 minutes, I have increased this to every 5 minutes, but I have seen recommendations of running it &lt;a href="https://www.brentozar.com/archive/2014/02/back-transaction-logs-every-minute-yes-really/" target="_blank" rel="noopener noreferrer"&gt;every minute&lt;/a&gt;
. The more critical your data the more often you should run them.&lt;/p&gt;</description></item></channel></rss>