<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SQL Server | CraftedSQL</title>
	<atom:link href="https://www.craftedsql.com/tag/sql-server/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Tailored SQL Solutions</description>
	<lastBuildDate>Sat, 26 Sep 2026 16:17:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://www.craftedsql.com/wp-content/uploads/2024/11/CraftedSQL-Website-Icon-150x150.png</url>
	<title>SQL Server | CraftedSQL</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SQL Server High Availability: Define the Failure Before Choosing the Technology</title>
		<link>https://www.craftedsql.com/sql-server-high-availability-design/</link>
		
		<dc:creator><![CDATA[Bjoern@CraftedSQL]]></dc:creator>
		<pubDate>Thu, 01 Oct 2026 10:24:00 +0000</pubDate>
				<category><![CDATA[High Availability & Recovery]]></category>
		<category><![CDATA[Disaster Recovery]]></category>
		<category><![CDATA[Operational Decision Making]]></category>
		<category><![CDATA[Operational Risk]]></category>
		<category><![CDATA[Production Readiness]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">https://www.craftedsql.com/?p=21198</guid>

					<description><![CDATA[<p>A SQL Server high availability discussion can turn into a technology discussion very quickly. Someone suggests an Availability Group, someone else prefers a Failover Cluster Instance, and before long the conversation is about synchronous replicas, shared storage, listeners and automatic failover. Those may all become relevant. But at that point, one important question is often ... <a title="SQL Server High Availability: Define the Failure Before Choosing the Technology" class="read-more" href="https://www.craftedsql.com/sql-server-high-availability-design/" aria-label="Read more about SQL Server High Availability: Define the Failure Before Choosing the Technology">Read more</a></p>
<p>The post <a href="https://www.craftedsql.com/sql-server-high-availability-design/">SQL Server High Availability: Define the Failure Before Choosing the Technology</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">A SQL Server high availability discussion can turn into a technology discussion very quickly. Someone suggests an Availability Group, someone else prefers a Failover Cluster Instance, and before long the conversation is about synchronous replicas, shared storage, listeners and automatic failover.</p>



<p class="wp-block-paragraph">Those may all become relevant. But at that point, one important question is often still unanswered: <strong>what exactly are we trying to protect the service against?</strong></p>



<p class="wp-block-paragraph">A failed Windows node is not the same problem as losing a storage system. An unavailable SQL Server instance is different from losing an entire site. Planned maintenance creates another requirement again. If we do not separate those situations first, choosing the technology becomes partly guesswork. We are already discussing the architecture before we have defined what it actually needs to do.</p>



<h2 class="wp-block-heading">SQL Server high availability starts with the failure the service needs to survive</h2>



<p class="wp-block-paragraph">High availability is not a single condition. A production application can become unavailable because the server hosting SQL Server fails, because Windows or the SQL Server service has a problem, or because storage becomes inaccessible. The network path between the application and database can disappear as well. SQL Server itself may be completely healthy while clients can no longer reach it.</p>



<p class="wp-block-paragraph">The scale of the required protection also varies. One environment may only need to tolerate the loss of a single physical or virtual server. Storage, networking and the data center may already provide sufficient redundancy. Another workload may need to continue operating after the loss of a complete storage platform or location. Both are legitimate requirements, but they lead to different architectures.</p>



<p class="wp-block-paragraph">This is where technologies such as <a href="https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/failover-clustering-and-always-on-availability-groups-sql-server?view=sql-server-ver17">Failover Cluster Instances and Availability Groups</a> enter the discussion, although they solve different parts of the problem. An FCI provides redundancy for a SQL Server instance across Windows Server Failover Cluster nodes, while the database files remain on storage accessible to those nodes. An Availability Group maintains database replicas on separate SQL Server instances and can move the primary role between them.</p>



<p class="wp-block-paragraph">That difference matters, but it still does not tell us which design is appropriate. If the relevant failure is the loss of a Windows node while the shared infrastructure remains available, one architecture may be sufficient. If the requirement also includes a separate copy of the databases or protection against failure of the original storage platform, the design has to cover a wider failure domain.</p>



<p class="wp-block-paragraph">The same reasoning applies beyond SQL Server. Two database servers do not automatically remove every single point of failure. Both systems may still depend on the same storage platform, network components, DNS infrastructure, authentication services or physical location. That does not make such an architecture wrong; shared components may themselves be highly available. What matters is knowing where the common dependencies are and whether they sit inside or outside the failure scenario the design needs to handle.</p>



<p>When reviewing an HA design, I therefore find a different question more useful than simply asking whether two SQL Servers exist: <strong style="display:inline">which failure could remove both systems, or make both unreachable, at the same time?</strong></p>



<p class="wp-block-paragraph">That usually gives the architecture discussion a much clearer boundary.</p>



<h2 class="wp-block-heading">RPO and RTO need to be requirements, not consequences</h2>



<p class="wp-block-paragraph">Once we understand the failure scenarios, the next question is what the organization expects to happen after one of them occurs. How much committed data can the business afford to lose, and how long may the service remain unavailable?</p>



<p class="wp-block-paragraph">We normally describe these requirements as recovery point objective and recovery time objective. They should influence the architecture before the team selects a technology. They should not become numbers derived afterwards from whatever solution the team happened to implement.</p>



<p class="wp-block-paragraph">A workload that can tolerate several minutes of potential data loss gives the architecture more options. A transactional system where losing acknowledged transactions would create a serious business problem has very different requirements. The same applies to recovery time. If an application can remain unavailable for an hour, the design does not need to behave like a system expected to resume operation within a few minutes.</p>



<p class="wp-block-paragraph">Availability Groups provide a good example because the configuration itself changes the recovery characteristics. Synchronous and asynchronous commit modes make different trade-offs around transaction protection, latency and distance. A synchronized synchronous replica can support failover scenarios without losing committed transactions under the conditions covered by that design. An asynchronous replica, by contrast, may not yet contain the latest transactions when the primary fails.</p>



<p class="wp-block-paragraph">Microsoft also provides guidance for <a href="https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/monitor-performance-for-always-on-availability-groups?view=sql-server-ver17">monitoring and estimating RPO and RTO for Availability Groups</a>. That is useful because these values depend on the actual configuration and data movement rather than on the product name alone.</p>



<p class="wp-block-paragraph">RTO depends on much more than the SQL Server role change. After a failover, the new primary must become usable, clients need to reach the correct endpoint and application connections have to recover. Listener configuration, DNS, network paths, authentication, connection strings and client retry behavior can all influence what users actually experience.</p>



<p class="wp-block-paragraph">This is why I would not define recovery time as the number of seconds required for SQL Server to complete a failover. The relevant measurement is the time until the service the business depends on works again. We looked at the same distinction from another direction in <a href="https://www.craftedsql.com/sql-server-restore-validation/">SQL Server Restore Validation</a>: a database being ONLINE is an important technical state, but it does not prove that users can actually use the application service again.</p>



<p class="wp-block-paragraph">The same separation is useful for backups. High availability can reduce interruption caused by certain infrastructure failures, but it does not provide the recovery options of a properly designed backup strategy. An accidental DELETE, an unwanted application change or another logical problem can reach additional replicas as part of normal data movement. If the requirement is to return to an earlier state, that is a recovery problem, not simply an HA problem.</p>



<p class="wp-block-paragraph">This distinction is also important when looking at <a href="https://www.craftedsql.com/sql-server-backup-strategy/">SQL Server backup strategy</a>. High availability and backup can both support service continuity, but they protect against different failure scenarios. Teams should not treat them as substitutes for each other.</p>



<h2 class="wp-block-heading">Maintenance is part of availability too</h2>



<p class="wp-block-paragraph">Unplanned failures naturally dominate high availability discussions, yet many production systems experience planned maintenance far more often than catastrophic infrastructure failure. Windows needs patching, SQL Server needs updates, virtualization hosts need maintenance and hardware eventually gets replaced.</p>



<p class="wp-block-paragraph">Those activities belong in the architecture discussion because the chosen design determines how the workload can move and how much disruption routine maintenance creates.</p>



<p class="wp-block-paragraph">If a service may only be unavailable for a few minutes, the team needs a practical and repeatable way to move production away from the component that needs maintenance. That includes more than issuing a failover command. Someone needs to know whether the target system is ready and whether application connections move as expected. The team also needs to understand how jobs and supporting services behave and what happens if it cannot complete the planned work.</p>



<p class="wp-block-paragraph">A different environment may have a generous maintenance window and no business reason to eliminate every planned interruption. In that situation, additional HA components can create complexity without solving a requirement that actually exists.</p>



<p class="wp-block-paragraph">That trade-off is easy to miss when the discussion starts with technology. More redundancy can remove failure points, but it also introduces additional components, configuration and operating procedures. Availability Groups, Windows clustering, listeners, endpoints, multiple SQL Server instances and possibly multiple locations all become part of the operating model. The team needs to monitor and understand them. During normal operation that complexity may remain almost invisible, but during an incident or maintenance window it suddenly becomes part of the recovery process.</p>



<p class="wp-block-paragraph">For that reason, I consider operational capability part of the architecture rather than something to document afterwards.</p>



<p class="wp-block-paragraph">This becomes particularly important in environments that have been running for many years. People change roles, applications evolve, teams replace infrastructure and the original reasons behind technical decisions become less obvious. An Availability Group or cluster may still be healthy according to monitoring while nobody is entirely comfortable performing a controlled failover because the team no longer fully understands the dependencies around it.</p>



<p class="wp-block-paragraph">The technology has not necessarily become unreliable. The operating model around it has changed.</p>



<p class="wp-block-paragraph">That is also one of the things worth looking at during a <a href="https://www.craftedsql.com/sql-server-health-check-operational-risk/">SQL Server Health Check</a>. The existence of an HA configuration tells us relatively little on its own. Its purpose, dependencies, maintenance procedures and current level of operational understanding are much more informative.</p>



<h2 class="wp-block-heading">Testing a SQL Server high availability design</h2>



<p class="wp-block-paragraph">Documentation and architecture diagrams can describe what should happen during a failure. A controlled failover shows what actually happens.</p>



<p class="wp-block-paragraph">It verifies whether the expected node or replica can take over, but that is only the beginning of the test. The application also needs to reconnect, monitoring should recognize the role change and required SQL Server Agent jobs and supporting processes need to behave correctly. The team also needs a reliable way to decide whether the service is healthy after the transition.</p>



<p class="wp-block-paragraph">Testing turns an assumed recovery time into something measurable. It may show that SQL Server changes roles within seconds while the application needs several additional minutes before users can work again. It can expose a DNS dependency, a connection string that still points directly to one server or an operational step that everyone assumed automation would handle.</p>



<p class="wp-block-paragraph">Those findings are not arguments against the HA technology. They are information about the complete service.</p>



<p class="wp-block-paragraph">This is why I am cautious with designs that look convincing on paper but that teams rarely exercise. If the team considers failover too risky to test during a controlled maintenance window, relying on the same process during an uncontrolled production incident deserves closer examination.</p>



<h2 class="wp-block-heading">AG or FCI becomes a useful question after this</h2>



<p class="wp-block-paragraph">Once the failure domain, recovery objectives, maintenance requirements and operating model are clear, comparing SQL Server technologies becomes much more productive.</p>



<p class="wp-block-paragraph">An FCI can be a natural fit where instance-level continuity is important and the surrounding storage architecture already provides the required availability. An Availability Group can fit a design that needs separate database replicas, database-level failover or replicas across different infrastructure or locations. In some environments, teams deliberately combine the technologies because they address different failure scenarios.</p>



<p class="wp-block-paragraph">There are further differences around storage, networking, instance-level objects, licensing, readable replicas, administration and SQL Server version capabilities. Those details matter when evaluating a concrete architecture, but they are not a substitute for the requirements that lead to it.</p>



<p class="wp-block-paragraph">A long AG-versus-FCI feature matrix can otherwise create a false sense of precision. A feature may be technically attractive without solving a problem the workload actually has. Conversely, a comparatively simple design can be completely appropriate when it matches the required failure domain, RPO, RTO and operating capabilities.</p>



<p class="wp-block-paragraph">Before approving a SQL Server high availability design, I would therefore want to describe several scenarios in ordinary language. We should know what happens when one Windows node disappears, when storage becomes unavailable and when the primary location can no longer be used. For each relevant scenario, we should also understand how much data the business could lose and how long the application may remain unavailable. Finally, the team should have demonstrated the recovery process rather than only documented it.</p>



<p class="wp-block-paragraph">That gives us something much more useful than starting with the question, “Should we use an Availability Group or an FCI?”</p>



<p class="wp-block-paragraph">It tells us what the architecture actually needs to accomplish.</p>



<p class="wp-block-paragraph">Once that is clear, choosing the SQL Server technology becomes a technical decision with defined boundaries rather than the starting point of the design.</p>



<p class="has-small-font-size wp-block-paragraph">Foto von <a href="https://unsplash.com/de/@alfred9069?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">huanyu chen</a> auf <a href="https://unsplash.com/de/fotos/luftaufnahme-eines-komplexen-autobahnknotens-mit-autos-JkqRnB5fYbE?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>
<p>The post <a href="https://www.craftedsql.com/sql-server-high-availability-design/">SQL Server High Availability: Define the Failure Before Choosing the Technology</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SQL Server Execution Plans Need Runtime Context</title>
		<link>https://www.craftedsql.com/sql-server-execution-plans-runtime-context/</link>
		
		<dc:creator><![CDATA[Bjoern@CraftedSQL]]></dc:creator>
		<pubDate>Thu, 24 Sep 2026 10:37:00 +0000</pubDate>
				<category><![CDATA[Performance & Optimization]]></category>
		<category><![CDATA[Cardinality Estimation]]></category>
		<category><![CDATA[Execution Plans]]></category>
		<category><![CDATA[Parameter Sensitivity]]></category>
		<category><![CDATA[Performance Troubleshooting]]></category>
		<category><![CDATA[Query Performance]]></category>
		<category><![CDATA[Query Store]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">https://www.craftedsql.com/?p=21189</guid>

					<description><![CDATA[<p>SQL Server execution plans are often the first place I look when a query behaves differently from what I would expect. They tell me how SQL Server chose to access the data, which join strategies it selected and where estimates may not match what actually happened during execution. An actual plan can add runtime information ... <a title="SQL Server Execution Plans Need Runtime Context" class="read-more" href="https://www.craftedsql.com/sql-server-execution-plans-runtime-context/" aria-label="Read more about SQL Server Execution Plans Need Runtime Context">Read more</a></p>
<p>The post <a href="https://www.craftedsql.com/sql-server-execution-plans-runtime-context/">SQL Server Execution Plans Need Runtime Context</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">SQL Server execution plans are often the first place I look when a query behaves differently from what I would expect. They tell me how SQL Server chose to access the data, which join strategies it selected and where estimates may not match what actually happened during execution. An actual plan can add runtime information as well, so there is usually a lot to work with.</p>



<p class="wp-block-paragraph">The problem starts when people treat the plan as if it were the complete explanation for a performance incident.</p>



<p class="wp-block-paragraph">Suppose users report that an application was slow around 10:00. Someone investigates an hour later, runs the query again and captures an actual execution plan. The query is fast now. The plan looks reasonable. There may still be useful clues in it, but we are already looking at a different execution under different conditions. If I want to understand what happened at 10:00, the plan captured at 11:00 is only one part of the evidence.</p>



<p class="wp-block-paragraph">That distinction sounds obvious, but it matters because execution plans are very persuasive. They are visual, detailed and concrete. It is easy to find an operator that looks suspicious and start tuning from there, even when we have not yet established whether that operator had anything to do with the problem users experienced.</p>



<h2 class="wp-block-heading">What SQL Server execution plans can tell you</h2>



<p class="wp-block-paragraph">An execution plan describes the strategy SQL Server selected for a statement. The optimizer makes that decision using the information available at compile time: statistics, indexes, cardinality estimates, parameter values and other conditions that can influence the plan.</p>



<p class="wp-block-paragraph">An estimated plan shows that compiled strategy without running the query. An actual execution plan adds information from the execution itself, including actual row counts and, depending on the plan and SQL Server version, other runtime details. Microsoft explains the distinction in its documentation on <a href="https://learn.microsoft.com/en-us/sql/relational-databases/performance/display-and-save-execution-plans">displaying and saving execution plans</a>.</p>



<p class="wp-block-paragraph">For troubleshooting, I usually prefer the actual plan because I can compare what SQL Server expected with what it really processed. If SQL Server expected a few rows but processed several hundred thousand instead, that is worth investigating. The mismatch may affect join choices, memory requirements or the amount of work performed further up the plan.</p>



<p class="wp-block-paragraph">But the difference itself is not yet a diagnosis. I still need to know whether it helps explain the slow execution I am investigating.</p>



<h3 class="wp-block-heading">Parameter-sensitive workloads change the picture</h3>



<p class="wp-block-paragraph">This becomes especially relevant with parameter-sensitive workloads. A stored procedure may use the same cached plan for one parameter value that returns ten rows and another that returns several hundred thousand. The plan shape can remain almost unchanged while the actual workload is very different. Data distribution can make that difference larger, and so can changes in the surrounding workload. A plan that works perfectly well for one execution can be much less suitable for another without looking obviously broken when viewed in isolation.</p>



<p class="wp-block-paragraph">The same caution applies in the other direction. A scan, a warning or a high estimated cost may look uncomfortable, but none of those things automatically explains the incident. A scan against a small table may be entirely appropriate. An expensive operation that runs once at night may matter less than a small query executed thousands of times during business hours.</p>



<p class="wp-block-paragraph">What I am trying to establish is not whether the plan contains something that could be improved. On a sufficiently busy SQL Server, I can usually find something. I want to know whether the plan explains the behavior that actually caused the problem.</p>



<h2 class="wp-block-heading">The surrounding workload changes what the plan means</h2>



<p class="wp-block-paragraph">A query can use the same execution plan and still take very different amounts of time.</p>



<p class="wp-block-paragraph">Another transaction may block it. Storage latency may increase. CPU pressure can come from unrelated activity, while several normally harmless queries may start running at the same time and compete for the same resources. None of that necessarily changes the plan shape.</p>



<p class="wp-block-paragraph">This is one reason I do not like looking at SQL Server execution plans completely on their own during a production incident. The plan shows what SQL Server intended to do with the query, but elapsed time also includes waiting. If the query spent most of that time waiting for a lock or for storage, tuning an operator may solve the wrong problem.</p>



<p class="wp-block-paragraph">Wait statistics can help here because they add another view of what SQL Server was waiting for. They have the same limitation, though: they are evidence, not a diagnosis on their own. I wrote about that in <a href="https://www.craftedsql.com/sql-server-wait-statistics-context/">SQL Server Wait Statistics Are Not a Diagnosis</a>.</p>



<p class="wp-block-paragraph">This is also where the timing of the investigation becomes important. If I have an actual plan from the affected execution, together with runtime metrics and information about blocking or resource pressure at the same time, the pieces can start to support each other. If I only have a plan captured later, I have to be much more careful about what I conclude from it.</p>



<p class="wp-block-paragraph">That is often the difference between finding a plausible tuning opportunity and actually explaining an incident.</p>



<h2 class="wp-block-heading">When SQL Server execution plans need history</h2>



<p class="wp-block-paragraph">Teams often investigate SQL Server performance problems after the interesting part has already happened.</p>



<p class="wp-block-paragraph">The application was slow earlier in the morning. Users complained, perhaps monitoring raised an alert, and by the time someone starts looking closely everything appears normal again. CPU is back at its usual level, the blocking chain has disappeared and the query that supposedly caused trouble now finishes quickly.</p>



<p class="wp-block-paragraph">At that point, current SQL Server execution plans can tell me how the query behaves now. What I really need is a way to compare the current behavior with the period where the problem existed.</p>



<h3 class="wp-block-heading">Looking back with Query Store</h3>



<p class="wp-block-paragraph">Query Store helps with exactly that. It keeps query texts, execution plans and aggregated runtime statistics over time, which makes it possible to look back instead of relying only on what I can reproduce at the moment of investigation. Microsoft describes the collection process in <a href="https://learn.microsoft.com/en-us/sql/relational-databases/performance/how-query-store-collects-data?view=sql-server-ver16">How Query Store Collects Data</a>.</p>



<p class="wp-block-paragraph">I may find that the query changed plans shortly before duration increased. That does not prove the new plan caused the regression, but it gives me something concrete to investigate. I can compare both plans, look at the affected runtime intervals and see whether the timing fits.</p>



<p class="wp-block-paragraph">Sometimes the more interesting finding is that the plan did not change at all.</p>



<p class="wp-block-paragraph">If Query Store shows the same plan before, during and after the incident, forcing a different plan becomes much harder to justify. I would start looking more closely at the parameter values used during the slow period, concurrency, blocking or resource pressure. The unchanged plan does not tell me what the cause was, but it removes one attractive explanation from the top of the list.</p>



<p class="wp-block-paragraph">That historical perspective is the reason I consider Query Store so useful in production troubleshooting. I covered that in more detail in <a href="https://www.craftedsql.com/sql-server-query-store-performance-history/">SQL Server Query Store: Why Performance History Matters</a>.</p>



<p class="wp-block-paragraph">Without history, it is very easy to compare a bad user experience from 10:00 with a perfectly healthy execution from 11:00 and assume both represent the same situation.</p>



<p class="wp-block-paragraph">They may not.</p>



<h2 class="wp-block-heading">Before I change production, I want the story to make sense</h2>



<p class="wp-block-paragraph">A performance investigation eventually reaches the point where someone wants to change something. Maybe an index is missing. Maybe a different plan would work better. Perhaps a query needs to be rewritten, or a temporary mitigation is required because the application is already affected.</p>



<p class="wp-block-paragraph">During an active incident, restoring service can take priority. There are situations where I will make a reversible operational change before I understand every detail of the root cause. That is different from deciding what the permanent fix should be.</p>



<p class="wp-block-paragraph">Permanent tuning changes have consequences. An index helps reads but also affects writes and consumes storage. A hint limits the optimizer&#8217;s choices. A forced plan can stabilize a regression and later become a problem itself when the data or workload changes.</p>



<p class="wp-block-paragraph">Before I make that kind of change, I want the evidence to fit together reasonably well. The plan should match the execution I am trying to explain, and the runtime behavior should support the hypothesis. Timing matters too. If historical data is available, I also want to know whether the behavior was unusual or simply normal workload seen at an inconvenient moment.</p>



<p class="wp-block-paragraph">That does not require perfect certainty. Production troubleshooting rarely gives us that.</p>



<p class="wp-block-paragraph">It does require enough context that I can explain why I expect the change to address the actual problem rather than merely improve something that looked suspicious in the plan.</p>



<p class="wp-block-paragraph">For me, that is where SQL Server execution plans are most useful. They narrow the investigation, show me where SQL Server&#8217;s decisions deserve a closer look and give me something concrete to compare against runtime behavior and history.</p>



<p class="wp-block-paragraph">They are strong evidence, but rarely the whole story.</p>



<p class="has-small-font-size wp-block-paragraph">Foto von <a href="https://unsplash.com/de/@davidkristianto?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">David Kristianto</a> auf <a href="https://unsplash.com/de/fotos/luftaufnahme-eines-stark-befahrenen-autobahnkreuzes-in-der-abenddammerung-zzM7voOp6Tk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>
<p>The post <a href="https://www.craftedsql.com/sql-server-execution-plans-runtime-context/">SQL Server Execution Plans Need Runtime Context</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>A Restored Database Is Not the Same as a Recovered Service</title>
		<link>https://www.craftedsql.com/sql-server-restore-validation/</link>
					<comments>https://www.craftedsql.com/sql-server-restore-validation/#comments</comments>
		
		<dc:creator><![CDATA[Bjoern@CraftedSQL]]></dc:creator>
		<pubDate>Thu, 10 Sep 2026 11:33:00 +0000</pubDate>
				<category><![CDATA[High Availability & Recovery]]></category>
		<category><![CDATA[Backup and Recovery]]></category>
		<category><![CDATA[Disaster Recovery]]></category>
		<category><![CDATA[Restore Validation]]></category>
		<category><![CDATA[RPO]]></category>
		<category><![CDATA[RTO]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">https://www.craftedsql.com/?p=21171</guid>

					<description><![CDATA[<p>A SQL Server restore can complete successfully while the business service behind it remains unavailable. The database may return to an ONLINE state, but that status only tells us something about SQL Server itself. SQL Server restore validation therefore needs to look further: can the application connect, are the required dependencies available, and is the ... <a title="A Restored Database Is Not the Same as a Recovered Service" class="read-more" href="https://www.craftedsql.com/sql-server-restore-validation/" aria-label="Read more about A Restored Database Is Not the Same as a Recovered Service">Read more</a></p>
<p>The post <a href="https://www.craftedsql.com/sql-server-restore-validation/">A Restored Database Is Not the Same as a Recovered Service</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">A SQL Server restore can complete successfully while the business service behind it remains unavailable. The database may return to an <code>ONLINE</code> state, but that status only tells us something about SQL Server itself. SQL Server restore validation therefore needs to look further: can the application connect, are the required dependencies available, and is the recovered data at the point the business actually needs?</p>



<p class="wp-block-paragraph">If a restore test only needs to prove that SQL Server can restore a backup file, reaching <code>ONLINE</code> may answer the immediate technical question. When the goal is to demonstrate recovery of a business-critical service, however, the database state provides only part of the evidence. Stopping the test at that point can create more confidence than the result really supports.</p>



<p class="wp-block-paragraph">Backup and recovery are often discussed as though restoring the database marks the end of the process. From a SQL Server perspective, that may be true, but operationally the more useful question is what the organization can actually use once the restore has finished.</p>



<h2 class="wp-block-heading">A successful restore proves something important, but not everything</h2>



<p class="wp-block-paragraph">The first task of a restore test is practical: confirm that the available backups can recreate the database. A backup job may run successfully for months and produce valid-looking backup files. Even so, it does not provide the same evidence as restoring those files under controlled conditions.</p>



<p class="wp-block-paragraph">Depending on the recovery requirement, the technical validation may also confirm the expected backup chain and check the resulting database state. It may also need to establish which point in time the restore has recovered. Microsoft documents the <a href="https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/restore-and-recovery-overview-sql-server" rel="noopener">SQL Server restore and recovery process</a> in detail, although those technical steps still answer questions about the database rather than the service that depends on it.</p>



<p class="wp-block-paragraph">The operational part begins once SQL Server has completed its work, because an application rarely depends on a restored database alone. It also needs to find the SQL Server instance, authenticate correctly and interact with the other components the workload requires.</p>



<p class="wp-block-paragraph"><strong>That is where the difference between database restored and service recovered becomes visible.</strong></p>



<h2 class="wp-block-heading">The database is part of a larger dependency chain</h2>



<p class="wp-block-paragraph">Some dependencies an application needs do not live inside the restored database at all. SQL Server logins, SQL Agent jobs, credentials, linked servers and instance-level configuration may matter. Application configuration, certificates, DNS, network access or external services can introduce further dependencies outside SQL Server.</p>



<p class="wp-block-paragraph">This does not mean that every restore test should become an exhaustive inventory of every possible server object or infrastructure component. The useful question is narrower: which dependencies does this particular service require, and does the recovery design include them?</p>



<p class="wp-block-paragraph">During normal operation, many of those relationships remain largely invisible because everything is already in place. A recovery makes them much easier to see, especially when the database is technically available but the application still cannot use it.</p>



<p class="wp-block-paragraph">Restore testing therefore provides value beyond validating the backup itself. It also shows how well the organization understands the system and the dependencies needed to bring it back into use.</p>



<h2 class="wp-block-heading">Application connectivity deserves its own validation</h2>



<p class="wp-block-paragraph">A common gap appears when the database team checks the restored database, but nobody tests the application against the recovered environment. From the SQL Server side, everything may look reasonable: the database is online, queries run and the expected objects exist. None of those checks proves that the application can establish its own connection and perform the work for which the database exists.</p>



<p class="wp-block-paragraph">Authentication may behave differently on the recovery system. A connection string may still reference another server, a required login may be missing or mapped incorrectly, or a network dependency may differ from production. In each case, the restore can succeed technically while the service remains unusable.</p>



<p class="wp-block-paragraph">For a simple application, proving service availability may require little more than connecting through the application and executing a known function. In a more complex environment, the database team may not be able to make that judgement alone. Application support or a business owner may need to confirm that the relevant workflow behaves as expected.</p>



<p class="wp-block-paragraph">The point is not to prescribe one universal test. Someone needs to validate the recovered environment from the perspective of the service, rather than only from the perspective of SQL Server.</p>



<h2 class="wp-block-heading">The right database can still contain the wrong data</h2>



<p class="wp-block-paragraph">Another distinction appears when the database itself is healthy, but the restored point in time does not meet the business requirement.</p>



<p class="wp-block-paragraph">A database can restore successfully and pass technical checks while still leaving the organization with more data loss than it intended to accept. Suppose the most recent usable recovery point is several hours old, while the agreed recovery point objective allows only a much smaller gap. In that case, the restore worked, but the recovery objective did not.</p>



<p class="wp-block-paragraph">This is where RPO becomes operational rather than theoretical. The relevant question is not simply whether the organization can restore data. It also needs to know which data would actually be available after a realistic failure and whether that recovery point is acceptable for the affected process.</p>



<p class="wp-block-paragraph">Backup frequency, transaction log backups, retention and the availability of the required backup chain all influence that result. Effective SQL Server restore validation should therefore make the recovered point in time visible. The database state alone does not prove that the recovery requirement has been met.</p>



<p class="wp-block-paragraph">Otherwise, the technical team may correctly report that the restore succeeded, while the application owner later discovers that the available data is older than expected.</p>



<h2 class="wp-block-heading">Recovery time does not stop when RESTORE finishes</h2>



<p class="wp-block-paragraph">The same distinction applies to recovery time, because the SQL Server restore represents only one part of the time needed to return a service to use. A useful SQL Server restore validation process should therefore measure more than the restore operation itself. Application checks, dependency validation and operational approval may add significant time before the service can resume.</p>



<p class="wp-block-paragraph">A restore operation is easy to measure because it has a clear start and finish. Suppose the database takes 35 minutes to restore, but the teams then need another hour to resolve dependencies and reconnect the application. They may also need to validate the data and approve the return to service. In that case, 35 minutes remains useful technical information, but it is not the effective service recovery time.</p>



<p class="wp-block-paragraph">For business continuity planning, the meaningful endpoint is the moment when the required service can actually resume. Reaching that point may involve several teams. Infrastructure may provide the platform, the DBA may restore and validate the database, and application support may verify connectivity and behaviour. The business owner may still need to decide whether the recovered state is acceptable.</p>



<p class="wp-block-paragraph">When teams have never tested those handoffs, the organization may know how long SQL Server needs for a restore. It still may not know how long the complete recovery really takes.</p>



<h2 class="wp-block-heading">Recovery needs a defined end condition</h2>



<p class="wp-block-paragraph">That leads to one of the less technical questions in the process: who decides that recovery is complete?</p>



<p class="wp-block-paragraph">The DBA can confirm a successful database restore and verify that SQL Server sees the database as available. Infrastructure can confirm that the server and network work as expected, while application support can verify connectivity and application behaviour. Depending on the system, a business owner may also need to confirm that the recovered data and the relevant workflow are acceptable.</p>



<p class="wp-block-paragraph">No universal division of responsibility fits every environment, nor does one need to. The boundary should simply be understood before an incident occurs. If every team considers its own technical task complete without a shared definition of the final outcome, several successful individual steps can still leave the service unavailable beyond the required recovery time.</p>



<p class="wp-block-paragraph">A useful restore test therefore needs an operational end condition. Instead of ending with “the database is ONLINE,” the test should establish that the required data is available and the application can use it. The relevant dependencies also need to be in place, and the responsible people need enough evidence to return the service to operation.</p>



<p class="wp-block-paragraph">That provides a different level of assurance, because it describes an operational outcome rather than a database state.</p>



<h2 class="wp-block-heading">What SQL Server restore validation should actually prove</h2>



<p class="wp-block-paragraph">Backup strategy and restore validation are sometimes treated as separate administrative topics, although they address the same recovery question. Backup frequency, retention, protected storage, monitoring and transaction log handling exist because the organization expects to recover something from them when needed.</p>



<p class="wp-block-paragraph">Restore testing allows the organization to test those assumptions against an actual outcome.</p>



<p class="wp-block-paragraph">Can the team locate and access the required backups? Does the necessary backup chain exist, and can the team restore the database away from the original system if necessary? Are the important dependencies known? Can the application use the recovered database, and does the resulting recovery point meet the requirement?</p>



<p class="wp-block-paragraph">Those questions provide more useful evidence than a green backup job alone. They connect the technical backup process to the service it is meant to protect.</p>



<p class="wp-block-paragraph">The earlier CraftedSQL article <a href="/sql-server-backup-strategy/" target="_blank" rel="noreferrer noopener">SQL Server Backup Strategy: Why Successful Backups Are Not Enough</a> looked at this from the backup side. Restore validation provides the corresponding recovery perspective: the backup process becomes much more meaningful once the organization has evidence of what it can actually recover from it.</p>



<h2 class="wp-block-heading">The test should reflect the service you are trying to recover</h2>



<p class="wp-block-paragraph">No single restore-validation procedure fits every SQL Server environment, because recovery requirements differ substantially. A reporting database that may remain unavailable for several hours does not need the same validation process as an operational system with stricter recovery requirements. A self-contained application also has a different dependency chain from a service that spans several databases, interfaces and infrastructure components.</p>



<p class="wp-block-paragraph">Good SQL Server restore validation therefore starts with the expected recovery outcome rather than with a generic checklist. What must be available again, and how much data loss can the organization accept? Which dependencies are required? Who can verify that the application works, and who is responsible for releasing the service back into operation?</p>



<p class="wp-block-paragraph">Once those questions are clear, the team can test the restore process against them. That makes it much easier to define what a successful recovery test actually means.</p>



<p class="wp-block-paragraph">A database reaching <code>ONLINE</code> remains an important milestone, but it is not the same thing as having recovered the service that depends on it.</p>



<p class="has-small-font-size wp-block-paragraph">Foto von <a href="https://unsplash.com/de/@hyoshining?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Hyoshin Choi</a> auf <a href="https://unsplash.com/de/fotos/eine-person-die-auf-einer-brucke-geht-bN4kaXPNxPA?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://www.craftedsql.com/sql-server-restore-validation/">A Restored Database Is Not the Same as a Recovered Service</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.craftedsql.com/sql-server-restore-validation/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>When Permissions Outlive Their Context in SQL Server</title>
		<link>https://www.craftedsql.com/sql-server-permissions-historical-access/</link>
		
		<dc:creator><![CDATA[Bjoern@CraftedSQL]]></dc:creator>
		<pubDate>Thu, 03 Sep 2026 16:27:05 +0000</pubDate>
				<category><![CDATA[Consulting & Practice]]></category>
		<category><![CDATA[Service Accounts]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Permissions]]></category>
		<category><![CDATA[SQL Server Security]]></category>
		<guid isPermaLink="false">https://www.craftedsql.com/?p=21143</guid>

					<description><![CDATA[<p>Most SQL Server permissions begin with a perfectly reasonable decision. An application needs access to another database, a service account requires additional rights for a deployment, or an administrator receives broader permissions while a migration is in progress. At that point, the reason is probably known, and there may even be a ticket, a project ... <a title="When Permissions Outlive Their Context in SQL Server" class="read-more" href="https://www.craftedsql.com/sql-server-permissions-historical-access/" aria-label="Read more about When Permissions Outlive Their Context in SQL Server">Read more</a></p>
<p>The post <a href="https://www.craftedsql.com/sql-server-permissions-historical-access/">When Permissions Outlive Their Context in SQL Server</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Most SQL Server permissions begin with a perfectly reasonable decision. An application needs access to another database, a service account requires additional rights for a deployment, or an administrator receives broader permissions while a migration is in progress.</p>



<p class="wp-block-paragraph">At that point, the reason is probably known, and there may even be a ticket, a project document or someone who can explain exactly why the access is required. The problem tends to appear much later, after applications have changed, projects have ended and the people involved have moved to different roles, while the permissions created along the way have remained untouched.</p>



<p class="wp-block-paragraph">The SQL Server still works, the application continues to run and nobody reports a security problem, so there is little operational pressure to revisit those decisions. Over time, however, the environment accumulates access that may still be technically valid while the context behind it slowly disappears.</p>



<p class="wp-block-paragraph">That is where permission reviews become more interesting than simply finding accounts with elevated privileges.</p>



<h2 class="wp-block-heading">The permission itself does not explain why it exists</h2>



<p class="wp-block-paragraph">The SQL Server permissions model gives us enough metadata to build a reasonably detailed picture of access across an instance. We can inspect server and database principals, role memberships, direct grants and Windows groups, then identify accounts that appear unusually powerful or whose purpose is unclear. Microsoft documents the relevant principals, roles and catalog views in its <a href="https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/getting-started-with-database-engine-permissions?view=sql-server-ver17">Database Engine permissions documentation</a>.</p>



<p class="wp-block-paragraph">That inventory is useful, but it is only the starting point because the technical configuration rarely tells the whole story. A login may have broad access because a current application genuinely needs it, or because somebody granted those permissions during a migration six years ago and nobody ever revisited the decision afterwards.</p>



<p class="wp-block-paragraph">From the permission alone, those situations can look almost identical.</p>



<p class="wp-block-paragraph">When I review an established SQL Server environment, I therefore want to understand more than which login belongs to which role. I want to know what uses the access today, who owns the corresponding application or process, and whether the current privilege level still matches the technical requirement.</p>



<p class="wp-block-paragraph">In environments that have been running for many years, answering those questions can be considerably harder than producing the permission inventory itself. SQL Server permissions have a habit of surviving organizational and technical changes much longer than the documentation that once explained them.</p>



<h2 class="wp-block-heading">Reviewing old SQL Server permissions needs context, not assumptions</h2>



<p class="wp-block-paragraph">The age of a login or permission is useful information, but it is not evidence that the access is obsolete.</p>



<p class="wp-block-paragraph">An account may belong to an application that was retired years ago, in which case removing it may be straightforward once that dependency has been confirmed. Another account may appear equally old and equally unfamiliar, yet still belong to an integration that runs once a month, a maintenance process that is used only occasionally, or a component that becomes relevant during recovery.</p>



<p class="wp-block-paragraph">A short observation period will not necessarily reveal those dependencies, and neither will the fact that nobody immediately recognizes the account name.</p>



<p class="wp-block-paragraph">That creates an uncomfortable but important distinction. “Nobody knows what this account does” should trigger an investigation, but it should not automatically trigger a <code>DROP LOGIN</code>, just as uncertainty should not become a reason to preserve unexplained privileged access indefinitely.</p>



<p class="wp-block-paragraph">Both approaches create risk.</p>



<p class="wp-block-paragraph">Leaving unnecessary administrative access in place increases the security exposure of the environment, while removing access without understanding the dependency can turn a security cleanup into an availability incident. A useful permission review therefore has to deal with both sides of that problem rather than optimizing for the shortest possible findings list.</p>



<h2 class="wp-block-heading">Reconstructing the dependency before changing access</h2>



<p class="wp-block-paragraph">Once an unusual permission has been identified, I would start reconstructing the context around it. Is the account associated with a person, an application, a SQL Server Agent job, a Windows service or another technical process? Is there evidence that the access is still used, and can somebody identify an owner who is able to confirm what that process actually requires?</p>



<p class="wp-block-paragraph">If the original documentation is missing, the answers may have to come from several places, including job ownership, service configurations, Windows group memberships, application settings or authentication activity. The exact investigation depends on the environment, but the objective remains the same: gather enough evidence to distinguish required access from access that merely survived.</p>



<p class="wp-block-paragraph">An account that cannot yet be classified should remain visible as an unresolved finding. Lack of context is itself an operational problem because it means that nobody currently has enough information to make a safe decision about that part of the system.</p>



<p class="wp-block-paragraph">In practice, permissions are often only one part of a broader <a href="https://www.craftedsql.com/sql-server-consulting-services/">SQL Server security review</a>. Service accounts and administrative access can expose the same underlying problem from another direction: access still exists, but the reason for it is no longer sufficiently understood.</p>



<h2 class="wp-block-heading">Why service accounts complicate SQL Server permissions reviews</h2>



<p class="wp-block-paragraph">Service accounts are a good example because they can remain unchanged for much longer than the people who originally configured them.</p>



<p class="wp-block-paragraph">An account may have been created during the first deployment of an application, received additional privileges during a later migration and then continued running quietly through several upgrades. Years later, the application is still business-critical, but nobody can explain whether all of the SQL Server permissions accumulated by its service account are still necessary.</p>



<p class="wp-block-paragraph">Sometimes the answer is straightforward once the application owner becomes involved. In other cases, the account has become part of a chain of technical dependencies that crosses SQL Server, Windows services, scheduled tasks and application components, which makes a seemingly simple permission change much harder to evaluate safely.</p>



<p class="wp-block-paragraph">This is why the privilege level alone does not tell me enough.</p>



<p class="wp-block-paragraph">If a service account has broad access, I want to know what would stop working if that access were reduced and whether the answer is based on current knowledge rather than on fear of touching an old system. Microsoft also recommends running SQL Server services with the lowest possible user rights and avoiding unnecessary additional permissions for service accounts; the details depend on the service and account type, but the underlying principle is clear. See <a href="https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/configure-windows-service-accounts-and-permissions?view=sql-server-ver17">Configure Windows Service Accounts and Permissions</a> for the current Microsoft guidance.</p>



<p class="wp-block-paragraph">If nobody can explain what the service account actually requires, the permission problem is accompanied by a second problem: the organization has lost part of the operational knowledge needed to change the system safely. That does not make the current access acceptable, but it changes the next step because the dependency first has to be understood well enough that the change can be controlled.</p>



<h2 class="wp-block-heading">Least privilege is also a production change</h2>



<p class="wp-block-paragraph">The principle of least privilege is simple enough: an account should have the permissions it requires and no more. Applying that principle to a production environment that has grown organically for ten or fifteen years is less simple because reducing permissions changes something that another component may depend on.</p>



<p class="wp-block-paragraph">For significant permissions, I therefore treat remediation like any other production change. Before removing or reducing access, I want to understand the expected dependency, know how the result will be validated and have a realistic rollback path if the assumption turns out to be wrong.</p>



<p class="wp-block-paragraph">The amount of effort should match the possible impact. Removing an obsolete user from an unused development database does not require the same level of preparation as changing the account behind a business-critical application, but both changes should be based on more than the appearance of a permission in a report.</p>



<p class="wp-block-paragraph">This is also where some security reviews become less useful than they could be.</p>



<p class="wp-block-paragraph">A large findings list creates visible activity, yet it does not necessarily tell the organization what should happen next. If twenty accounts are marked because they are old, another ten because they have direct grants and several service accounts because they appear highly privileged, the technical observations still need to be translated into priorities.</p>



<p class="wp-block-paragraph">An undocumented account with server-wide administrative privileges deserves different attention from an old database user with limited access to a non-production database. Likewise, a service account supporting a critical workload may require more careful investigation than several obviously obsolete logins whose dependencies have already been ruled out.</p>



<p class="wp-block-paragraph">Age matters, privilege matters and scope matters, but so do workload importance, current usage and the ability to explain why the access still exists.</p>



<h2 class="wp-block-heading">A useful review should lead to decisions</h2>



<p class="wp-block-paragraph">At the end of a SQL Server permissions review, I do not expect every account to fall into the same category.</p>



<p class="wp-block-paragraph">Some permissions will be appropriate and can remain unchanged. Others will still be required, although the current privilege level is broader than necessary and should be reduced. Some accounts will turn out to be obsolete and can be prepared for removal, while another group will require further investigation because the available evidence is not yet good enough for a safe decision.</p>



<p class="wp-block-paragraph">That last group should not be hidden simply because it makes the review look unfinished. In a mature environment, identifying where operational knowledge is missing can be just as useful as identifying an excessive grant, because it tells us where future changes are likely to carry unnecessary uncertainty.</p>



<p class="wp-block-paragraph">For the important accounts, the review should eventually make three things clear: why the access exists, whether the current permissions are still justified, and who is responsible for that decision.</p>



<p class="wp-block-paragraph">Once those questions can be answered, changing the technical configuration is usually the easier part.</p>



<p class="wp-block-paragraph">This is why historically grown permissions concern me more than many newly granted ones. A recent change normally still has context around it, whether that is a ticket, a project, a deployment or simply somebody who remembers why the decision was made.</p>



<p class="wp-block-paragraph">Older permissions may have survived several generations of applications, administrators and operating procedures while continuing to work exactly as they always did.</p>



<p class="wp-block-paragraph">The access did not disappear.</p>



<p class="wp-block-paragraph">The knowledge around it did.</p>



<p class="wp-block-paragraph">And when privileged access can no longer be explained, that is a good reason to investigate it before either blindly accepting it or blindly removing it.</p>



<p class="has-small-font-size wp-block-paragraph">Foto von <a href="https://unsplash.com/de/@toolmash?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Toolmash Expo</a> auf <a href="https://unsplash.com/de/fotos/elektriker-pruft-schalttafel-mit-multimeter-PkHf7BUWbtk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>
<p>The post <a href="https://www.craftedsql.com/sql-server-permissions-historical-access/">When Permissions Outlive Their Context in SQL Server</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What I Took Away from Data Saturday Rheinland 2026</title>
		<link>https://www.craftedsql.com/data-saturday-rheinland-2026/</link>
		
		<dc:creator><![CDATA[Bjoern@CraftedSQL]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 09:56:00 +0000</pubDate>
				<category><![CDATA[Consulting & Practice]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Data Community]]></category>
		<category><![CDATA[Data Saturday Rheinland]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">https://www.craftedsql.com/?p=20990</guid>

					<description><![CDATA[<p>Two days of technical sessions, direct conversations with speakers and practical exchange with other data professionals at Data Saturday Rheinland 2026.</p>
<p>The post <a href="https://www.craftedsql.com/data-saturday-rheinland-2026/">What I Took Away from Data Saturday Rheinland 2026</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Last Friday and Saturday, I attended Data Saturday Rheinland 2026 at Hochschule Bonn-Rhein-Sieg. The two-day event combined a full-day PostgreSQL pre-conference workshop with sessions on SQL Server performance, generative AI, data literacy and window functions.</p>



<p class="wp-block-paragraph">What made the event particularly useful was the combination of technical content and direct conversations with speakers, DBAs, consultants and other data professionals.</p>



<p class="wp-block-paragraph">I had also submitted sessions for Data Saturday Rheinland myself. Although I attended as a participant this time, I was prepared to step in at short notice when one of the scheduled speakers had to cancel.</p>



<p class="wp-block-paragraph">In the end, the organisers found another replacement, but being available was important to me. Community events depend on people who are willing to contribute, whether through a planned session, an informal discussion or by helping when the original agenda can no longer be maintained.</p>



<p class="wp-block-paragraph">That also changed my perspective on the event. I was not only there to consume content. I had prepared topics of my own, was ready to speak and paid close attention to how other speakers structured their sessions, explained technical details and interacted with the audience.</p>



<h2 class="wp-block-heading">Eight hours of PostgreSQL for SQL Server DBAs</h2>



<p class="wp-block-paragraph">The event started on Friday with Grant Fritchey’s full-day pre-conference session:<br><strong><a href="https://datasaturdays.com/Event/20260711-datasaturday0084#schedule" target="_blank" rel="noreferrer noopener">What a SQL Server DBA Needs to Know About PostgreSQL</a></strong></p>



<p class="wp-block-paragraph">For someone who has spent many years working primarily with SQL Server, PostgreSQL is an interesting subject for several reasons.</p>



<p class="wp-block-paragraph">More organisations are using multiple database platforms. Applications are no longer automatically built on one preferred relational database system, and SQL Server professionals increasingly encounter PostgreSQL in migrations, cloud environments or mixed technology stacks.</p>



<p class="wp-block-paragraph">That does not mean that every SQL Server DBA needs to become a PostgreSQL specialist. It does mean that we should understand the main differences.</p>



<p class="wp-block-paragraph">Administration concepts, configuration, indexing, execution plans, maintenance and troubleshooting may look familiar at first, but the underlying behaviour and operational assumptions are not always the same.</p>



<p class="wp-block-paragraph">An eight-hour session provided enough time to move beyond a simple feature comparison. It allowed Grant to explain where SQL Server experience transfers well, where it can create false assumptions and which PostgreSQL concepts require a different mental model.</p>



<p class="wp-block-paragraph">That distinction matters. Familiar terminology can sometimes be more dangerous than completely unfamiliar technology because it encourages us to assume that two systems behave in the same way.</p>



<h2 class="wp-block-heading">Saturday at Data Saturday Rheinland 2026</h2>



<p class="wp-block-paragraph">Saturday offered several sessions that approached data platforms from very different directions.</p>



<h3 class="wp-block-heading">GenAI and data literacy</h3>



<p class="wp-block-paragraph">Marco Nielinger presented:</p>



<p class="wp-block-paragraph"><strong>GenAI for Data &amp; Analytics: What’s Hot and What’s Not?</strong></p>



<p class="wp-block-paragraph">Generative AI is currently included in almost every technology discussion, but the practical value varies considerably between use cases. Sessions like this help separate capabilities that can already support real work from ideas that are still mainly demonstrations, experiments or marketing.</p>



<p class="wp-block-paragraph">Oliver Engels and Katharina Ricken discussed:</p>



<p class="wp-block-paragraph"><strong>Building Data Literacy in the Microsoft Data Platform Era</strong></p>



<p class="wp-block-paragraph">Technical platforms alone do not solve data problems. An organisation may have modern tools, centralised data and sophisticated reporting while users still struggle to interpret information correctly or make decisions from it.</p>



<p class="wp-block-paragraph">Data literacy is therefore not a side topic. It influences whether investments in analytics and data platforms produce useful results outside the technical teams that build them.</p>



<p class="wp-block-paragraph">Grant Fritchey returned with:</p>



<h3 class="wp-block-heading">SQL Server performance and window functions</h3>



<p class="wp-block-paragraph"><strong>Query Performance Enhancements in SQL Server 2025</strong></p>



<p class="wp-block-paragraph">SQL Server 2025 introduces new options and changes that can affect how we analyse and improve query performance. For DBAs and consultants, the relevant question is not merely which features are new. We also need to understand when they apply, what problems they address and how they change existing troubleshooting practices.</p>



<p class="wp-block-paragraph">New performance features can support diagnosis, but they do not replace the need to connect query behaviour, waits and infrastructure signals. I discussed that distinction in more detail in <a href="https://www.craftedsql.com/sql-server-monitoring-is-not-diagnosis/" data-type="post" data-id="20964" target="_blank" rel="noreferrer noopener">SQL Server Monitoring Is Not Diagnosis</a>.</p>



<p class="wp-block-paragraph">Thomas Hütter closed my personal agenda with:</p>



<p class="wp-block-paragraph"><strong>Window Functions in SQL Server: Brush Up Your Skills</strong></p>



<p class="wp-block-paragraph">Window functions have been available in SQL Server for years, but they are still frequently underused or used without a clear understanding of their behaviour. Revisiting established functionality is often just as useful as learning about a new feature.</p>



<p class="wp-block-paragraph">A better understanding of existing SQL capabilities can simplify queries, reduce unnecessary processing and make code easier to maintain.</p>



<h2 class="wp-block-heading">The value is not limited to the sessions</h2>



<p class="wp-block-paragraph">The sessions were interesting, but events like Data Saturday Rheinland offer something that online training, documentation and recordings cannot fully reproduce.</p>



<p class="wp-block-paragraph">The speakers are physically present.</p>



<p class="wp-block-paragraph">When a detail is unclear, you can ask immediately. When a demonstration raises another question, you can discuss it directly with the person presenting it. Speakers can explain why they recommend a certain approach, where it has failed and which constraints are often missing from a simplified technical example.</p>



<p class="wp-block-paragraph">That direct access changes the quality of the conversation.</p>



<p class="wp-block-paragraph">The same applies to discussions between sessions.</p>



<p class="wp-block-paragraph">Talking with other DBAs, consultants, service providers and platform specialists gives me a broader view of how other organisations work:</p>



<ul class="wp-block-list">
<li>Which problems are they currently seeing?</li>



<li>How are they operating their SQL Server environments?</li>



<li>Which tools and processes have worked for them?</li>



<li>Where have technically reasonable approaches failed in practice?</li>



<li>Why did they choose one solution instead of another?</li>
</ul>



<p class="wp-block-paragraph">These conversations do not always produce an immediate technical answer. Often, their value is in questioning assumptions.</p>



<p class="wp-block-paragraph">A configuration or process may appear normal because it has been used in the same organisation for years. Meeting people from other environments provides a useful comparison. They may solve the same problem differently, face constraints you have never encountered or have already tested an approach you are only beginning to consider.</p>



<h2 class="wp-block-heading">Community events remain relevant</h2>



<p class="wp-block-paragraph">Most technical information is available online. Documentation, conference recordings, blogs and training platforms make it possible to learn almost anything without travelling to an event.</p>



<p class="wp-block-paragraph">But access to information is not the same as access to experience.</p>



<p class="wp-block-paragraph">An in-person community event creates room for follow-up questions, disagreement, practical examples and conversations that were not planned as part of the official agenda.</p>



<p class="wp-block-paragraph">Having submitted sessions myself and being ready to step in also reminded me that these events only work because people contribute their time, experience and willingness to help.</p>



<p class="wp-block-paragraph">For me, that remains one of the strongest reasons to attend.</p>



<p class="wp-block-paragraph"><strong>Data Saturday Rheinland 2026</strong> offered strong speakers, relevant topics and plenty of opportunities to exchange experiences with people working on similar problems from different perspectives.</p>



<p class="wp-block-paragraph">I returned with new technical input, a better understanding of several topics and, equally important, new questions to follow up on.</p>



<p class="wp-block-paragraph">That is a good result from two days at a community event.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://www.craftedsql.com/data-saturday-rheinland-2026/">What I Took Away from Data Saturday Rheinland 2026</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AWS Summit Japan 2026: Agentic AI, Data Platforms, and the Operational Reality Behind the Hype</title>
		<link>https://www.craftedsql.com/agentic-ai-data-platforms-database-operations/</link>
		
		<dc:creator><![CDATA[Bjoern@CraftedSQL]]></dc:creator>
		<pubDate>Wed, 08 Jul 2026 12:51:53 +0000</pubDate>
				<category><![CDATA[Consulting & Practice]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AWS Summit Japan]]></category>
		<category><![CDATA[Data Platforms]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">https://www.craftedsql.com/?p=20969</guid>

					<description><![CDATA[<p>At AWS Summit Japan 2026, the AI message was hard to miss. But the more interesting signal was not the headline itself. It was how naturally Agentic AI data platforms are now being discussed together with infrastructure, analytics, security, developer experience, and operations. This matters because AI does not run in isolation. Once AI systems ... <a title="AWS Summit Japan 2026: Agentic AI, Data Platforms, and the Operational Reality Behind the Hype" class="read-more" href="https://www.craftedsql.com/agentic-ai-data-platforms-database-operations/" aria-label="Read more about AWS Summit Japan 2026: Agentic AI, Data Platforms, and the Operational Reality Behind the Hype">Read more</a></p>
<p>The post <a href="https://www.craftedsql.com/agentic-ai-data-platforms-database-operations/">AWS Summit Japan 2026: Agentic AI, Data Platforms, and the Operational Reality Behind the Hype</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">At <a href="https://aws.amazon.com/jp/events/summits/japan/">AWS Summit Japan 2026</a>, the AI message was hard to miss. But the more interesting signal was not the headline itself. It was how naturally Agentic AI data platforms are now being discussed together with infrastructure, analytics, security, developer experience, and operations.</p>



<p class="wp-block-paragraph">This matters because AI does not run in isolation. Once AI systems move closer to real business workflows, the surrounding platform becomes decisive: the data, the permissions, the integration paths, the observability, and the operational model behind it.</p>



<p class="wp-block-paragraph">Agentic AI is often discussed through demos, assistants, and automation scenarios. But the more relevant question for database and infrastructure professionals is what has to be in place before those scenarios become reliable in production.</p>



<p class="wp-block-paragraph">Behind every impressive AI workflow, there is still a less visible foundation: data quality, permissions, latency, integration, cost control, observability, and operational discipline.</p>



<p class="wp-block-paragraph">The interface may become more intelligent. The underlying systems still have to be trustworthy.</p>



<h2 class="wp-block-heading">Agentic AI data platforms change the conversation, but not the fundamentals</h2>



<p class="wp-block-paragraph">The term “Agentic AI” was clearly central to the event narrative.</p>



<p class="wp-block-paragraph">That is not surprising. The industry is moving from AI systems that answer questions toward systems that can plan, call tools, interact with applications, and execute tasks within defined boundaries.</p>



<p class="wp-block-paragraph">From a business perspective, that sounds powerful. From an operational perspective, it immediately raises harder questions.</p>



<ul class="wp-block-list">
<li>What data is the agent allowed to access?</li>



<li>Which systems can it interact with?</li>



<li>How are decisions logged?</li>



<li>Who owns the outcome if an automated action is wrong?</li>



<li>How do we test the behavior before it touches production processes?</li>
</ul>



<p class="wp-block-paragraph">These are not new concerns. They already exist in data platforms, integration systems, database operations, and enterprise applications. Agentic AI simply makes them harder to ignore.</p>



<p class="wp-block-paragraph">An agent that works with weak data will produce weak decisions faster. An agent with unclear permissions becomes a security risk. An agent connected to unreliable systems will amplify operational noise. And an agent without observability becomes another black box in an already complex environment.</p>



<p class="wp-block-paragraph">The AI layer may be new. The operational discipline behind it is not.</p>



<h2 class="wp-block-heading">The data layer is still where reality starts</h2>



<p class="wp-block-paragraph">For database professionals, one of the most relevant takeaways is that Agentic AI data platforms do not reduce the importance of structured, trustworthy data.</p>



<p class="wp-block-paragraph">It increases it.</p>



<p class="wp-block-paragraph">Large language models can reason over text, summarize information, and generate responses. But enterprise use cases usually depend on something more concrete: customer records, transactions, policies, logs, telemetry, inventory, financial data, operational workflows, and business rules.</p>



<p class="wp-block-paragraph">That data lives somewhere.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="768" src="https://www.craftedsql.com/wp-content/uploads/2026/07/aws-summit-japan-2026-data-platform-architecture-session-1024x768.jpeg" alt="Technical session at AWS Summit Japan 2026 discussing data platform architecture and cloud infrastructure" class="wp-image-20972" srcset="https://www.craftedsql.com/wp-content/uploads/2026/07/aws-summit-japan-2026-data-platform-architecture-session-1024x768.jpeg 1024w, https://www.craftedsql.com/wp-content/uploads/2026/07/aws-summit-japan-2026-data-platform-architecture-session-300x225.jpeg 300w, https://www.craftedsql.com/wp-content/uploads/2026/07/aws-summit-japan-2026-data-platform-architecture-session-768x576.jpeg 768w, https://www.craftedsql.com/wp-content/uploads/2026/07/aws-summit-japan-2026-data-platform-architecture-session.jpeg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Technical sessions around AI and data repeatedly lead back to architecture, integration, and operational control.</figcaption></figure>



<p class="wp-block-paragraph">Often it lives in relational databases. Sometimes in data lakes, warehouses, search indexes, queues, APIs, or application-specific stores. In real environments, usually in a mix of all of them.</p>



<p class="wp-block-paragraph">This is where the practical work begins.</p>



<p class="wp-block-paragraph">Before an AI system can support decisions, the organization needs to know which data is authoritative. Before an agent can automate a process, the boundaries of that process need to be understood. Before analytics can support strategy, the underlying data model must be stable enough to trust.</p>



<p class="wp-block-paragraph">This is not only an AI problem.</p>



<p class="wp-block-paragraph">In practice, it is a data platform problem. In many companies, it is still very much a database operations problem.</p>



<h2 class="wp-block-heading">From dashboards to actions</h2>



<p class="wp-block-paragraph">One of the more interesting shifts in the AI discussion is the move from showing information to helping people act on it.</p>



<p class="wp-block-paragraph">That sounds small, but it changes the responsibility of the platform.</p>



<p class="wp-block-paragraph">Traditional dashboards visualize signals. Monitoring tools raise alerts. Reports show trends. Query tools expose data. But in many environments, the difficult part is not seeing that something happened. The difficult part is understanding what it means and deciding what should happen next.</p>



<p class="wp-block-paragraph">This is already familiar in database operations.</p>



<p class="wp-block-paragraph">A dashboard can show high CPU. That does not explain whether the cause is a missing index, parameter-sensitive execution, parallelism, memory pressure, storage latency, bad application behavior, or a reporting workload running at the wrong time.</p>



<p class="wp-block-paragraph">A monitoring system can show blocking. That does not automatically explain whether the real problem is transaction design, isolation level, missing indexes, deployment behavior, or application retries.</p>



<p class="wp-block-paragraph">AI can help connect signals, context, and possible next steps. But only if the platform provides enough reliable context, and only if recommendations stay within clear operational guardrails.</p>



<p class="wp-block-paragraph">The value is not in replacing expertise. It is in reducing the gap between signal and diagnosis.</p>



<p class="wp-block-paragraph">This is also why monitoring alone is not enough. Signals only become useful when they are connected to diagnosis, context, and operational decisions. I covered this distinction in more detail in <a href="https://www.craftedsql.com/sql-server-monitoring-is-not-diagnosis/">SQL Server Monitoring Is Not Diagnosis</a>.</p>



<h2 class="wp-block-heading">Cloud platforms are becoming control planes</h2>



<p class="wp-block-paragraph">AWS Summit Japan also showed how cloud platforms are increasingly positioning themselves as operational control planes.</p>



<p class="wp-block-paragraph">Infrastructure, application runtime, data services, AI services, security, monitoring, cost management, and automation are no longer separate conversations. They are being connected into broader platform stories.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="768" height="1024" src="https://www.craftedsql.com/wp-content/uploads/2026/07/aws-summit-japan-2026-cloud-platform-operational-architecture-768x1024.jpeg" alt="AWS Summit Japan 2026 presentation showing cloud platform and operational architecture concepts" class="wp-image-20971" srcset="https://www.craftedsql.com/wp-content/uploads/2026/07/aws-summit-japan-2026-cloud-platform-operational-architecture-768x1024.jpeg 768w, https://www.craftedsql.com/wp-content/uploads/2026/07/aws-summit-japan-2026-cloud-platform-operational-architecture-225x300.jpeg 225w, https://www.craftedsql.com/wp-content/uploads/2026/07/aws-summit-japan-2026-cloud-platform-operational-architecture.jpeg 960w" sizes="(max-width: 768px) 100vw, 768px" /><figcaption class="wp-element-caption">The interesting part is not only what AI can do, but what kind of platform discipline is required before it should be trusted.</figcaption></figure>



<p class="wp-block-paragraph">For SQL Server and database professionals, this is worth watching closely.</p>



<p class="wp-block-paragraph">Even if a system remains on-premises or runs outside AWS, the direction is clear: organizations expect more automation, more integration, more observability, and faster feedback loops. They expect platforms to reduce manual work, not only host workloads.</p>



<p class="wp-block-paragraph">But there is a risk.</p>



<p class="wp-block-paragraph">A more automated platform is not automatically a better-operated platform.</p>



<p class="wp-block-paragraph">If the underlying architecture is fragile, automation can make failure faster. If data ownership is unclear, AI can make confusion more scalable. If monitoring is noisy, agents may simply produce more noise. If cost visibility is weak, cloud-native architectures can become expensive before anyone notices.</p>



<p class="wp-block-paragraph">The operational model has to mature together with the technology.</p>



<h2 class="wp-block-heading">What this means for SQL Server environments</h2>



<p class="wp-block-paragraph">At first glance, an AWS Summit may seem far away from day-to-day SQL Server work.</p>



<p class="wp-block-paragraph">The connection is stronger than it appears.</p>



<p class="wp-block-paragraph">Many SQL Server environments are still at the center of critical business processes. They hold transactional data, operational history, reporting structures, application state, and years of accumulated business logic. Even when new cloud services and AI tools enter the architecture, those systems do not simply disappear.</p>



<p class="wp-block-paragraph">They become part of the data supply chain.</p>



<p class="wp-block-paragraph">That means classic database topics remain highly relevant:</p>



<ul class="wp-block-list">
<li>Performance still matters, because AI-driven workflows often depend on timely access to data.</li>



<li>Security still matters, because agents and automation increase the importance of permissions and auditability.</li>



<li>High availability still matters, because intelligent workflows do not help when the authoritative data source is unavailable.</li>



<li>Data modeling still matters, because poor structure creates ambiguity downstream.</li>



<li>Observability still matters, because automated decisions require traceable inputs and measurable outcomes.</li>
</ul>



<p class="wp-block-paragraph">The future does not remove the need for database expertise. It changes where that expertise connects.</p>



<p class="wp-block-paragraph">A SQL Server specialist does not need to become an AI researcher. But it becomes increasingly useful to understand how databases, APIs, analytics layers, event-driven systems, and AI services interact in real architectures.</p>



<p class="wp-block-paragraph">That is where many future troubleshooting and architecture questions will appear.</p>



<h2 class="wp-block-heading">The uncomfortable truth: AI depends on boring reliability</h2>



<p class="wp-block-paragraph">The most important takeaway is also the least fashionable one: Agentic AI depends on boring reliability.</p>



<ul class="wp-block-list">
<li>Stable platforms.</li>



<li>Clear data ownership.</li>



<li>Good logging.</li>



<li>Sensible permissions.</li>



<li>Known recovery paths.</li>



<li>Cost awareness.</li>



<li>Operational discipline.</li>



<li>People who understand what happens below the interface.</li>
</ul>



<p class="wp-block-paragraph">This is not the language of hype, but it is the language of production.</p>



<p class="wp-block-paragraph">The more AI moves into business workflows, the more important it becomes to understand the systems that provide the context, execute the actions, and store the results.</p>



<p class="wp-block-paragraph">That is where databases still matter.</p>



<p class="wp-block-paragraph">Not because every future system will be built around a relational database. But because every serious business system still depends on reliable state, trustworthy data, controlled change, and operational accountability.</p>



<h2 class="wp-block-heading">Looking beyond the SQL Server ecosystem</h2>



<p class="wp-block-paragraph">For a SQL Server-focused consultancy, events like AWS Summit Japan are useful because they widen the perspective.</p>



<p class="wp-block-paragraph">They show where the broader platform market is moving. They make visible how cloud providers frame AI, infrastructure, analytics, developer experience, and operations as connected topics. And they help separate short-term excitement from the structural changes that are likely to affect real environments.</p>



<p class="wp-block-paragraph">The practical conclusion is simple: AI will not make database operations irrelevant. It will make weak data platforms harder to hide.</p>



<p class="wp-block-paragraph">Organizations that want to use AI seriously will need more than models and demos. They will need reliable systems, understood data flows, clean operational boundaries, and people who can diagnose what is happening when the abstraction leaks.</p>



<p class="wp-block-paragraph">That is not new work. But it is becoming more visible.</p>



<p class="wp-block-paragraph">And for those working close to databases and production systems, that may be the most important signal behind the current wave of Agentic AI data platforms.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://www.craftedsql.com/agentic-ai-data-platforms-database-operations/">AWS Summit Japan 2026: Agentic AI, Data Platforms, and the Operational Reality Behind the Hype</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SQL Server 2016 End of Support: The Real Problem Is Not the Date</title>
		<link>https://www.craftedsql.com/sql-server-2016-end-of-support-delayed-decisions/</link>
					<comments>https://www.craftedsql.com/sql-server-2016-end-of-support-delayed-decisions/#comments</comments>
		
		<dc:creator><![CDATA[Bjoern@CraftedSQL]]></dc:creator>
		<pubDate>Thu, 14 May 2026 09:16:00 +0000</pubDate>
				<category><![CDATA[DBA Essentials]]></category>
		<category><![CDATA[Lifecycle Management]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Operations]]></category>
		<guid isPermaLink="false">https://www.craftedsql.com/?p=20746</guid>

					<description><![CDATA[<p>SQL Server 2016 EOL is approaching: Extended Support ends on July 14, 2026, according to the official Microsoft Lifecycle page for SQL Server 2016. Mainstream Support already ended in July 2021. For many organizations, that date is now close enough to appear in roadmaps, risk registers, audit discussions, or internal planning meetings. The date matters, ... <a title="SQL Server 2016 End of Support: The Real Problem Is Not the Date" class="read-more" href="https://www.craftedsql.com/sql-server-2016-end-of-support-delayed-decisions/" aria-label="Read more about SQL Server 2016 End of Support: The Real Problem Is Not the Date">Read more</a></p>
<p>The post <a href="https://www.craftedsql.com/sql-server-2016-end-of-support-delayed-decisions/">SQL Server 2016 End of Support: The Real Problem Is Not the Date</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">SQL Server 2016 EOL is approaching: Extended Support ends on July 14, 2026, according to the official <a href="https://learn.microsoft.com/en-us/lifecycle/products/sql-server-2016" target="_blank" rel="noopener">Microsoft Lifecycle page for SQL Server 2016</a>. Mainstream Support already ended in July 2021. For many organizations, that date is now close enough to appear in roadmaps, risk registers, audit discussions, or internal planning meetings.</p>



<p class="wp-block-paragraph">The date matters, but it is only the visible boundary. In many environments, the real risk starts earlier: when nobody has a reliable overview of affected systems, dependencies, ownership, business criticality, and realistic options. SQL Server 2016 is often not critical because it suddenly stops working. It becomes critical because the organization loses room to act.</p>



<p class="wp-block-paragraph">A database server does not fail automatically because a support date has passed. Applications may continue to run, jobs may still complete, backups may still succeed, and monitoring may still look normal. As with many SQL Server issues, <a href="https://www.craftedsql.com/sql-server-performance-tuning-why-it-often-fails/" type="post" id="20554" target="_blank" rel="noreferrer noopener">visible symptoms do not always reveal the underlying operational risk</a>.</p>



<p class="wp-block-paragraph">That is what makes this topic easy to underestimate. The technical surface can look stable while the operational risk changes underneath.</p>



<figure class="gb-block-image gb-block-image-b764ab93"><img decoding="async" width="2560" height="1707" class="gb-image gb-image-b764ab93" src="https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-inventory-visibility-scaled.jpg" alt="Whiteboard mapping scene representing inventory, visibility, and dependency analysis before SQL Server 2016 EOL decisions." title="sql-server-2016-eol-inventory-visibility" srcset="https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-inventory-visibility-scaled.jpg 2560w, https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-inventory-visibility-300x200.jpg 300w, https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-inventory-visibility-1024x683.jpg 1024w, https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-inventory-visibility-768x512.jpg 768w, https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-inventory-visibility-1536x1024.jpg 1536w, https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-inventory-visibility-2048x1365.jpg 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /></figure>



<h2 class="wp-block-heading">SQL Server 2016 EOL Is Only the Visible Boundary</h2>



<p class="wp-block-paragraph">End of Support does not mean that SQL Server 2016 becomes unusable the next morning. It means that the regular support lifecycle ends and that organizations need a deliberate path forward. That path may involve an upgrade, a migration, Extended Security Updates, temporary continued operation with accepted risk, or a combination of several measures across different systems.</p>



<p class="wp-block-paragraph">Extended Security Updates can be a valid transition mechanism, but they should not be confused with a target state. Microsoft describes <a href="https://learn.microsoft.com/en-us/sql/sql-server/end-of-support/sql-server-extended-security-updates?view=sql-server-ver17" target="_blank" rel="noopener">Extended Security Updates for SQL Server</a> as protection for up to three years after the support lifecycle ends. They do not include new features, functional improvements, or customer-requested fixes. ESU can buy controlled time, but it does not replace a decision about the future of the affected systems.</p>



<p class="wp-block-paragraph">That distinction matters. ESU can be useful when organizations treat it as a bridge with a clear plan. When they treat it as the plan itself, it may simply extend the period of indecision.</p>



<p class="wp-block-paragraph">The weaker question is: <em>Can we keep SQL Server 2016 protected for a while longer?</em> The better question is: <em>Which decision are we making for each affected system, and by when can we realistically implement it?</em></p>



<h2 class="wp-block-heading">In Real Environments, the Pressure Rarely Comes from SQL Server Alone</h2>



<p class="wp-block-paragraph">Lifecycle discussions often move too quickly toward target versions, migration paths, or cloud options. That is understandable, but often premature. In real production environments, the limiting factor is rarely SQL Server alone. The pressure usually comes from applications, dependencies, testing constraints, maintenance windows, vendor support, licensing, ownership, and business risk.</p>



<p class="wp-block-paragraph">A SQL Server instance may look technically upgradeable until someone discovers that an old business application is only certified for a specific SQL Server version. In other cases, no one knows exactly which jobs, linked servers, reports, interfaces, or batch processes depend on that instance. Sometimes the blocker is even simpler: there is no realistic test environment where an upgrade can be validated properly.</p>



<p class="wp-block-paragraph">In that situation, “upgrade to a supported version” may be technically correct, but operationally incomplete. Changing the SQL Server version is only part of the work. The harder part is restoring decision capability.</p>



<p class="wp-block-paragraph">Organizations need to answer basic but uncomfortable questions: Which instances exist? Which databases are business-critical? Which applications depend on them? Who owns the application? Who owns the risk? Which downtime is acceptable? Which systems can be consolidated, replaced, isolated, or moved? Which ones need short-term protection, and which ones need a proper modernization path?</p>



<p class="wp-block-paragraph">Without that clarity, every technical recommendation remains weaker than it looks. This is similar to practical SQL Server troubleshooting, where <a href="https://www.craftedsql.com/sql-server-wait-stats-analysis-context/" type="post" id="20721" target="_blank" rel="noreferrer noopener">separating SQL Server symptoms from underlying causes</a> helps avoid working in the wrong layer.</p>



<h2 class="wp-block-heading">“It Still Runs Fine” Is Not an Operating Strategy</h2>



<p class="wp-block-paragraph">One of the most common mistakes with older SQL Server versions is confusing stability with acceptability. Of course, a SQL Server 2016 system can still run well. Many do. Some teams maintain them carefully, back them up properly, monitor them consistently, and rarely see visible incidents.</p>



<p class="wp-block-paragraph">That should not be dismissed. Stable systems often exist for good reasons, especially in environments with long-lived applications, strict change windows, vendor constraints, or complex dependencies. But past stability is not the same as future readiness.</p>



<p class="wp-block-paragraph">After End of Support, the risk context changes. Security posture, audit discussions, vendor support, internal compliance, customer requirements, insurance expectations, contractual obligations, and the willingness of external service providers to take responsibility for changes can all shift. Depending on the environment, those factors may matter more than whether the database engine appears stable today.</p>



<p class="wp-block-paragraph">This does not mean that every SQL Server 2016 system must be migrated immediately. That would be too simplistic. It means that every affected system needs an explicit decision, because documented, risk-aware temporary continuation is very different from silent continuation because nobody had time to deal with the issue.</p>



<h2 class="wp-block-heading">There Is No Single Correct Answer</h2>



<p class="wp-block-paragraph">For SQL Server 2016, there are several realistic paths. The right one depends on workload, application support, criticality, licensing, infrastructure, business tolerance, and available time. An upgrade to a supported SQL Server version may be the most direct option when the application is compatible, the environment is documented, and testing can be done properly. It reduces lifecycle risk without necessarily changing the entire operating model.</p>



<p class="wp-block-paragraph">A migration or partial modernization may make sense when infrastructure decisions are already pending, when hardware or data center topics are involved, or when selected workloads fit better into another operating model. Organizations should still make that decision deliberately. Cloud is not an automatic escape from missing planning.</p>



<p class="wp-block-paragraph">Extended Security Updates can be a pragmatic transition mechanism when the target decision has already been made but implementation needs more time. The important word is transition. Without a target date and clear ownership, ESU can become a paid extension of the same problem.</p>



<p class="wp-block-paragraph">Some cases may also justify temporary continued operation with documented risk. That should not happen by accident. It needs a conscious assessment of criticality, exposure, compensating controls, backup and restore capability, monitoring, access protection, and a planned retirement or migration point.</p>



<p class="wp-block-paragraph">Still running SQL Server 2016 is not always the dangerous option. The real danger is running SQL Server 2016 without being able to explain why, for how long, under which controls, and who accepted the risk.</p>



<h2 class="wp-block-heading">What Needs to Be Decided Now</h2>



<p class="wp-block-paragraph">The first operational step is not migration. The first step is visibility. For SQL Server 2016 EOL, visibility matters more than choosing a target platform too early. Without a clear inventory, organizations are not deciding between realistic options. They are guessing under time pressure.</p>



<p class="wp-block-paragraph">An organization needs to know which SQL Server 2016 instances exist, which editions are used, which patch levels are installed, which databases are hosted, which applications connect to them, and which systems are business-critical. Without that inventory, any discussion about upgrade, migration, ESU, or risk acceptance remains incomplete.</p>



<p class="wp-block-paragraph">After that, each affected system needs classification. Is this system business-critical? Is the application still supported? Is there a test environment? Is an upgrade technically and organizationally realistic? Is ESU required to buy time? Is there a clear target date? Who owns the decision? Who accepts the remaining risk?</p>



<p class="wp-block-paragraph">These questions look simple, but in real environments they are often exactly where projects slow down. Not because SQL Server is impossible to upgrade, but because the database platform has become part of a larger operational structure that nobody fully mapped for years.</p>



<h2 class="wp-block-heading">The Real Risk Behind SQL Server 2016 EOL Is Delayed Decision-Making</h2>



<p class="wp-block-paragraph">SQL Server 2016 End of Support is an important date, but it is not the core problem. The core problem is delayed decision-making. The later an organization understands which systems are affected and which path is realistic for each of them, the less room it has for controlled action. What could have been a planned lifecycle topic turns into a risk, budget, audit, and priority discussion under time pressure.</p>



<figure class="gb-block-image gb-block-image-017e86e8"><img loading="lazy" decoding="async" width="2560" height="1707" class="gb-image gb-image-017e86e8" src="https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-decision-timeline-scaled.jpg" alt="Planning calendars representing time pressure, coordination, and decision timelines around SQL Server 2016 EOL." title="sql-server-2016-eol-decision-timeline" srcset="https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-decision-timeline-scaled.jpg 2560w, https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-decision-timeline-300x200.jpg 300w, https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-decision-timeline-1024x683.jpg 1024w, https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-decision-timeline-768x512.jpg 768w, https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-decision-timeline-1536x1024.jpg 1536w, https://www.craftedsql.com/wp-content/uploads/2026/05/sql-server-2016-eol-decision-timeline-2048x1365.jpg 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></figure>



<p class="wp-block-paragraph">Panic is the wrong response. A reflexive “move everything to the cloud”, “buy ESU”, or “upgrade everything immediately” is not much better. A better response starts with a clear inventory, a realistic assessment, and a documented decision per system.</p>



<p class="wp-block-paragraph">When organizations handle SQL Server 2016 EOL properly, it can still remain a controlled lifecycle topic. When they handle it too late, it becomes an operational risk discussion with fewer options and less time.</p>



<p class="wp-block-paragraph">An old SQL Server system is not automatically a bad system. It becomes a serious operational risk when nobody can explain why it is still running, what depends on it, how it is protected, who accepted the risk, and when the next decision will be made.</p>



<p class="wp-block-paragraph">If SQL Server 2016 is still part of your production environment, the first useful step is not choosing a target platform. It is building a clear inventory, understanding dependencies, and making a documented decision for each affected system.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://www.craftedsql.com/sql-server-2016-end-of-support-delayed-decisions/">SQL Server 2016 End of Support: The Real Problem Is Not the Date</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.craftedsql.com/sql-server-2016-end-of-support-delayed-decisions/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>SQL Server 2016 End of Support: What Companies Should Review Now</title>
		<link>https://www.craftedsql.com/sql-server-2016-end-of-support-review/</link>
					<comments>https://www.craftedsql.com/sql-server-2016-end-of-support-review/#comments</comments>
		
		<dc:creator><![CDATA[Bjoern@CraftedSQL]]></dc:creator>
		<pubDate>Thu, 02 Apr 2026 07:40:00 +0000</pubDate>
				<category><![CDATA[DBA Essentials]]></category>
		<category><![CDATA[Lifecycle Management]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Upgrade]]></category>
		<guid isPermaLink="false">https://www.craftedsql.com/?p=20512</guid>

					<description><![CDATA[<p>In many SQL Server environments, the first problem with an older version is not the version number itself. The real problem is often that there is no complete and reliable picture of what is still running, which applications depend on it, who owns the systems, and which changes are actually possible without creating new operational ... <a title="SQL Server 2016 End of Support: What Companies Should Review Now" class="read-more" href="https://www.craftedsql.com/sql-server-2016-end-of-support-review/" aria-label="Read more about SQL Server 2016 End of Support: What Companies Should Review Now">Read more</a></p>
<p>The post <a href="https://www.craftedsql.com/sql-server-2016-end-of-support-review/">SQL Server 2016 End of Support: What Companies Should Review Now</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In many SQL Server environments, the first problem with an older version is not the version number itself. The real problem is often that there is no complete and reliable picture of what is still running, which applications depend on it, who owns the systems, and which changes are actually possible without creating new operational risk.</p>



<p class="wp-block-paragraph">This becomes especially relevant for <strong>SQL Server 2016</strong>. On <strong>July 14, 2026</strong>, extended support for SQL Server 2016 comes to an end. From <strong>July 15, 2026</strong>, organizations that still need more time can move into <strong>Extended Security Updates (ESU) Year 1</strong>. See the <a href="https://learn.microsoft.com/en-us/lifecycle/products/sql-server-2016" target="_blank" rel="noopener noreferrer">Microsoft Lifecycle Policy for SQL Server 2016</a>.</p>



<p class="wp-block-paragraph">On paper, that looks like a normal lifecycle milestone. In practice, it is often the moment when older operational decisions become visible again: incomplete inventories, unclear application dependencies, missing vendor statements, undocumented exceptions, and environments that have been running for years but are no longer easy to change.</p>



<p class="wp-block-paragraph">That is why I do not see SQL Server 2016 end of support as just an upgrade topic. In many environments, it is also a question of whether the organization has enough visibility, ownership, and time left to make a controlled decision instead of reacting under pressure.</p>



<h2 class="wp-block-heading">What SQL Server 2016 end of support actually means</h2>



<p class="wp-block-paragraph">As long as a product remains in extended support, Microsoft continues to provide security updates. Once that period ends, those regular security updates stop unless the organization moves to an ESU path. Microsoft’s general lifecycle guidance also makes clear that after support ends, customers should no longer expect the regular support model they had before.</p>



<p class="wp-block-paragraph">That does <strong>not</strong> mean a SQL Server 2016 instance will suddenly stop working on July 15, 2026. The databases will still start, applications may still connect, jobs may still run, and day-to-day operations may look unchanged at first. But from that point onward, the environment has to be assessed differently.</p>



<p class="wp-block-paragraph">Security exposure changes. Audit and compliance discussions become more difficult. Vendor and support boundaries matter more. If there is still no clear strategy by then, the pressure to decide usually increases very quickly, and that pressure rarely improves the quality of technical decisions.</p>



<p class="wp-block-paragraph">The important question is therefore not only when support ends. The more useful question is whether the organization actually knows what it is running, how critical those systems are, and which options are still realistic for each environment.</p>



<h2 class="wp-block-heading">Why doing nothing is a risk</h2>



<p class="wp-block-paragraph">Many legacy environments have been running “just fine” for years. That can create a dangerous kind of comfort, because a system can be stable in daily operations and still be poorly documented, difficult to change, tied to unsupported application stacks, or understood by only a small number of people.</p>



<p class="wp-block-paragraph">“It still works” is not automatically wrong as an observation. It becomes problematic when it replaces a real assessment of risk, dependencies, supportability, and change readiness.</p>



<p class="wp-block-paragraph">In real-world environments, this becomes visible very quickly. Instances are only partially inventoried. Vendor certification for newer SQL Server versions is unclear or missing. What looks like a simple upgrade can sit on top of old interfaces, fragile SQL Agent jobs, linked servers, SSIS packages, special-case integrations, third-party tools, or application components nobody wants to retest under time pressure.</p>



<p class="wp-block-paragraph">In those situations, the database engine is often not the hardest part of the discussion. The harder part is the accumulated operational context around it: unclear ownership, slow approval paths, inherited assumptions, missing documentation, and decisions that were postponed because the system did not create enough pain in daily operations.</p>



<p class="wp-block-paragraph">A similar pattern also appears in acute performance incidents. Teams often react to visible symptoms before they understand the underlying cause. I described that pattern in more detail in <a href="/sql-server-suddenly-slow/">SQL Server suddenly slow? The 5 most common causes</a>. Lifecycle decisions have a similar risk: if the starting point is unclear, the chosen solution may be technically possible but still wrong for the environment.</p>



<p class="wp-block-paragraph">That is why the main risk is not only about future security updates. It is also the loss of room for careful decisions. In practice, the better sequence is usually to understand inventory and dependencies first, and only then discuss whether upgrade, migration, Azure, or ESU is the right path.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="481" src="https://www.craftedsql.com/wp-content/uploads/2026/03/sql-server-2016-end-of-support-decision-overview-graphic-e1774937604593-1024x481.png" alt="SQL Server 2016 end of support decision path from inventory to upgrade migration Azure or ESU" class="wp-image-20516" srcset="https://www.craftedsql.com/wp-content/uploads/2026/03/sql-server-2016-end-of-support-decision-overview-graphic-e1774937604593-1024x481.png 1024w, https://www.craftedsql.com/wp-content/uploads/2026/03/sql-server-2016-end-of-support-decision-overview-graphic-e1774937604593-300x141.png 300w, https://www.craftedsql.com/wp-content/uploads/2026/03/sql-server-2016-end-of-support-decision-overview-graphic-e1774937604593-768x361.png 768w, https://www.craftedsql.com/wp-content/uploads/2026/03/sql-server-2016-end-of-support-decision-overview-graphic-e1774937604593.png 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Four areas to review before SQL Server 2016 end of support</h2>



<p class="wp-block-paragraph">Before talking about upgrade, migration, Azure, or ESU, companies need an honest inventory. In my view, there are at least four areas that should be reviewed properly, because they usually determine whether the next step is realistic or only looks good in a planning document.</p>



<h3 class="wp-block-heading">1. Which SQL Server 2016 instances are still running?</h3>



<p class="wp-block-paragraph">This sounds basic, but in larger or historically grown estates this is often where the first surprises appear. A server list alone is not enough, especially if it does not include edition, build level, role, business criticality, connected applications, hosting model, backup and monitoring coverage, and current ownership.</p>



<p class="wp-block-paragraph">What matters is not just whether an instance exists. What matters is whether the available information is good enough to support a decision. A rough technical inventory may help with discovery, but it is not the same thing as a decision-ready view of the environment.</p>



<h3 class="wp-block-heading">2. What business and technical dependencies exist?</h3>



<p class="wp-block-paragraph">This is where many decisions become more complicated than expected. In practice, the database version is often only one part of the problem. The harder constraints usually sit around it: legacy applications with limited vendor support, operating system dependencies, middleware constraints, old integrations, fragile jobs, linked servers, SSIS packages, reporting components, or third-party tools that nobody wants to retest under time pressure.</p>



<p class="wp-block-paragraph">This part is underestimated in many organizations. The biggest problem is often not technical feasibility in isolation, but the accumulated dependency footprint around the system. An upgrade may be possible from a SQL Server perspective and still be difficult because the surrounding application and operational model has not been prepared for change.</p>



<h3 class="wp-block-heading">3. Which SQL Server 2016 end of support option is realistic?</h3>



<p class="wp-block-paragraph">Microsoft outlines the general SQL Server end of support options in its documentation. That overview is useful, but it does not answer the operational question for a specific environment.</p>



<p class="wp-block-paragraph">The real question is not only: <em>“What options exist?”</em> The more important question is: <em>“Which option is realistic for this system, with acceptable risk, acceptable effort, and within the available time window?”</em></p>



<p class="wp-block-paragraph">That difference matters. Upgrade, migration, Azure, and ESU are not interchangeable labels. Each option has consequences for testing, downtime, fallback, licensing, application support, operations, monitoring, security, and long-term maintainability. This is where wishful thinking and planning discipline usually start to separate.</p>



<h3 class="wp-block-heading">4. Is ESU a valid SQL Server 2016 end of support strategy?</h3>



<p class="wp-block-paragraph">ESU can be a valid option, but only if it is used consciously as a temporary bridge. Microsoft describes the ESU program as a last-resort option and a short-term way to stay protected while moving toward a newer supported platform. Microsoft offers it for up to three years after the end of extended support.</p>



<p class="wp-block-paragraph">What ESU typically does <strong>not</strong> solve is just as important. It does not fix poor visibility, weak documentation, outdated architecture, unclear ownership, legacy application constraints, or a lack of testing and migration readiness.</p>



<p class="wp-block-paragraph">ESU can buy time, but it does not automatically improve documentation, ownership, testing, or migration readiness. Used well, it can support a controlled transition. Used poorly, it can simply postpone the same unresolved decisions into the next budget cycle. For additional details, see the <a href="https://learn.microsoft.com/en-us/lifecycle/faq/extended-security-updates" target="_blank" rel="noopener noreferrer">Microsoft Extended Security Updates FAQ</a>.</p>



<h2 class="wp-block-heading">Upgrade, migration, Azure, or ESU: a more realistic view</h2>



<p class="wp-block-paragraph">One of the most common mistakes is to assume there is one obvious default answer. In reality, the right path depends on the application landscape, infrastructure condition, support requirements, risk tolerance, available time, and the operating model the company wants to support after the transition.</p>



<h3 class="wp-block-heading">When an upgrade can make sense</h3>



<p class="wp-block-paragraph">An upgrade is often the right choice when the application is supported on a newer SQL Server version, the current platform is still broadly viable, and testing, downtime planning, and fallback are realistic. In many cases, this is the most pragmatic route, especially when the main issue is the SQL Server version itself and not the surrounding architecture. Still, a pragmatic path is not an automatic one; it needs proper preparation, especially where compatibility, maintenance windows, rollback options, application testing, and operational handover matter.</p>



<h3 class="wp-block-heading">When migration is the better option</h3>



<p class="wp-block-paragraph">A migration can be the stronger decision when the current environment needs more than a version change. That may be the case when infrastructure is already due for replacement, when the existing setup no longer matches availability or security requirements, or when operational processes have moved beyond what the current platform should continue to carry.</p>



<p class="wp-block-paragraph">This matters because the technically possible route is not always the operationally sensible one. Sometimes the end of support date is not only a deadline, but also a useful point to stop investing effort into a platform layout that should have been replaced anyway.</p>



<h3 class="wp-block-heading">When Azure is worth serious consideration</h3>



<p class="wp-block-paragraph">Microsoft’s end-of-support guidance explicitly points to Azure-related paths such as Azure SQL Managed Instance, SQL Server on Azure Virtual Machines, and Azure VMware Solution, depending on whether the goal is modernization, near-term relocation, or a more gradual transition.</p>



<p class="wp-block-paragraph">But Azure is not a shortcut by itself. Questions around application behavior, latency, responsibilities, operations, cost, and migration sequencing still remain. Azure makes sense when it fits how the company wants to operate, monitor, secure, and support the environment afterwards. It is a poor choice when it is selected only as a reflex to an end-of-support deadline.</p>



<h3 class="wp-block-heading">When ESU is defensible</h3>



<p class="wp-block-paragraph">ESU is defensible when there is a clear target strategy, when the environment cannot be changed cleanly in the short term, and when the transition period is intentionally limited. It can be a reasonable bridge for systems that need more time because of vendor constraints, testing effort, application dependencies, or sequencing with other infrastructure work.</p>



<p class="wp-block-paragraph">ESU becomes problematic when it mainly covers up delay, uncertainty, or organizational indecision. If there is no defined next step, no ownership, and no realistic timeline, ESU does not solve the core problem. It only makes the unresolved situation look temporarily controlled.</p>



<h2 class="wp-block-heading">What companies should do before SQL Server 2016 end of support</h2>



<p class="wp-block-paragraph">Organizations still running SQL Server 2016 do not need panic, but they do need structure. A useful first step is not to jump straight into a preferred technology path. It is to build a reliable inventory and ask a small set of hard questions:</p>



<ol class="wp-block-list">
<li>Which instances are affected?</li>



<li>Which applications and business processes depend on them?</li>



<li>Which vendor, platform, and operational constraints exist?</li>



<li>Which path is realistic per system: upgrade, migration, Azure, or ESU?</li>



<li>Where is immediate action required, and where is a managed transition acceptable?</li>
</ol>



<p class="wp-block-paragraph">Only once those questions are answered does this become a manageable program instead of a late-stage lifecycle reaction. Without that clarity, organizations often spend too much time discussing the preferred solution and too little time understanding the actual starting point.</p>



<p class="wp-block-paragraph">Where inventory, dependencies, and realistic next steps are still unclear, structured <a href="/sql-server-consulting-services/" type="link" id="/sql-server-consulting-services/">SQL Server consulting services</a> can help create a practical view of the environment and define the next steps system by system.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://www.craftedsql.com/wp-content/uploads/2026/03/sql-server-2016-end-of-support-overview-1024x683.png" alt="SQL Server 2016 end of support review framework covering inventory dependencies decision paths and upgrade migration Azure or ESU" class="wp-image-20517" srcset="https://www.craftedsql.com/wp-content/uploads/2026/03/sql-server-2016-end-of-support-overview-1024x683.png 1024w, https://www.craftedsql.com/wp-content/uploads/2026/03/sql-server-2016-end-of-support-overview-300x200.png 300w, https://www.craftedsql.com/wp-content/uploads/2026/03/sql-server-2016-end-of-support-overview-768x512.png 768w, https://www.craftedsql.com/wp-content/uploads/2026/03/sql-server-2016-end-of-support-overview.png 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Final thought</h2>



<p class="wp-block-paragraph">SQL Server 2016 end of support is not something that can be handled well with a generic “we will just upgrade it” response. The date is clear, but the harder part is what sits behind it: incomplete inventory, unclear dependencies, missing vendor certification, legacy applications, and decisions that were deferred for too long.</p>



<p class="wp-block-paragraph">Good decisions in these environments rarely depend on the version number alone. They depend on the quality of the inventory, the understanding of dependencies, the ability to prioritize correctly, and an operational logic that looks for the most sustainable path, not just the fastest one.</p>



<p class="wp-block-paragraph">If SQL Server 2016 is still in use today, the priority is not to decide too quickly between upgrade, migration, Azure, or ESU. The priority is to understand the starting point well enough that the chosen path is realistic, supportable, and defensible in the specific environment.</p>



<p class="wp-block-paragraph">If you are currently reviewing SQL Server 2016 environments and want an independent second opinion on inventory, dependencies, or realistic next-step options, <a href="/contact/">get in touch</a>.</p>
<p>The post <a href="https://www.craftedsql.com/sql-server-2016-end-of-support-review/">SQL Server 2016 End of Support: What Companies Should Review Now</a> appeared first on <a href="https://www.craftedsql.com">CraftedSQL</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.craftedsql.com/sql-server-2016-end-of-support-review/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
