System databases must be rebuilt to fix corruption problems in the master, model, msdb, or resource
system databases or to modify the default server-level collation. This
topic provides step-by-step instructions to rebuild system databases in
SQL Server 2014.
Limitations and Restrictions
When the master, model, msdb, and tempdb system
databases are rebuilt, the databases are dropped and re-created in their
original location. If a new collation is specified in the rebuild
statement, the system databases are created using that collation
setting. Any user modifications to these databases are lost. For
example, you may have user-defined objects in the master database,
scheduled jobs in msdb, or changes to the default database settings in
the model database.
Prerequisites
Perform the following tasks before you rebuild the
system databases to ensure that you can restore the system databases to
their current settings.
After rebuilding the database you may need to perform the following additional tasks:
-
Record all server-wide configuration values.
SELECT * FROM sys.configurations;
-
Record all service packs and hotfixes applied to
the instance of SQL Server and the current collation. You must reapply
these updates after rebuilding the system databases.
SELECT SERVERPROPERTY('ProductVersion ') AS ProductVersion, SERVERPROPERTY('ProductLevel') AS ProductLevel, SERVERPROPERTY('ResourceVersion') AS ResourceVersion, SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime, SERVERPROPERTY('Collation') AS Collation;
-
Record the current location of all data and log
files for the system databases. Rebuilding the system databases installs
all system databases to their original location. If you have moved
system database data or log files to a different location, you must move
the files again.
SELECT name, physical_name AS current_file_location FROM sys.master_files WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));
-
Locate the current backup of the master, model, and msdb databases.
-
If the instance of SQL Server is configured as a
replication Distributor, locate the current backup of the distribution
database.
-
Ensure you have appropriate permissions to rebuild the system databases. To perform this operation, you must be a member of the sysadmin fixed server role. For more information, see Server-Level Roles.
- Verify that copies of the master, model, msdb data and log template files exist on the local server. The default location for the template files is C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn\Templates. These files are used during the rebuild process and must be present for Setup to succeed. If they are missing, run the Repair feature of Setup, or manually copy the files from your installation media. To locate the files on the installation media, navigate to the appropriate platform directory (x86 or x64) and then navigate to setup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL.X\MSSQL\Binn\Templates.
To rebuild system databases for an instance of SQL Server:
-
Insert the SQL Server 2014 installation media into
the disk drive, or, from a command prompt, change directories to the
location of the setup.exe file on the local server. The default location
on the server is C:\Program Files\Microsoft SQL Server\120\Setup
Bootstrap\Release.
-
From a command prompt window, enter the following
command. Square brackets are used to indicate optional parameters. Do
not enter the brackets. When using a Windows operating system that has
User Account Control (UAC) enabled, running Setup requires elevated
privileges. The command prompt must be run as Administrator.
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName]
Parameter name
Description
/QUIET or /Q
Specifies that Setup run without any user interface.
/ACTION=REBUILDDATABASE
Specifies that Setup re-create the system databases.
/INSTANCENAME=InstanceName
Is the name of the instance of SQL Server. For the default instance, enter MSSQLSERVER.
/SQLSYSADMINACCOUNTS=accounts
Specifies the Windows groups or individual accounts to add to the sysadmin fixed server role. When specifying more than one account, separate the accounts with a blank space. For example, enter BUILTIN\Administrators MyDomain\MyUser. When you are specifying an account that contains a blank space within the account name, enclose the account in double quotation marks. For example, enter NT AUTHORITY\SYSTEM.
[ /SAPWD=StrongPassword ]
Specifies the password for the SQL Server sa account. This parameter is required if the instance uses Mixed Authentication (SQL Server and Windows Authentication) mode.
Security Note The sa account is a well-known SQL Server account and it is often targeted by malicious users. It is very important that you use a strong password for the sa login.
[ /SQLCOLLATION=CollationName ]
Specifies a new server-level collation. This parameter is optional. When not specified, the current collation of the server is used.
Important Changing the server-level collation does not change the collation of existing user databases. All newly created user databases will use the new collation by default.
- When Setup has completed rebuilding the system databases, it returns to the command prompt with no messages. Examine the Summary.txt log file to verify that the process completed successfully. This file is located at C:\Program Files\Microsoft SQL Server\120\Setup Bootstrap\Logs.
-
Restore your most recent full backups of the master, model, and msdb databases. For more information, see Back Up and Restore of System Databases (SQL Server).
Important If you have changed the server collation, do not restore the system databases. Doing so will replace the new collation with the previous collation setting.
Security Note |
---|
We recommend that you secure your scripts to prevent their being altered by unauthorized by individuals. |
-
If the instance of SQL Server is configured as a
replication Distributor, you must restore the distribution database. For
more information, see Back Up and Restore Replicated Databases.
-
Move the system databases to the locations you recorded previously. For more information, see Move System Databases.
-
Verify the server-wide configuration values match the values you recorded previously.
To rebuild the resource system database:
-
Launch the SQL Server 2014 Setup program (setup.exe) from the distribution media.
-
In the left navigation area, click Maintenance, and then click Repair.
-
Setup support rule and file routines run to ensure
that your system has prerequisites installed and that the computer
passes Setup validation rules. Click OK or Install to continue.
-
On the Select Instance page, select the instance to repair, and then click Next.
-
The repair rules will run to validate the operation. To continue, click Next.
-
From the Ready to Repair page, click Repair. The Complete page indicates that the operation is finished.
If the msdb database is damaged and you do not have a backup of the msdb database, you can create a new msdb by using the instmsdb script.
Caution |
---|
Rebuilding the msdb database using the instmsdb script will eliminate all the information stored in msdb
such as jobs, alert, operators, maintenance plans, backup history,
Policy-Based Management settings, Database Mail, Performance Data
Warehouse, etc. |
-
Stop all services connecting to the Database
Engine, including SQL Server Agent, SSRS, SSIS, and all applications
using SQL Server as data store.
-
Start SQL Server from the command line using the command: NET START MSSQLSERVER /T3608
For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.
-
In another command line window, detach the msdb database by executing the following command, replacing
with the instance of SQL Server: SQLCMD -E -S -dmaster -Q"EXEC sp_detach_db msdb"
-
Using the Windows Explorer, rename the msdb database files. By default these are in the DATA sub-folder for the SQL Server instance.
-
Using SQL Server Configuration Manager, stop and restart the Database Engine service normally.
-
In a command line window, connect to SQL Server and execute the command: SQLCMD
-E -S
-i"C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Install\instmsdb.sql" -o" C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Install\instmsdb.out"
Replacewith the instance of the Database Engine. Use the file system path of the instance of SQL Server.
-
Using the Windows Notepad, open the instmsdb.out file and check the output for any errors.
-
Re-apply any service packs or hotfix installed on the instance.
-
Recreate the user content stored in the msdb database, such as jobs, alert, etc.
-
Backup the msdb database.
Syntax and other run-time errors are displayed in the command prompt
window. Examine the Setup statement for the following syntax errors:
-
Missing slash mark (/) in front of each parameter name.
-
Missing equal sign (=) between the parameter name and the parameter value.
-
Presence of blank spaces between the parameter name and the equal sign.
-
Presence of commas (,) or other characters that are not specified in the syntax.
No comments:
Post a Comment