Migrate from Linux to Windows with Availability Groups
This article describes the process to create a read-scale cross-platform SQL Server Availability Group where the primary is Linux and the secondary is Windows.
2025-07-23
369 reads
This article describes the process to create a read-scale cross-platform SQL Server Availability Group where the primary is Linux and the secondary is Windows.
2025-07-23
369 reads
2025-07-23
4,267 reads
Introduction It was the week before Black Friday — the biggest online ad rush of the year. Our US-based ad-tech platform was gearing up for an insane traffic spike. Hundreds of real-time campaigns were about to go live across multiple brands, each with thousands of user sessions flowing through our system. Every incoming user impression […]
2025-07-22
2,408 reads
Take a basic look at database diagrams, what they are, and how to create one.
2025-07-21
1,011 reads
Unlocking Interoperability: A Guide to Foreign Data Wrappers in PostgreSQL and Aurora PostgreSQL AWS RDS As a database professional, I often encounter scenarios where data is fragmented across various systems. In today's distributed IT landscape, it's not uncommon for critical business information to reside in different databases, perhaps an on-premise PostgreSQL instance for legacy applications, […]
2025-07-21
87 reads
2025-07-18
5,913 reads
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.
2025-07-18
711 reads
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 […]
2025-07-17 (first published: 2025-07-16)
454 reads
In this next article, we look at creating balanced dimensions on demand.
2025-07-16
694 reads
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 […]
2025-07-14 (first published: 2024-07-18)
63 reads
By Steve Jones
Leave a gate behind you the way you first found it. – from Excellent...
By SQLPals
Fix Slow, Bloated MSDB: Purge Old History And Add Missing Indexes ...
By James Serra
Organizations increasingly want Snowflake and Microsoft Fabric to coexist without duplicating data or fragmenting...
Comments posted to this topic are about the item 25 Years of SQL Server...
Comments posted to this topic are about the item The Decoded Value
Comments posted to this topic are about the item Deploying SQL Server Developer Edition...
In SQL Server 2025, what is returned from this code:
DECLARE @message VARCHAR(50) = 'Hello SQL Server 2025!'; DECLARE @encoded VARCHAR(MAX); SET @encoded = BASE64_ENCODE(CAST(@message AS VARBINARY(1000))); SELECT BASE64_DECODE(@encoded)See possible answers