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.
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.
You might need to configure scanning software, such as antivirus and antispyware applications, to exclude SQL Server folders and file types. Review this support article for more information: Antivirus software on computers running SQL Server.
System databases (master, model, MSDB, and tempdb), and Database Engine user databases can be installed with Server Message Block (SMB) file server as a storage option. This applies to both SQL Server stand-alone and SQL Server failover cluster installations (FCI). For more information, see Install SQL Server with SMB Fileshare as a Storage Option.
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\nnn\. <drive> is the drive letter where components are installed. The default is usually drive C. <nnn> identifies the version. The following table identifies versions for the paths.
|140||SQL Server 2017 (14.x)|
|130||SQL Server 2016 (13.x)|
|120||SQL Server 2014|
|110||SQL Server 2012 (11.x)|
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 are as follows:
MSSQL14.MSSQLSERVER for a default instance of SQL Server 2017.
MSAS14.MSSQLSERVER for a default instance of SQL Server 2017 Analysis Services (SSAS).
MSSQL14.MyInstance for a named instance of SQL Server 2017 named "MyInstance."
The two digit number in the instance ID path identifies the version number. In the preceding examples, version number 14 is SQL Server 2017 (14.x).
The directory structure for a SQL Server 2017 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\MSSQL14.MyInstance\
C:\Program Files\Microsoft SQL Server\MSAS14.MyInstance\
You can specify any value for the instance ID, but avoid special characters and reserved keywords.
You can specify a non-default instance ID during SQL Server Setup. Instead of <Program Files>\MicrosoftSQL Server, a <custom path>\MicrosoftSQL 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.
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\nnn\. 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\MicrosoftSQL Server\<Instance_ID> for instance-aware components. For example,
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\MicrosoftSQL Server\Instance Names\SQL] "InstanceName"="MSSQL14"
[HKEY_LOCAL_MACHINE\Software\Microsoft\MicrosoftSQL Server\Instance Names\OLAP] "InstanceName"="MSAS14"
[HKEY_LOCAL_MACHINE\Software\Microsoft\MicrosoftSQL Server\Instance Names\RS] "InstanceName"="MSRS14"
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 path||Configurable or Fixed Path|
|Database Engine server components||\Program Files\MicrosoftSQL Server\MSSQL14.<InstanceID>\||Configurable|
|Database Engine data files||\Program Files\MicrosoftSQL Server\MSSQL14.<InstanceID>\||Configurable|
|Analysis Services server||\Program Files\MicrosoftSQL Server\MSAS14.<InstanceID>\||Configurable|
|Analysis Services data files||\Program Files\MicrosoftSQL Server\MSAS14.<InstanceID>\||Configurable|
|Reporting Services report server||\Program Files\MicrosoftSQL Server\MSRS14.<InstanceID>\Reporting Services\ReportServer\Bin\||Configurable|
|Reporting Services report manager||\Program Files\MicrosoftSQL Server\MSRS14.<InstanceID>\Reporting Services\ReportManager\||Fixed path|
|Integration Services||<Install Directory>\140\DTS\ 1||Configurable|
|Client Components (except bcp.exe and sqlcmd.exe)||<Install Directory>\140\Tools\ 1||Configurable|
|Client Components (bcp.exe and sqlcmd.exe)||<Install Directory>\Client SDK\ODBC\110\Tools\Binn||Fixed path|
|Replication and server-side COM objects||<drive>:\Program Files\Microsoft SQL Server\nnn\COM\ 2||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\nnn\DTS\Binn||Fixed path|
|DLLs that provide managed connection support for Integration Services||<drive>:\Program Files\Microsoft SQL Server\nnn\DTS\Connections||Fixed path|
|DLLs for each type of enumerator that Integration Services supports||<drive>:\Program Files\Microsoft SQL Server\nnn\DTS\ForEachEnumerators||Fixed path|
|SQL Server Browser Service, WMI providers||<drive>:\Program Files\Microsoft SQL Server\nnn\Shared\||Fixed path|
|Components that are shared between all instances of SQL Server||<drive>:\Program Files\Microsoft SQL Server\nnn\Shared\||Fixed path|
Ensure that the \Program Files\MicrosoftSQL Server\ folder is protected with limited permissions.
Note that the default drive for file locations is systemdrive, normally drive C. Installation paths for child features are determined by the installation path of the parent feature.
1 A 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.
2 This 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.
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\MicrosoftSQL Server\MSSQL14.<InstanceName>\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>\MSSQL14\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.
Data files are always expected to be found in a child directory named Data. For example, specify C:\Program Files\MicrosoftSQL Server\MSSQL14.<InstanceName>\ to specify the root path to the data directory of the system databases during upgrade when data files are found under C:\Program Files\MicrosoftSQL Server\MSSQL14.<InstanceName>\MSSQL\Data.