Skip to content

Latest commit

 

History

History
107 lines (66 loc) · 15.1 KB

choose-a-database-engine-upgrade-method.md

File metadata and controls

107 lines (66 loc) · 15.1 KB
title description author ms.author ms.date ms.service ms.subservice ms.topic monikerRange
Choose a database Engine upgrade method
This article describes upgrade paths for the Database Engine in SQL Server, including upgrade in-place, migrate to a new installation, and a rolling upgrade.
rwestMSFT
randolphwest
09/25/2023
sql
install
conceptual
>=sql-server-2016

Choose a Database Engine upgrade method

[!INCLUDE SQL Server -Windows Only]

There are several approaches to consider when you're planning to upgrade the [!INCLUDE ssDE] from a prior release of [!INCLUDE ssnoversion-md], in order to minimize downtime and risk. You can perform an upgrade in-place, migrate to a new installation, or perform a rolling upgrade. The following diagram helps you to choose among these approaches. Each approach in the diagram is also discussed in the article. To assist you with the decision points in the diagram, also review Plan and Test the Database Engine Upgrade Plan.

:::image type="content" source="media/choose-a-database-engine-upgrade-method/database-engine-upgrade-method-decision-tree.png" alt-text="Diagram that shows a Database Engine Upgrade Method Decision Tree." lightbox="media/choose-a-database-engine-upgrade-method/database-engine-upgrade-method-decision-tree.png":::

Download

Azure SQL upgrade options

You may also consider upgrading your Azure SQL database, Azure SQL managed instance, or virtualizing your [!INCLUDE ssnoversion-md] environment as part of your upgrade plan. For more information about these options, see the following links:

Upgrade in-place

With this approach, the [!INCLUDE ssnoversion-md] Setup program upgrades the existing [!INCLUDE ssNoVersion] installation by replacing the existing [!INCLUDE ssNoVersion] bits with the new [!INCLUDE ssnoversion] bits and then upgrades each of the system and user databases.

The upgrade in-place approach is easiest, requires some amount of downtime, takes longer to fallback if a fallback is necessary, and it isn't supported for all scenarios. For more information on supported and unsupported upgrade in-place scenarios, see Supported Version and Edition Upgrades.

This approach is frequently used in the following scenarios:

  • A development environment without a high-availability (HA) configuration.

  • A non-mission critical production environment that can tolerate downtime and that is running on a recent hardware and software. The amount of downtime is dependent upon the size of your database and the speed of your I/O subsystem. Upgrading [!INCLUDE sssql14-md] when memory-optimized tables are in use takes some extra time. For more information, see Plan and Test the Database Engine Upgrade Plan.

At a high level, the steps required for an in-place upgrade of the [!INCLUDE ssDE] are as follows:

:::image type="content" source="media/choose-a-database-engine-upgrade-method/database-engine-upgrade-non-ha-in-place-upgrade.png" alt-text="Diagram that shows a Database Engine Upgrade Non-HA In-Place Upgrade.":::

For detailed steps, see Upgrade SQL Server Using the Installation Wizard (Setup).

Considerations

The [!INCLUDE ssNoVersion] Setup program stops and restarts the [!INCLUDE ssNoVersion] instance as part of the pre-upgrade checks.

When you upgrade [!INCLUDE ssNoVersion], the previous [!INCLUDE ssNoVersion] instance is overwritten and will no longer exist on your computer. Before upgrading, back up [!INCLUDE ssNoVersion] databases and other objects associated with the previous [!INCLUDE ssNoVersion] instance.

Migrate to a new installation

With this approach, you maintain the current environment while you build a new [!INCLUDE ssNoVersion] environment, frequently on new hardware and with a new version of the operating system. After installing [!INCLUDE ssNoVersion] in the new environment, you perform several steps to prepare the new environment, so that you can migrate the existing user databases from the existing environment to the new environment and minimize downtime. These steps include migrating the following:

  • System objects: Some applications depend on information, entities, and/or objects that are outside of the scope of a single user database. Typically, an application has dependencies on the master and msdb databases, and also on the user database. Anything stored outside of a user database that is required for the correct functioning of that database must be made available on the destination server instance. For example, the logins for an application are stored as metadata in the master database, and they must be re-created on the destination server. If an application or database maintenance plan depends on [!INCLUDE ssnoversion-md] Agent jobs, whose metadata is stored in the msdb database, you must re-create those jobs on the destination server instance. Similarly, the metadata for a server-level trigger is stored in master.

    When you move the database for an application to another server instance, you must re-create all the metadata of the dependent entities and objects in master and msdb on the destination server instance. For example, if a database application uses server-level triggers, just attaching or restoring the database on the new system isn't enough. The database doesn't work as expected unless you manually re-create the metadata for those triggers in the master database. For detailed information, see Manage Metadata When Making a Database Available on Another Server Instance (SQL Server)

  • Integration Services packages stored in msdb: If you're storing packages in msdb, you need to either script out those packages using the dtutil Utility or redeploy them to the new server. Before using the packages on the new server, you need to upgrade the packages to [!INCLUDE ssNoVersion]. For more information, see Upgrade Integration Services Packages.

  • Reporting Services encryption keys: An important part of report server configuration is creating a backup copy of the symmetric key used for encrypting sensitive information. A backup copy of the key is required for many routine operations, and enables you to reuse an existing report server database in a new installation. For more information, see Back Up and Restore Reporting Services Encryption Keys and Upgrade and Migrate Reporting Services

Once the new [!INCLUDE ssNoVersion] environment has the same system objects as the existing environment, you then migrate the user databases from the existing system to the [!INCLUDE ssNoVersion] instance in a manner that minimizes downtime on the existing system. You accomplish the database migration either using backup and restore, or by repointing LUNs if you're in a SAN environment. The steps for both methods are indicated in the following diagrams.

Caution

The amount of downtime is dependent upon the size of your database and the speed of your I/O subsystem. Upgrading [!INCLUDE sssql14-md] when memory-optimized tables are in use will take some extra time. For more information, see Plan and Test the Database Engine Upgrade Plan.

After migrating user databases, you point new users to the new [!INCLUDE ssNoVersion] instance using one of several methods (for example, renaming the server, using a DNS entry, and modifying connection strings). The new installation approach reduces risk and downtime as compared to an in-place upgrade, and facilitates hardware and operating system upgrades with the upgrade to [!INCLUDE ssNoVersion].

Note

If you already have a high availability (HA) solution in place or some other multiple [!INCLUDE ssNoVersion]instance environment, go Rolling upgrade. If you don't have a high availability solution in place, you can consider either temporarily configuring Database Mirroring to further minimize downtime to facilitate this upgrade or taking this opportunity to configure an Always On Availability Group as a permanent HA solution.

For example, you may use this approach to upgrade:

The steps required for a new installation upgrade vary slightly depending upon whether you're using attached storage or SAN storage.

  • Attached storage environment: If you have a [!INCLUDE ssNoVersion] environment using attached storage, the following diagram and the links within the diagram to guide you through the steps required for a new installation upgrade of the [!INCLUDE ssDE].

    :::image type="content" source="media/choose-a-database-engine-upgrade-method/new-installation-upgrade-method-using-backup-and-restore-for-attached-storage.png" alt-text="Diagram that shows a new installation upgrade method using backup and restore for attached storage.":::

  • SAN storage environment: If you have a [!INCLUDE ssNoVersion] environment using SAN storage, the following diagram and the links within the diagram to guide you through the steps required for a new installation upgrade of the [!INCLUDE ssDE].

    :::image type="content" source="media/choose-a-database-engine-upgrade-method/new-installation-upgrade-method-using-detach-and-attach-for-san-storage.png" alt-text="Diagram that shows a new installation upgrade method using detach and attach for SAN storage.":::

Rolling upgrade

A rolling upgrade is required in [!INCLUDE ssnoversion-md] solution environments involving multiple [!INCLUDE ssNoVersion] instances that must be upgraded in a certain order to maximize uptime, minimize risk, and preserve functionality. A rolling upgrade is essentially the upgrade of multiple [!INCLUDE ssNoVersion] instances in a particular order. You either perform an upgrade in-place on each existing [!INCLUDE ssNoVersion] instance, or a new installation upgrade to facilitate upgrading hardware and/or the operating system as part of the upgrade project. There are several scenarios in which you need to use the rolling upgrade approach. These are documented in the following articles: