Симптомы:
После установки одной из программ можно наблюдать следующую проблему, при запуске “Диспетчер программ” в окне D-Sector TS выходит “Ошибка подключения к базе данных”
В журнале ошибок можно увидеть сообщение:
Faulting application name: sqlservr.exe, version: 2019.150.2000.5, time stamp: 0x5d8a9215
Faulting module name: ntdll.dll, version: 10.0.22000.120, time stamp: 0x50702a8c
Exception code: 0xc0000005
Fault offset: 0x00000000000357ae
Faulting process id: 0x1124
Faulting application start time: 0x01d7bf67449d262c
Faulting application path: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe
Причина:
Для работы D-Sector TS и Sector ВЭД+ используется MS SQL Server (Express). После установки программы должна запуститься служба SQL Server. В процессе работы SQL Server выполняет проверку целостности базовой файловой системы перед попыткой открыть файлы системной и пользовательской базы данных.
На некоторых новых компьютерах в системах под управлением Windows 11 предустановленной от завода изготовителя компьютера устройства хранения данных и драйверы устройств предоставляют размер сектора диска, превышающий поддерживаемый размер сектора в 4 КБ. SQL Server
не сможет запуститься на таком компьютере
SQL Server в настоящее время поддерживает размер хранилища секторов 512 байт и 4 КБ,
. Это стандарт который предерживается компания разработчик.
Чтобы проанализировать том (Диск C:) выполните следующую команду в PowerShell:
fsutil fsinfo sectorinfo С:
Найдите значения
PhysicalBytesPerSectorForAtomicity и
PhysicalBytesPerSectorForPerformance ,
Возвращаемые в байтах, и, если они отличается от значения 4096 указывает размер хранилища сектора 4 КБ, как на снимке ниже 16384, то установка SQL Server на данный диск не возможна. Следовательно программа работать не будет.
Решение:
- Если у вас Windows 10 или Windows 11 установлена от производителя компьютера и не была переустановлена, то перед установкой программы проверьте подходит ли файловая система требованиям для SQL Server командой через PowerShell (запущенной от администратора)
fsinfo sectorinfo С:
Если у вас на диске C:\ выдаст параметр PhysicalBytesPerSectorForPerformance в 16384 (размер сектора)
Это означает, что установка программы по умолчанию не возможна. Требуется установить SQL сервер вручную.
Как один из вариантов можно установить SQL Server на другой диск, например диск D:\.
Или если диск С: имеет достаточно свободного места, то можно его разделить на логические диски С: и D:, отрезав от диска С:\ свободное место под диск D:\ примерно 20Гб свободного места.
После проверьте ваш диск
D:\
Той же командой с буквой диска : проверьте подходит ли диск.
fsutil fsinfo sectorinfo D:
Обычно диск :\ форматируют по умолчанию и размер сектора должен подходить под требуемые параметры.
Если все значение отображают 4096 или 512 то после этого можете приступать к установки , и в установщике, на шаге выбора папки куда будет установлен , выбрать диск :\
Как на скриншоте ниже
2. Переместите существующую базу данных:
Чтобы переместить существующую базу данных на другое расположение файлов, воспользуйтесь следующими шагами:
Остановите SQL Server (или его службу, если у вас установлен SQL Server Management Studio).
• Скопируйте файлы базы данных (.mdf и .ldf) на новое место.
• Откройте SQL Server Management Studio и подключитесь к серверу.
• Запустите SQL-запрос для перемещения файлов базы данных:
ALTER DATABASE YourDatabaseName
MODIFY FILE (NAME = YourDataFileName, FILENAME = 'NewDataFilePath.mdf');
ALTER DATABASE YourDatabaseName
MODIFY FILE (NAME = YourLogFile, FILENAME = 'NewLogFilePath.ldf');
YourDatabaseName - это имя вашей базы данных, YourDataFileName и YourLogFile - это логические имена файлов данных и журналов соответственно, а NewDataFilePath.mdf и NewLogFilePath.ldf - это новые пути к файлам данных и журналов.
• Запустите SQL Server (или его службу, если вы останавливали её ранее).