File Locations for Default and Named Instances of SQL Server

An installation of SQL Server consists of one or more separate instances. An instance, whether default or named, has its own set of program and data files, as well as a set of common files shared between all instances of SQL Server on the computer.

For an instance of SQL Server that includes the Database Engine, Analysis Services, and Reporting Services, each component has a full set of data and executable files, and common files shared by all components.

To isolate install locations for each component, unique instance IDs are generated for each component within a given instance of SQL Server.

Important

Program files and data files cannot be installed on a removable disk drive, cannot be installed on a file system that uses compression, cannot be installed to a directory where system files are located, and cannot be installed on shared drives on a failover cluster instance.

Do not delete any of the following directories or their contents: Binn, Data, Ftdata, HTML, or 1033. You can delete other directories, if necessary; however, you might not be able to retrieve any lost functionality or data without uninstalling and then reinstalling SQL Server. Do not delete or modify any of the .htm files in the HTML directory. They are required for SQL Server tools to function properly.

Shared Files for All Instances of SQL Server

Common files used by all instances on a single computer are installed in the folder <drive>:\Program Files\Microsoft SQL Server\100\, where <drive> is the drive letter where components are installed. The default is usually drive C.

File Locations and Registry Mapping

During SQL Server Setup, an instance ID is generated for each server component. The server components in this SQL Server release are the Database Engine, Analysis Services, and Reporting Services.

The default instance ID is constructed by using the following format:

  • MSSQL for the Database Engine, followed by the major version number, followed by an underscore and the minor version when applicable, and a period, followed by the instance name.

  • MSAS for Analysis Services, followed by the major version number, followed by an underscore and the minor version when applicable, and a period, followed by the instance name.

  • MSRS for Reporting Services, followed by the major version number, followed by an underscore and the minor version when applicable, and a period, followed by the instance name.

Examples of default instance IDs in this release of SQL Server 2008 R2 are as follows:

  • MSSQL10_50.MSSQLSERVER for a default instance of SQL Server 2008 R2.

  • MSAS10_50.MSSQLSERVER for a default instance of Analysis Services.

  • MSSQL10_50.MyInstance for a named instance of SQL Server 2008 R2 named "MyInstance."

The directory structure for a SQL Server 2008 R2 named instance that includes the Database Engine and Analysis Services, named "MyInstance", and installed to the default directories would be as follows:

  • C:\Program Files\Microsoft SQL Server\MSSQL10_50.MyInstance\

  • C:\Program Files\Microsoft SQL Server\MSASSQL10_50.MyInstance\

You can specify any value for the instance ID, but avoid special characters and reserved keywords. For more information, see Reserved Keywords (Setup).

You can specify a non-default instance ID during SQL Server Setup. Instead of <Program Files>\Microsoft SQL Server, a <custom path>\Microsoft SQL Server is used if the user chooses to change the default installation directory. Note that instance IDs that begin with an underscore (_) or that contain the number sign (#) or the dollar sign ($) are not supported.

Note

Integration Services and client components are not instance aware and, therefore are not assigned an instance ID. By default, non-instance-aware components are installed to a single directory: <drive>:\Program Files\Microsoft SQL Server\100\. Changing the installation path for one shared component also changes it for the other shared components. Subsequent installations install non-instance-aware components to the same directory as the original installation.

SQL Server Analysis Services is the only SQL Server component that supports instance renaming after installation. If an instance of Analysis Services is renamed, the instance ID will not change. After instance renaming is complete, directories and registry keys will continue to use the instance ID created during installation. 

The registry hive is created under HKLM\Software\Microsoft\Microsoft SQL Server\<Instance_ID> for instance-aware components. For example,

  • HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL10_50.MyInstance

  • HKLM\Software\Microsoft\Microsoft SQL Server\MSASSQL10_50.MyInstance

  • HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL.3

The registry also maintains a mapping of instance ID to instance name. Instance ID to instance name mapping is maintained as follows:

  • [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Names\SQL] "InstanceName"="MSSQL10_50"

  • [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Names\OLAP] "InstanceName"="MSASSQL10_50"

  • [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Names\RS] "InstanceName"="MSRSSQL10_50"

Specifying File Paths

During Setup, you can change the installation path for the following features:

The installation path is displayed in Setup only for features with a user-configurable destination folder:

Component

Default path1, 2

Configurable3 or Fixed Path

Database Engine server components

\Program Files\Microsoft SQL Server\MSSQL10_50.<InstanceID>\

Configurable

Database Engine data files

\Program Files\Microsoft SQL Server\MSSQL10_50.<InstanceID>\

Configurable

Analysis Services server

\Program Files\Microsoft SQL Server\MSAS10_50.<InstanceID>\

Configurable

Analysis Services data files

\Program Files\Microsoft SQL Server\MSAS10_50.<InstanceID>\

Configurable

Reporting Services report server

\Program Files\Microsoft SQL Server\MSRS10_50.<InstanceID>\Reporting Services\ReportServer\Bin\

Configurable

Reporting Services report manager

\Program Files\Microsoft SQL Server\MSRS10_50.<InstanceID>\Reporting Services\ReportManager\

Fixed path

Integration Services

<Install Directory>\100\DTS\

Configurable4

Client Components

<Install Directory>\100\Tools\

Configurable4

Replication and server-side COM objects

<drive>:\Program Files\Microsoft SQL Server\100\COM\5

Fixed path

Integration Services component DLLs for the Data Transformation Run-time engine, the Data Transformation Pipeline engine, and the dtexec command prompt utility

<drive>:\Program Files\Microsoft SQL Server\100\DTS\Binn

Fixed path

DLLs that provide managed connection support for Integration Services

<drive>:\Program Files\Microsoft SQL Server\100\DTS\Connections

Fixed path

DLLs for each type of enumerator that Integration Services supports

<drive>:\Program Files\Microsoft SQL Server\100\DTS\ForEachEnumerators

Fixed path

SQL Server Browser Service, WMI providers

<drive>:\Program Files\Microsoft SQL Server\100\Shared\

Fixed path

Components that are shared between all instances of SQL Server

<drive>:\Program Files\Microsoft SQL Server\100\Shared\

Fixed path

1Ensure that the \Program Files\Microsoft SQL Server\ folder is protected with limited permissions.

2The default drive for these locations is systemdrive, normally drive C.

3Installation paths for child features are determined by the installation path of the parent feature.

4A single installation path is shared between Integration Services and client components. Changing the installation path for one component also changes it for other components. Subsequent installations install components to the same location as the original installation.

5This directory is used by all instances of SQL Server on a computer. If you apply an update to any of the instances on the computer, any changes to files in this folder will affect all instances on the computer. When you add features to an existing installation, you cannot change the location of a previously installed feature, nor can you specify the location for a new feature. You must either install additional features to the directories already established by Setup, or uninstall and reinstall the product.

Note

For clustered configurations, you must select a local drive that is available on every node of the cluster.

When you specify an installation path during Setup for the server components or data files, the Setup program uses the instance ID in addition to the specified location for program and data files. Setup does not use the instance ID for tools and other shared files. Setup also does not use any instance ID for the Analysis Services program and data files, although it does use the instance ID for the Analysis Services repository.

If you set an installation path for the Database Engine feature, SQL Server Setup uses that path as the root directory for all instance-specific folders for that installation, including SQL Data Files. In this case, if you set the root to "C:\Program Files\Microsoft SQL Server\MSSQL10_50\MSSQL\", instance-specific directories are added to the end of that path.

Customers who choose to use the USESYSDB upgrade functionality in the SQL Server Installation Wizard (Setup UI mode) can easily lead themselves into a situation where the product gets installed into a recursive folder structure. For example, <SQLProgramFiles>\MSSQL10_50\MSSQL\MSSQL10_50\MSSQL\Data\. Instead, to use the USESYSDB feature, set an installation path for the SQL Data Files feature instead of the Database Engine feature.

Note

Data files are always expected to be found in a child directory named Data. For example, specify C:\Program Files\Microsoft SQL Server\MSSQL10_50\ to specify the root path to the data directory of the system databases during upgrade when data files are found under C:\Program Files\Microsoft SQL Server\MSSQL10_50\MSSQL\Data.