Поделиться через


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

Область применения: SQL Server

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

Эта статья не связана с перестроением индексов.

Ограничения

mastermodelПри перестроении баз данных , 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 настроен как распространитель репликации, найдите текущую резервную копию distribution базы данных.

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

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

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

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

Эта процедура не перестроит resource базу данных. См. раздел "Перестроение базы данных системы ресурсов" далее в этой статье.

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

  1. Вставьте носитель установки SQL Server на диск или из командной setup.exe строки измените каталоги на расположение файла на локальном сервере. Для SQL Server 2022 (16.x) используется C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\SQLServer2022расположение по умолчанию на сервере.

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

    setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName ]
    
    Наименование параметра Description
    /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\160\Setup Bootstrap\Logsпапке .

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

Задачи после перестроения

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

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

    Внимание

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

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

    Внимание

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

  • Если экземпляр SQL Server настроен как распространитель репликации, необходимо восстановить distribution базу данных. Дополнительные сведения см. в разделе Резервное копирование и восстановление реплицируемых баз данных.

  • Переместить системные базы данных в зарегистрированное ранее расположение. Дополнительные сведения см. в статье Перемещение системных баз данных.

  • Проверить, соответствуют ли значения конфигурации на уровне сервера зарегистрированным ранее значениям.

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

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

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

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

  2. В области навигации слева выберите "Обслуживание" и нажмите кнопку "Восстановить".

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

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

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

  6. На странице "Готово к восстановлению " выберите "Восстановить". На странице Готово показано, что операция завершена.

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

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

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

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

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

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

    NET START MSSQLSERVER /T3608
    

    Дополнительные сведения см. в статье Запуск, остановка, приостановка, возобновление и перезапуск ядра СУБД, агента SQL Server или службы "Обозреватель SQL Server". Сведения о флаге трассировки 3608 см. в разделе TF3608.

  3. В другом окне командной строки отсоедините msdb базу данных, выполнив следующую команду, заменив <servername> экземпляр 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\MSSQLXX.INSTANCE_NAME\MSSQL\Install\instmsdb.sql" -o"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Install\instmsdb.out"
    

    Замените <servername> экземпляром ядро СУБД. Используйте путь к файловой системе экземпляра SQL Server. Кроме того, замените MSSQLXX.INSTANCE_NAME каталог, соответствующий вашей версии и экземпляру.

  7. С помощью Блокнота Windows откройте instmsdb.out файл и проверьте выходные данные для любых ошибок.

  8. Повторно примените все ЦС, установленные на экземпляре, что приведет к обновлению msdb базы данных до текущего уровня cu.

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

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

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

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

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

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

    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 файлов базы данных и восстанавливается tempdb база данных.

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

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

  • Отсутствует знак косой черты (/) перед каждым именем параметра.

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

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

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

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