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

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

Прежде чем перестраивать системные базы данных

При перестроении системных баз данных 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\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\Templates. Эти файлы используются во время перестроения и должны присутствовать для успешного завершения программы установки. Если они отсутствуют, используйте функцию исправления программы установки или вручную скопируйте их с установочного носителя. Чтобы найти эти файлы на установочном носителе, перейдите в каталог, соответствующий платформе (x86, x64, or ia64), а затем — в папку 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 2008 R2.

  2. В командной строке введите следующую команду. Квадратные скобки указывают, что параметр необязателен. Квадратные скобки не вводятся. В операционной системе Windows Vista с включенным контролем учетных записей (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=НадежныйПароль ]

    Задает пароль для учетной записи SQL Serversa. Этот параметр обязателен, если экземпляр использует режим смешанной проверки подлинности (проверка подлинности SQL Server и Windows). 

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

    Для режима проверки подлинности Windows этот параметр не указывается.

    [ /SQLCOLLATION=ИмяПараметровСортировки ]

    Указывает новые параметры сортировки на уровне сервера. Этот параметр является необязательным. При его отсутствии используются текущие параметры сортировки сервера.

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

    Дополнительные сведения см. в разделе Настройка и изменение параметров сортировки сервера.

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

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

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

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

    Важное примечаниеВажно!

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

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

Примечание по безопасностиПримечание по безопасности

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

Процедура перестроения базы данных resource

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

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

  1. Запустите программу установки SQL Server (setup.exe), расположенную на установочном носителе SQL Server 2008 R2.

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

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

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

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

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

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

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

ПредупреждениеВнимание!

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

  1. Завершите работу всех служб, подключенных к компоненту Database Engine, в том числе агент SQL Server, службы Службы SSRS, компонент SSIS и все приложения, использующие SQL Server в качестве хранилища данных.

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

    Дополнительные сведения см. в разделе Как запустить экземпляр SQL Server (команды net).

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

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

  5. С помощью диспетчера конфигурации SQL Server остановите и перезапустите компонент Database Engine в нормальном режиме.

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

    Замените <servername> на экземпляр компонента Database Engine. Укажите путь к экземпляру SQL Server в файловой системе.

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

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

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

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

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

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

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

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

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

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

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

См. также

Основные понятия

Журнал изменений

Удалены неверные данные в описании INSTANCENAME. Для именованного экземпляра не нужно указывать имя сервера.

Удалено требование применить последний пакет обновления и все применимые исправления безопасности из раздела «Задачи, выполняемые после перестроения».

Удалены инструкции по указанию setup.exe с локального сервера на шаге 1 раздела «Процедура перестроения системных баз данных».

Добавлен раздел, описывающий создание новой базы данных msdb.