SQL Server Data Compression

Older compression tech
Compression has been around for a while…
SQL Server has had the Data Compression feature for a while, ever since the version 2008, so it is hardly a new thing. However as it has been Enterprise Edition feature until SQL Server 2016 Service Pack 1, it is not something you see employed very often. Technically speaking, you could also compress data before 2008 by using NTFS file level compression on a read only data. However with the implementation of SQL Server Data Compression you could now do it inside the database on a page or a row level.

Continue reading “SQL Server Data Compression”

Difference between a backup and a valid backup

It took me a while to write the first post for 2017, but it has been rather hectic at the office since I moved inside the organization to quite a different role. However I noticed this story a while back and it has been haunting me ever since. Now if you are a DBA then you probably already understand just how important it is to have, not just backups, but valid backups. But what is the difference of a backup and a valid backup?

Continue reading “Difference between a backup and a valid backup”

SQL Server minimum configuration

For the last blog post of the year 2016 I chose something that has been bothering me a bit as of late. Over the past couple months I have come across a number of cases where, after migrating databases to a new server, the end users are reporting increasingly bad performance. What has been common to these situations is that the new server has more and faster CPU cores, more memory, faster disks and should offer better performance, not worse.

Now the first thing I usually do when troubleshooting performance issues, is to check what kind of hardware we have and how the SQL Server has been configured. This is a really simple step to start with: Run msinfo32 to get the hardware details and then query sys.configurations to see how the SQL Server is configured. In these cases, all of the SQL Server configurations were left to their default settings. The result: Systems running to dangerously low levels of available memory which leads to extensive paging of the memory to the disk, and some really wild-looking query parallelization issues.

Continue reading “SQL Server minimum configuration”

Time travelling with SQL Server

Time machineOne of the new interesting features in SQL Server 2016 is the system-versioning with a catchy name, Temporal Tables. The name of the feature offers a hint to its purpose, to collect and to keep historical information about the data changes inside the database over a period of time. Instead of having just the latest data, we now have a way to know what it has been in any previous point in time. The most obvious use case for Temporal Tables is auditing, or at least it is to me, but they can be used for other purposes as well. Some examples are going back in time in case you need to perform a data recovery from an error or a data change operation gone bad, or you might want to use it for reporting purposes.

There are few things about the Temporal Tables that are good to know. First of all the work needed to keep track of the changes is done by the database engine when the system-versioning feature is enabled. Another thing some of you might appreciate is that the feature is available also in Standard Edition. And finally my favorite, it’s actually rather easy to start using the system-versioning as we will discover shortly.

Continue reading “Time travelling with SQL Server”

Customizable PerfMon Counter for SQL Server

As the summer vacation season is pretty much over, it’s time for me to get back to working and blogging again. I had originally planned to write up a few posts during the summer, but as I spend most of my days writing my bachelor’s thesis, I simply didn’t have the energy to do so. And I did also want to enjoy the Finnish summer with the family as the sunny season here isn’t exactly a long one. And what’s a better way to get started than about blogging about SQL Server and Performance Monitor!

Continue reading “Customizable PerfMon Counter for SQL Server”

Managing shared folders in Windows Failover Cluster with Powershell

I’ve been using Powershell more and more lately, most of the time the motivation has been to do repeatable tasks much more quickly and efficiently but there has also been other cases where Powershell has been the only way to accomplish something. Most often this is due to lacking GUI or Windows issues that have prevented me from using the GUI in the first place. This post describes the latter scenario and the Powershell workaround.

Continue reading “Managing shared folders in Windows Failover Cluster with Powershell”

Distributed Replay

Distributed Replay is a feature that was first introduced with SQL Server 2012. It allows you to play a set of recorded transactions against a SQL Server database. This can be extremely useful if you’re doing hardware or SQL Server version upgrades and want to test the performance impacts of these changes, or if they’re going to break your application.

Continue reading “Distributed Replay”