<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SQL Server on Rudi Bruchez</title><link>https://www.pachadata.com/en/categories/sql-server/</link><description>Recent content in SQL Server on Rudi Bruchez</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 28 Aug 2026 16:45:32 +0200</lastBuildDate><atom:link href="https://www.pachadata.com/en/categories/sql-server/index.xml" rel="self" type="application/rss+xml"/><item><title>Identify blocking problems</title><link>https://www.pachadata.com/en/docs/howtos/performance/blocking/</link><pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.pachadata.com/en/docs/howtos/performance/blocking/</guid><description>&lt;div class="alert alert-success" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;TL;DR&lt;/div&gt;&#10;&lt;p&gt;Blocking happens when one session waits for a lock held by another session. To find out &lt;em&gt;who&lt;/em&gt; blocks &lt;em&gt;what&lt;/em&gt;, you enable the &lt;code&gt;blocked process threshold&lt;/code&gt; and start an Extended Events session that records a report every time a block exceeds that threshold. You let it run for a few days, compress the &lt;code&gt;.xel&lt;/code&gt; files and send them for analysis. The impact on production is negligible.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;This page is a procedure to follow from start to finish. If you are in a hurry, the five steps are: &lt;a href="https://www.pachadata.com/en/docs/howtos/performance/blocking/#step-1--set-the-blocked-process-threshold"&gt;set the threshold&lt;/a&gt;, &lt;a href="https://www.pachadata.com/en/docs/howtos/performance/blocking/#step-2--create-and-start-the-event-session"&gt;create the session&lt;/a&gt;, &lt;a href="https://www.pachadata.com/en/docs/howtos/performance/blocking/#step-3--let-the-collection-run"&gt;let it run&lt;/a&gt;, &lt;a href="https://www.pachadata.com/en/docs/howtos/performance/blocking/#step-4--collect-and-send-the-files"&gt;collect the files&lt;/a&gt;, &lt;a href="https://www.pachadata.com/en/docs/howtos/performance/blocking/#step-5--clean-up"&gt;clean up&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>A complete guide to SHRINK in SQL Server</title><link>https://www.pachadata.com/en/docs/howtos/database-maintenance/shrink-database-file/</link><pubDate>Fri, 13 Feb 2026 00:00:00 +0000</pubDate><guid>https://www.pachadata.com/en/docs/howtos/database-maintenance/shrink-database-file/</guid><description>&lt;div class="alert alert-success" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;TL;DR&lt;/div&gt;&#10;&lt;p&gt;A shrink is a &lt;strong&gt;manual, one-off&lt;/strong&gt; operation, never automated and never scheduled.&#10;Always use &lt;code&gt;DBCC SHRINKFILE&lt;/code&gt; on a specific file, never &lt;code&gt;DBCC SHRINKDATABASE&lt;/code&gt;.&#10;On large files, shrink in small increments rather than in one go.&#10;The operation never corrupts the database: SQL Server is dependable here.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="when-should-you-shrink"&gt;When should you shrink?&lt;/h2&gt;&#10;&lt;p&gt;Shrinking is discouraged as a general rule.&#10;It is an expensive operation that &lt;strong&gt;fragments indexes heavily&lt;/strong&gt;.&#10;&lt;a href="https://www.sqlskills.com/about/paul-s-randal/"&gt;Paul Randal&lt;/a&gt;, who wrote the SHRINK command in SQL Server 2005, explains it in detail: &lt;a href="https://www.sqlskills.com/blogs/paul/why-you-should-not-shrink-your-data-files/"&gt;Why you should not shrink your data files&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Why you should NOT multiply SQL Server instances</title><link>https://www.pachadata.com/en/docs/howtos/administration/instances/</link><pubDate>Tue, 27 Jan 2026 00:00:00 +0000</pubDate><guid>https://www.pachadata.com/en/docs/howtos/administration/instances/</guid><description>&lt;div class="alert alert-success" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;TL;DR&lt;/div&gt;&#10;&lt;p&gt;Installing several instances on the same production server is almost never necessary. Consolidate all your databases onto one instance.&lt;/p&gt;&#10;&lt;p&gt;A single instance gives you better performance, better visibility and simpler operations.&lt;/p&gt;&#10;&lt;p&gt;Having to support different SQL Server versions per database is not an argument for several instances. The database compatibility level handles that.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="why-do-people-install-several-instances-on-one-server"&gt;Why do people install several instances on one server?&lt;/h2&gt;&#10;&lt;p&gt;In a world of virtualisation and containers, a system administrator&amp;rsquo;s natural reflex is to isolate: one application, one service, one instance.&lt;/p&gt;</description></item><item><title>Installing and configuring SQL Server 2025 on Windows Server</title><link>https://www.pachadata.com/en/docs/articles/sql-server/administration/installation/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><guid>https://www.pachadata.com/en/docs/articles/sql-server/administration/installation/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;&#10;&lt;p&gt;This guide covers the whole process of installing &lt;strong&gt;SQL Server 2025&lt;/strong&gt; on &lt;strong&gt;Windows Server&lt;/strong&gt; (2019 / 2022 / 2025), then the post-installation configuration through the &lt;strong&gt;Server Properties&lt;/strong&gt; in SSMS and the &lt;strong&gt;SQL Server Configuration Manager&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;&#10;&lt;h3 id="minimum-and-recommended-hardware"&gt;Minimum and recommended hardware&lt;/h3&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Component&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Minimum&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Recommended&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Processor&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;x64 — 1.4 GHz&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2.0 GHz or more, up to 64 cores per NUMA node&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Memory (RAM)&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1 GB, 512 MB for Express&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;≥ 4 GB, increasing with the size of the databases&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Disk space&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6 GB minimum&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;≥ 50 GB for a production environment, excluding data&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Display&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Super VGA 800 × 600&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1920 × 1080&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Network&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Built-in network adapter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Internet access for updates&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="software-requirements"&gt;Software requirements&lt;/h3&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Component&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Required version&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Operating system&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Windows Server 2019 / 2022 / 2025, including Server Core&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;.NET Framework&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4.7.2, installed automatically if missing&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;PowerShell&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5.1 or later&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Network protocols&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;TCP/IP, Named Pipes, Shared Memory, all built into the OS&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; SQL Server 2025 installs on &lt;strong&gt;x64&lt;/strong&gt; processors only. 32-bit installations are no longer supported.&lt;/p&gt;</description></item><item><title>SQL Server transaction log backups: why and how</title><link>https://www.pachadata.com/en/docs/howtos/database-maintenance/transaction-log-backups/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate><guid>https://www.pachadata.com/en/docs/howtos/database-maintenance/transaction-log-backups/</guid><description>&lt;link rel="preload" as="image" href="https://www.pachadata.com/en/docs/howtos/database-maintenance/transaction-log-backups/featured-background_hu_94e703081bb9e1a8.png" media="(max-width: 1200px)"&gt;&#10;&lt;link rel="preload" as="image" href="https://www.pachadata.com/en/docs/howtos/database-maintenance/transaction-log-backups/featured-background_hu_3c535c6841d0e502.png" media="(min-width: 1200px)"&gt;&#10;&lt;style&gt;&#10;#td-cover-block-0 {&#10; background-image: url(/en/docs/howtos/database-maintenance/transaction-log-backups/featured-background_hu_94e703081bb9e1a8.png);&#10;}&#10;@media only screen and (min-width: 1200px) {&#10; #td-cover-block-0 {&#10; background-image: url(/en/docs/howtos/database-maintenance/transaction-log-backups/featured-background_hu_3c535c6841d0e502.png);&#10; }&#10;}&#10;&lt;/style&gt;&#10;&lt;section id="td-cover-block-0" class="row td-cover-block td-cover-block--height-med td-overlay td-overlay--dark -bg-dark" &gt;&#10; &lt;div class="col-12"&gt;&#10; &lt;div class="container td-overlay__inner"&gt;&#10; &lt;div class="text-center"&gt;&#10; &lt;div class="pt-3 lead"&gt;&#10; &#10;&lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &#10;&lt;/section&gt;&#10;&#10;&lt;div class="alert alert-success" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;TL;DR&lt;/div&gt;&#10;&lt;p&gt;A SQL Server transaction log growing out of control, because the database recovery model is &lt;code&gt;FULL&lt;/code&gt;, is one of the most common problems you will meet with SQL Server.&lt;/p&gt;&#10;&lt;p&gt;Administrators often switch to the &lt;code&gt;SIMPLE&lt;/code&gt; recovery model to avoid it, wary of managing a transaction log backup strategy — when that strategy is very nearly mandatory in production.&lt;/p&gt;</description></item><item><title>Do not break your indexes — SARGability and WHERE clause anti-patterns</title><link>https://www.pachadata.com/en/docs/articles/sql-server/performance/sargability/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://www.pachadata.com/en/docs/articles/sql-server/performance/sargability/</guid><description>&lt;div class="alert alert-success" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;TL;DR&lt;/div&gt;&#10;&lt;p&gt;Applying a function to a column in the &lt;code&gt;WHERE&lt;/code&gt; clause stops SQL Server from using the indexes on that column. Such a query is called non-SARGable. The result: an &lt;strong&gt;Index Scan&lt;/strong&gt;, a full traversal, instead of an &lt;strong&gt;Index Seek&lt;/strong&gt;, a direct lookup.&lt;/p&gt;&#10;&lt;p&gt;The most frequent culprits: &lt;code&gt;COALESCE&lt;/code&gt;, &lt;code&gt;ISNULL&lt;/code&gt;, &lt;code&gt;CONVERT&lt;/code&gt;, &lt;code&gt;YEAR()&lt;/code&gt;, &lt;code&gt;LEFT()&lt;/code&gt;, &lt;code&gt;TRIM()&lt;/code&gt; applied to the filtered columns.&lt;/p&gt;&#10;&lt;p&gt;The fix: move the logic to the value or the parameter side, never to the column side.&lt;/p&gt;</description></item></channel></rss>