Перестроение системных баз данных

Область применения: yesSQL Server (все поддерживаемые версии)

Системные базы данных необходимо перестроить, чтобы устранить повреждения данных в системных базах данных master, model, msdbи resource или изменить параметры сортировки по умолчанию на уровне сервера. В этом разделе приведены пошаговые инструкции по перестроению системных баз данных в SQL Server.

В этом разделе

Перед началом

Ограничения

При перестроении системных баз данных master, model, msdb и tempdb эти базы данных удаляются и создаются повторно в исходном расположении. Если в инструкции перестроения заданы новые параметры сортировки, системные базы данных создаются с этими параметрами. Все пользовательские изменения этих баз данных будут потеряны. Например, в базе данных master могут содержаться пользовательские объекты, в базе данных msdb — запланированные задания, а в базе данных model — изменения исходных параметров баз данных.

Предварительные требования

Перед перестроением системных баз данных выполните следующие задачи, чтобы иметь возможность восстановить текущие параметры системных баз данных.

  1. Зарегистрируйте все значения конфигурации на уровне сервера.

    SELECT * FROM sys.configurations;  
    
  2. Запишите все исправления, примененные к экземпляру SQL Server и текущим параметрам сортировки. Эти исправления необходимо применить после перестроения системных баз данных.

    SELECT  
    SERVERPROPERTY('ProductVersion ') AS ProductVersion,  
    SERVERPROPERTY('ProductLevel') AS ProductLevel,  
    SERVERPROPERTY('ResourceVersion') AS ResourceVersion,  
    SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,  
    SERVERPROPERTY('Collation') AS Collation;  
    
  3. Зарегистрируйте текущее расположение всех файлов данных и журналов для системных баз данных. При перестроении системных баз данных они устанавливаются в исходное расположение. Если системные файлы данных и журналов были перемещены в другие расположения, необходимо вернуть их в исходное место.

    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'));  
    
  4. Найдите текущую резервную копию баз данных master, model и msdb.

  5. Если экземпляр SQL Server настроен в качестве распространителя репликации, найдите текущую резервную копию базы данных распространителя.

  6. Убедитесь, что имеются соответствующие разрешения для перестроения системных баз данных. Чтобы выполнить эту операцию, необходимо быть членом предопределенной роли сервера sysadmin . Дополнительные сведения см. в статье Роли уровня сервера.

  7. Проверьте, имеются ли на локальном сервере копии шаблонов для файлов данных и файлов журналов баз данных master, model и msdb. По умолчанию файлы шаблонов расположены в каталоге C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\Templates. Эти файлы используются во время перестроения и должны присутствовать для успешного завершения программы установки. Если они отсутствуют, используйте функцию исправления программы установки или вручную скопируйте их с установочного носителя. Чтобы найти эти файлы на установочном носителе, перейдите в каталог, соответствующий платформе (x86 или x64), а затем в папку setup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL.X\MSSQL\Binn\Templates.

Перестроение системных баз данных

Следующая процедура перестраивает системные базы данных master, model, msdb и tempdb. Нельзя выбрать, какие системные базы данных будут перестраиваться. Для кластеризованных экземпляров эта процедура должна выполняться на активном узле, а ресурс SQL Server в соответствующей группе приложений кластера должен быть отключен перед выполнением процедуры.

Эта процедура не перестраивает базу данных resource. См. раздел «Процедура перестроения базы данных resource» ниже.

Перестроение системных баз данных для экземпляра SQL Server:

  1. Вставьте установочный носитель SQL Server на диск или в командной строке измените каталоги на расположение файла setup.exe на локальном сервере. По умолчанию он расположен на сервере в каталоге C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\SQLServer2016.

  2. В командной строке введите следующую команду. Квадратные скобки указывают, что параметр необязателен. Квадратные скобки не вводятся. В операционной системе Windows с включенным контролем учетных записей (UAC) запуск программы установки требует повышенных прав доступа. Команда в командной строке должна выполняться от имени администратора.

    Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=ИмяЭкземпляра /SQLSYSADMINACCOUNTS=учетные записи [ /SAPWD= НадежныйПароль ] [ /SQLCOLLATION=ИмяПараметровСортировки]

    Имя параметра Описание
    /QUIET или /Q Указывает, что программа установки будет работать без пользовательского интерфейса.
    /ACTION=REBUILDDATABASE Указывает, что программа установки создает системные базы данных заново.
    /INSTANCENAME=имя_экземпляра Имя экземпляра SQL Server. Для экземпляра по умолчанию введите MSSQLSERVER.
    /SQLSYSADMINACCOUNTS=учетные_записи Задает учетные записи групп Windows или индивидуальные учетные записи, которые следует добавить к предопределенной роли сервера sysadmin . При указании нескольких учетных записей их нужно разделять пробелами. Например, введите BUILTIN\Administrators MyDomain\MyUser. Если учетная запись содержит в своем имени пробелы, заключайте ее имя в двойные кавычки. Например, введите NT AUTHORITY\SYSTEM.
    [ /SAPWD=надежный_пароль ] Указывает пароль для учетной записи SA SQL Server. Этот параметр необходим, если экземпляр использует смешанный режим проверки подлинности (SQL Server и проверка подлинности Windows).

    ** Примечание по безопасности ** Учетная запись sa — это хорошо известная учетная запись SQL Server, и она часто нацелена на вредоносных пользователей. Для имени входа sa очень важно использовать надежный пароль.

    Для режима проверки подлинности Windows этот параметр не указывается.
    [/SQLCOLLATION=имя_параметров_сортировки ] Указывает новые параметры сортировки на уровне сервера. Это необязательный параметр. При его отсутствии используются текущие параметры сортировки сервера.

    ** Важно ** Изменение параметров сортировки на уровне сервера не изменяет параметры сортировки существующих пользовательских баз данных. Вновь созданный пользователь по умолчанию будет использовать новые параметры сортировки.

    Дополнительные сведения см. в разделе Задание или изменение параметров сортировки сервера.
    [ /SQLTEMPDBFILECOUNT=NumberOfFiles ] Указывает количество файлов данных в базе данных tempdb. Можно указать максимум 8 или количество ядер (большее из этих значений).

    Значение по умолчанию: 8 или количество ядер (меньшее из этих значений) для всех остальных выпусков.
    [ /SQLTEMPDBFILESIZE=FileSizeInMB ] Задает первоначальный размер файла данных для каждой базы данных tempdb. Программа установки поддерживает размер до 1024 МБ.

    Значение по умолчанию: 8
    [ /SQLTEMPDBFILEGROWTH=FileSizeInMB ] Определяет шаг увеличения размера для файла данных tempdb (в МБ). Значение 0 указывает, что автоматическое приращение отключено и добавление пространства запрещено. Программа установки поддерживает размер до 1024 МБ.

    Значение по умолчанию: 64
    [ /SQLTEMPDBLOGFILESIZE=FileSizeInMB ] Задает первоначальный размер файла журнала tempdb (в МБ). Программа установки поддерживает размер до 1024 МБ.

    Значение по умолчанию: 8.

    Допустимый диапазон: минимум 8, максимум 1024.
    [ /SQLTEMPDBLOGFILEGROWTH=FileSizeInMB ] Определяет шаг увеличения размера для файла журнала tempdb (в МБ). Значение 0 указывает, что автоматическое приращение отключено и добавление пространства запрещено. Программа установки поддерживает размер до 1024 МБ.

    Значение по умолчанию: 64

    Допустимый диапазон: минимум 8, максимум 1024.
    [ /SQLTEMPDBDIR=Directories ] Указывает каталог для файлов данных tempdb. При указании нескольких каталогов их нужно разделять пробелами. Если указано несколько каталогов, файлы данных tempdb будут распределяться по каталогам по методу циклического перебора.

    Значение по умолчанию: системный каталог данных
    [ /SQLTEMPDBLOGDIR=Directory ] Указывает каталог для файла журнала tempdb.

    Значение по умолчанию: системный каталог данных
  3. Когда программа установки завершает перестроение системных баз данных, она возвращается в командную строку без сообщений. Просмотрите файл журнала Summary.txt, чтобы убедиться, что процесс завершился успешно. Этот файл расположен в папке C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\Logs.

  4. Сценарий RebuildDatabase удаляет системные базы данных и устанавливает их в исходном состоянии. Так как счетчик числа файлов tempdb не сохраняется, во время установки значение числа файлов tempdb неизвестно. Поэтому сценарий RebuildDatabase не имеет сведений о количестве файлов tempdb, которое необходимо добавить заново. Введите значение числа файлов tempdb с помощью параметра SQLTEMPDBFILECOUNT. Если этот параметр не указан, сценарий RebuildDatabase добавит число файлов tempdb по умолчанию, равное количеству ЦП или 8 (в зависимости от того, какое значение меньше).

Задачи, выполняемые после перестроения

После перестроения базы данных, возможно, придется выполнить следующие дополнительные задачи.

  • Восстановить наиболее поздние полные резервные копии баз данных master, model и msdb. Дополнительные сведения см. в статье Резервное копирование и восстановление системных баз данных (SQL Server).

    Важно!

    Если изменены параметры сортировки сервера, не следует восстанавливать системные базы данных. В противном случае новые параметры сортировки будут заменены старыми.

    Если резервная копия недоступна или не является копией текущей базы данных, повторно создайте все отсутствующие записи. Например, повторно создайте все отсутствующие записи для пользовательских баз данных, устройств резервного копирования, имен входа SQL Server, конечных точек и т. д. Лучшим способом повторного создания записей является запуск создавшего их исходного скрипта.

Важно!

Рекомендуется защитить применяемые скрипты, чтобы предотвратить их изменение неавторизированными пользователями.

Перестроение базы данных Resource

Приведенная ниже процедура перестраивает системную базу данных resource. После перестроения базы данных resource все исправления теряются, поэтому их следует применить заново.

Перестроение базы данных resource

  1. Запустите программу установки SQL Server (setup.exe) с носителя распространения.

  2. В левой части области переходов нажмите кнопку Обслуживаниеи выберите Исправить.

  3. Будут запущены правило поддержки установки и файлы подпрограмм для того, чтобы удостовериться, что в системе установлены необходимые компоненты и компьютер отвечает правилам проверки. Для продолжения нажмите кнопку ОК или Установить .

  4. На странице «Выбор экземпляра» выберите экземпляр для исправления и нажмите кнопку Далее.

  5. Будут запущены правила исправления для проверки операции. Чтобы продолжить, нажмите кнопку Далее.

  6. На странице Все готово для восстановления нажмите кнопку Исправить. Страница «Готово» показывает, что операция завершена.

Создание новой базы данных msdb

Если база данных msdb повреждена и нет резервной копии базы данных msdb , можно создать новую базу данных msdb с помощью скрипта instmsdb .

Предупреждение

Когда база данных msdb создается заново скриптом instmsdb , удаляется вся информация, которая хранилась в msdb , то есть задания, оповещения, операторы, планы обслуживания, журналы резервных копий, параметры системы управления на основе политик, компоненты Database Mail, хранилище данных о производительности и т. д.

  1. Остановите все службы, подключающиеся к ядру СУБД, включая агент SQL Server, службы SSRS, службы SSIS и все приложения, использующие SQL Server в качестве хранилища данных.

  2. Запустите SQL Server из командной строки с помощью команды: NET START MSSQLSERVER /T3608

    Дополнительные сведения см. в статье Iniciar, parar, pausar, retomar e reiniciar os serviços SQL Server.

  3. В другом окне командной строки отключите базу данных msdb, выполнив следующую команду, заменив <имя> сервера экземпляром SQL Server:SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb"

  4. С помощью проводника Windows переименуйте файлы базы данных msdb . По умолчанию они находятся в вложенной папке DATA для экземпляра SQL Server.

  5. С помощью диспетчера конфигурации SQL Server обычно остановите и перезапустите службу ядра СУБД.

  6. В окне командной строки подключитесь к SQL Server и выполните команду: SQLCMD -E -S<servername> -i"C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Install\instmsdb.sql" -o"C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Install\instmsdb.out"

    Замените <имя> сервера экземпляром ядра СУБД. Используйте путь к файловой системе экземпляра SQL Server.

  7. Откройте в Блокноте файл instmsdb.out и проверьте выходные данные на наличие ошибок.

  8. Примените заново все исправления, которые были установлены на экземпляре.

  9. Создайте заново пользовательское содержимое базы данных msdb , в том числе задания, оповещения и т. д.

  10. Создайте резервную копию базы данных msdb .

Перестроение базы данных tempdb

Если база данных tempdb повреждена и ядро СУБД не запускается, можно перестроить базу данных tempdb без необходимости перестроить все системные базы данных.

  1. Переименуйте текущие файлы tempdb.mdf и templog.ldf, если они не отсутствуют.

  2. Запустите SQL Server из командной строки с помощью следующей команды.

    sqlservr -c -f -T3608 -T4022 -s <instance> -mSQLCMD
    

    Для имени экземпляра по умолчанию используется MSSQLSERVER, для именованного экземпляра используется MSSQL$<instance_name>. Флаг трассировки 4022 отключает выполнение хранимых процедур запуска. Параметр -mSQLCMD позволяет только sqlcmd.exe подключаться к серверу (см. Дополнительные параметры запуска).

    Примечание

    Убедитесь, что окно командной строки остается открытым после запуска SQL Server. В случае закрытия окна командной строки процесс будет завершен.

  3. Подключитесь к серверу с помощью sqlcmd, а затем сбросьте состояние базы данных tempdb, используя следующую хранимую процедуру.

    exec master..sp_resetstatus tempdb
    
  4. Завершите работу сервера, нажав в окне командной строки клавиши CTRL+C.

  5. Перезапустите службу SQL Server. Это создаст новый набор файлов базы данных tempdb и восстановит эту базу.

Устранение ошибок перестроения

Ошибки синтаксиса и ошибки времени выполнения отображаются в окне командной строки. Проверьте инструкцию установки на наличие следующих синтаксических ошибок:

  • отсутствие символа косой черты (/) перед именем параметра;

  • отсутствие знака равенства (=) между именем и значением параметра;

  • наличие пробелов между именем параметра и знаком равенства;

  • наличие запятых (,) или других символов, не предусмотренных синтаксисом.

После завершения операции перестроения проверьте журналы SQL Server на наличие ошибок. По умолчанию журналы расположены в папке C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\Logs. Чтобы найти файл журнала, который содержит результаты перестроения, в командной строке перейдите в папку журналов и запустите команду findstr /s RebuildDatabase summary*.*. Будут возвращены все файлы журналов, в которых содержатся результаты перестроения системных баз данных. Откройте эти файлы журналов и внимательно просмотрите, имеются ли в них соответствующие сообщения об ошибках.

См. также:

Системные базы данных