I was just reading about how the Philippines are working to update their databases in support of faster and better responses in the case of an emergency. While I do volunteer for some of the local emergency services, I'm right at the bottom of the heap as just a radio operator. I don't have any […]
In this article, I wanted to test a common assumption we DBAs make – that adding INCLUDE columns to indexes is harmless. I created a FULL recovery test database with a realistic wide Orders table containing extra large VARCHAR columns to simulate an ERP workload. I ran updates and measured transaction log backup sizes before and after adding INCLUDE columns to a nonclustered index. The results shocked me. The update without INCLUDE columns generated a 10 MB log backup, while the same update with INCLUDE columns produced over 170 MB – a 17x increase in log volume. I explain why this happens: INCLUDE columns are physically stored in index leaf rows, so updates affecting them write bigger log records. I also clarify that updating key columns generates even more log than INCLUDE updates because it involves row movement (delete + insert), but INCLUDE updates still cost more log than if those columns weren’t indexed at all. The takeaway is clear – INCLUDE columns are powerful, but they silently increase transaction log generation, impacting backup sizes, replication lag, and DR readiness. Always measure their real cost before deploying to production.
In Part 1, I explored how to bend SQL Server Agent to our will and peek under the hood of Azure SQL Managed Instance (SQL MI), gaining full OS access to the container (all without relying on xp_cmdshell). But once I realized what kind of door I'd opened, curiosity pushed us further, tempting us to […]
In this next article, we look at creating balanced dimensions on demand.
I hop in the Jeep the other day and turn on my ham radio. Have I mentioned I'm a licensed amateur radio operator? Yeah, yeah, I know. I won't shut up about it. Ha! My call sign is KC1KCE. I haven't been on HF in a while, but I'm regularly on the air locally here […]
Article Overview In this article we will learn how to integrate a Spring boot application with Apache Cassandra database and Redis cache. This is an extension to one of our previous articles which demonstrates the steps to set up Apache Cassandra and how to integrate is with Springboot, link shared below. https://www.sqlservercentral.com/articles/cassandra-springboot-integration In this tutorial […]
One of my favorite things about going to in-person events is just the time when we're sitting around chatting, out in the hallway, over at the vendor booths, maybe in the speaker room. Any of them. Inevitably, you start to get what I would call "sea stories" (Navy & Coasties, "war stories" for the pickles, […]
This article shows the final step of an availability group creation, specifically for a distributed clusterless one.
Working across Oracle, SQL Server, PostgreSQL, and MySQL, I've learned that the real challenge isn’t just knowing each platform, but understanding the subtle differences in terminology, syntax, and mindset, and staying open to learning on the fly every time I jump in. The “Sacred Six” are rules that I’ve learned to live by and accept. […]
By Daniel Janik
The circle cylinder of life Maybe you’ve noticed all the twenty somethings tight rolling...
By Chris Yates
In today’s data-driven economy, organizations are no longer asking if they should invest in...
By Rohit Garg
PostgreSQL, often referred to as Postgres, is a powerful, open-source object-relational database system that...
Comments posted to this topic are about the item How a Legacy Logic Choked...
Comments posted to this topic are about the item When INCLUDE Columns Quietly Inflate...
Comments posted to this topic are about the item Databases and Disasters
I have this table in SQL Server 2022:
CREATE TABLE CustomerLarge (CustomerID INT NOT NULL IDENTITY(1, 1) CONSTRAINT CustomerLargePK PRIMARY KEY CLUSTERED , CustomerName VARCHAR(20) , CustomerContactFirstName VARCHAR(40) , CustomerContactLastName VARCHAR(40) , Address VARCHAR(20) , Address2 VARCHAR(20) , City VARCHAR(20) , CountryCode CHAR(3) , Postal VARCHAR(20) ) GOIf I check the columns_updated() function return in a trigger, what is the data returned? See possible answers