Sql-Server

SQL: Getting comfortable working with Resource Governor

In SQL Server versions prior to SQL Server 2008, the database engine had always tried to provide balanced performance to all concurrent users. Most DBAs however have come across situations where they have wished they had control over the priority assigned to users or workloads as the balanced approach that SQL Server provided might not have suited their business needs.

Way back in SQL Server 2008, Microsoft introduced the concept of resource governance and allowed us to exercise a degree of control in this area. The implementation still has a number of limitations but what was supplied was sufficient to deal a large number of common scenarios. As an example of how this technology might be used, I’ll describe a scenario that I commonly encounter.

2025-10-17

SSMS Tips and Tricks 7-10: Setting startup options

When you start SSMS, the default action at startup is to open Object Explorer. But you can change that behavior. The options to do that are in Tools. Options, then Environment, and Startup.

These are the options that are provided:

One that is often surprisingly useful is to open an empty environment. You might want to use SSMS to edit files without any connection to a database and not want to waste time waiting for SSMS to open the connection dialog, just for you to close it again.

2025-10-16

SQL Interview: 86 Striped backups

This is a post in the SQL Interview series. These aren’t trick or gotcha questions, they’re just questions designed to scope out a candidate’s knowledge around SQL Server and Azure SQL Database.

Section: Administration Level: Medium

Question:

What are striped backups and why would you use them?

What do they need to be effective?

Answer:

Striped backups cause stripes of the backup to be written to multiple files. This is done to increase performance.

2025-10-15

SSMS Tips and Tricks 5-9: Closing idle connections

One challenge that I find with T-SQL is that there’s no 100% reliable way to drop a database.

I wish I was joking.

If you execute DROP DATABASE, the command will fail if anyone is connected to the database. The way that we normally drop databases is as follows:

USE master;
GO  

IF EXISTS (SELECT 1 FROM sys.databases AS d WHERE d.[name] = N'somedb')
BEGIN
    ALTER DATABASE somedb SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    DROP DATABASE somedb;
END;

That mostly works, but the problem is that I need to execute the command from the master database. That means that when I set the database to single user, I don’t know that I’m the single user. What I’ve seen happen sometimes, is that the Intellisense system in SSMS is reading further down my script, where I’m perhaps recreating the database, and it’s maintaining a connection to the DB.

2025-10-14

Data Tales 11: The case of the ballooning tables

This is the eleventh tale in a series of stories about data. I hope you enjoy the series.

Recently, I’ve written a series of articles on how the overall size of a financial services database was tamed by the application of table compression, XML compression, and PDF size reduction. I have applied this approach at many sites but recently came across one where the outcome seemed to constantly be getting worse rather than better. Every time I tried to improve the situation, it got worse. Let’s discuss why.

2025-10-13

SSMS Tips and Tricks 8-6: Using the PowerShell terminal

SSMS used to have a built-in web browser. That’s now gone.

What was added, though, is a Developer PowerShell window. On the View menu, you can choose Terminal.

This will then open a Developer PowerShell window:

Note that you can change the version of PowerShell that’s launched, from the drop-down. But the Settings option will take you to the Tools Options page where the Terminal can be configured.

2025-10-12

SQL Interview: 85 Instant file initalization (IFI)

This is a post in the SQL Interview series. These aren’t trick or gotcha questions, they’re just questions designed to scope out a candidate’s knowledge around SQL Server and Azure SQL Database.

Section: Administration Level: Medium

Question:

You are managing a SQL Server 2022 server and have enabled Instant File Initialization (IFI).

Which files will this apply to?

  • Data (MDF and NDF) files only
  • Transaction log files only
  • Both data and transaction log files

Answer:

2025-10-11

SSMS Tips and Tricks 8-5: Undock tabs and windows and using multiple screens

Like Visual Studio that it’s based upon, SSMS is very flexible when working with query windows and tabs.

Most people realize that you can undock and move tabs and windows around. Usually they discover that by accident and then realize that the Reset Window Layout option in the Window menu is helpful.

But one option I’ve found that many people don’t seem to realize is that you can undock just a single query window and move it outside the bounds of SSMS. You can even place it across on another screen if you have multiple screens.

2025-10-10

Data Tales 10: It's a matter of existence

This is the tenth tale in a series of stories about data. I hope you enjoy the series.

I regularly see code that calculates a count of a set of rows then makes a decision that’s based on the count, but only on whether or not the count is zero. Consider this (slightly contrived) example based on AdventureWorks:

DECLARE @PersonCount int;

SELECT @PersonCount = COUNT(*)
FROM Person.Password
WHERE BusinessEntityID = 12
AND PasswordHash = 0x208394209302;

IF @PersonCount > 0
BEGIN
    PRINT N'Password matches';
END;

Now I’ll start by saying that the last thing I’d ever want to see in SQL Server code is this sort of playing around with users and passwords, but I’m ignoring that for now.

2025-10-09

SSMS Tips and Tricks 8-4: Using document groups

In a previous post, I showed how you might use split windows to allow you to work on different parts of a single query at the same time.

But what if you need to work on two queries and see parts of both of them?

That’s where document groups can help you. You can create both vertical and horizontal groups. For me, the most useful is typically side-by-side vertically, for when I’m comparing two sections of code.

2025-10-08