Перейти к содержимому
www.mytechnote.ru
Меню
  • Администрирование
    • Скрипты
  • Оборудование
    • Обзоры
    • Инструкции
  • Прочее
  • Русский
    • English
    • Русский
Меню

Ошибка при запуске MSSQL из за размера секторов

Привет. Недавно столкнулся с ситуацией — при попытке запуска службы Microsoft SQL Server, служба не запускалась. В системном логе была обнаружена ошибка следующего содержания:

Error: 5178, Severity: 16, State: 1.
Cannot use file ‘c:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\master.mdf’ because it was originally formatted with sector size 4096 and is now on a volume with sector size 3072. Move the file to a volume with a sector size that is the same as or smaller than the original sector size.

Как видно из ошибки — сервер не может стартануть из за того, что для сервера размер секторов должен быть 4096, а на самом деле 3072. Причин такого явления может быть несколько. Одной из них может быть то, что используется старый жесткий диск.

Эту ошибку можно исправить без переустановки системы, как это сделать я сегодня покажу.

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

Сперва перейдите в папку MSSQL вашего экземпляра. Путь можно посмотреть в ошибке. В моем случае —  c:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL.

Тут нужно переименовать каталог DATA, например в DATA.old

После этого — идем в панель управления — Администрирование — Управление компьютером. В открывшейся оснастке переходим в управление дисками, жмем действие — создать виртуальный жесткий диск.

Управление компьютеров

Выбираем какое-нибудь место, где будет храниться файл диска, и задаем его размер. На этом диске у нас будут лежать базы, соответственно лучше дать места под базы с запасом.

Задаем расположение диска

В оснастке должен будет новый диск. Жмем по нему правой кнопой и инициализируем его.

Инициализируем диск

После того как диск будет инициализирован, жмем правой кнопкой по свободному месту на диске и создаем простой том.

Создаем простой том

На шаге — назначение буквы диска или пути — выберите подключить как пустую NTFS папку, нажмите на обзор и создайте папку DATA в папке с вашим экземляром MSSQL.

Подключаем диск как папку

На следующем шаге задайте размер кластера — 4096.

Задаем размер кластера

Диск мы создали и подключили. Теперь скопируйте всё из папки DATA.old в новую папку DATA.

Нужно задать нужные права на файлы, т.к. они не наследуются от вышестоящей папки.

Т.к. в ручную задавать их — дело муторное и долгое, предлагаю воспользоваться командной стокой.

Запускаем ее от имени администратора и выполняем:

cd «путь до вашего экземпляра»

(у меня — «c:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL»)

Посмотрим разрешения для файлов в папке old:

icacls DATA.old\*

Будут выведены все разрешения на все файлы в этой папке. Нас интересует пользователь NT SERVICE\MSSQL$ИмяЭкземпляра. В моем случае этот пользователь — NT SERVICE\MSSQL$SQLEXPRESS

Смотрим разрешения на файлы

Дадим этому пользователю полный доступ на все файлы в папке DATA:

icacls DATA\* /grant «NT SERVICE\MSSQL$SQLEXPRESS»:F

Теперь можно попробовать запустить MSSQL, он должен запуститься. Если это так, то остался один шаг — сделать, что бы наш виртуальный диск монтировался автоматически при старте системы и после этого запускался Sql Server.

Для этого создадим, где-нибудь текстовый файл attach.txt, я создам его в папке vhds:

select vdisk file=»C:\vhds\mssql.vhd»
attach vdisk

Соотсветсвенно путь до диска и имя измените на ваши.

И создадим там же bat файл start-sql.bat:

diskpart /s “C:\vhds\attach.txt”
ping -n 10 127.0.0.1
net start mssql$имя_экземпляра

В моем случае имя экземпляра — sqlexpress, команда будет такая — net start mssql$sqlexpress. Так же укажите верный путь до файла attach.txt

Теперь идем в панель управление — администрирование — планировщик заданий, и создаем новую задачу.

Во вкладке общее — даем понятное имя, выбираем выполнять для всех пользователей и ставим галку выполнять с наивысшими правами.

Новое задание, вкладка общее

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

Создаем триггер

Во вкладке действие — создаем действие — запуск программы и указываем наш bat файл.

В действиях выбираем наш bat файл

Во вкладке условия — убираем галку — запускать только при питании от электросети.

Условия

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

Перезагружаем компьютер и удостоверяемся, что mssql после перезагрузки запускается.

Опубликовано в 08.10.201730.05.2024 от sanglyb

Навигация по записям

← Как настроить OpenVPN сервер на Mikrotik
Как смотреть видео через ssh консоль →

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Подписывайтесь

Youtube
vk
telegram
github
twitter
rss
  • Форум
  • Об авторе
  • Поддержать автора

Популярные записи

Новые записи

  • Как расширить LVM раздел в Linux
  • Исправление ошибки SrsResources.dll после обновления SSRS для SCCM
  • Проблема при использовании библиотеки PassFiltEx на старых процессорах
  • Как удалить вложения из старых событий календаря в Exchange с помощью скрипта
  • Как скачать и установить Office 2024 LTSC

Архивы

  • 2026 (3)
  • 2025 (5)
  • 2024 (7)
  • 2023 (6)
  • 2022 (5)
  • 2021 (25)
  • 2020 (34)
  • 2019 (39)
  • 2018 (78)
  • 2017 (56)
  • 2016 (77)
  • 2015 (9)
© 2015-2026 www.mytechnote.ru
Использование материалов сайта возможно только с разрешения владельца или обязательна индексируемая, прямая, передающая вес ссылка на материал.