在 Windows 11 上啟動 localDb 時出錯
我在全新的 NUC 上安裝了 Windows 11,然後安裝了所有更新。安裝
Visual Studio 2022 CE
和SSMS (v 18.10)
我嘗試啟動 localDB,假設它是作為 Visual Studio 2022/SSMS 的一部分安裝的,當進入
(localdb)\mssqllocaldb
SSMS 時出現錯誤Cannot connect to (localdb)\mssqllocaldb. SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. Error Number: -1983577846
然後我驗證/嘗試啟動實例如下
sqllocaldb stop mssqllocaldb sqllocaldb delete mssqllocaldb sqllocaldb start "MSSQLLocalDB"
輸入最後一個命令時,我收到錯誤
由於以下錯誤,LocalDB 實例“MSSQLLocalDB”的啟動失敗:無法創建自動實例。有關錯誤詳細資訊,請參閱 Windows 應用程序事件日誌。
我查看了下找到的日誌文件
….\AppData\Local\Microsoft\Microsoft SQL Server 本地 DB\Instances\MSSQLLocalDB
並查看一些錯誤文件並按日期選擇最新的文件。
它包含資訊,最後一行是
2021-12-11 10:48:42.67 spid10s There have been 256 misaligned log IOs which required falling back to synchronous IO. The current IO is on file C:\Users\....\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB\master.mdf.
該文件很短,但我在任何地方都看不到帶有錯誤的條目,並且大多數行都以“這是一條資訊性消息”結尾;無需使用者操作。
Windows 日誌狀態
Windows API 呼叫 WaitForMultipleObjects 返回錯誤程式碼:575。Windows 系統錯誤消息為:{Application Error} 應用程序無法正確啟動 (0x%lx)。點擊確定關閉應用程序。線上報告:3714。
打開服務,可以看到 SQL Services VSS Writer 處於執行狀態,沒有其他 SQL 服務。
有人有什麼建議讓我試試嗎?
Windows 11 和 Windows Server 2022 目前不報告某些 SSD 儲存設備的兼容 PhysicalBytesPerSectorForAtomicity 資訊。當報告的大小超過 4K 時,這會導致 SQL Server IO 出現問題。有關其他詳細資訊,請參閱與大於 4 KB 的系統磁碟扇區大小相關的故障排除錯誤。
供您參考,以下是
fsutil fsinfo sectorinfo c:
工作(Samsung 980 PRO 2TB NVMe)和非工作(Samsung 980 1TB NVMe)系統的命令輸出範例:工作驅動:
LogicalBytesPerSector : 512 PhysicalBytesPerSectorForAtomicity : 4096 PhysicalBytesPerSectorForPerformance : 4096 FileSystemEffectivePhysicalBytesPerSectorForAtomicity : 4096
問題驅動:
LogicalBytesPerSector : 512 PhysicalBytesPerSectorForAtomicity : 16384 PhysicalBytesPerSectorForPerformance : 16384 FileSystemEffectivePhysicalBytesPerSectorForAtomicity : 4096
有人有什麼建議讓我試試嗎?
我看到建議的解決方法包括:
- 在報告正確扇區資訊(不超過 4K)的驅動器上安裝 SQL Server
- 創建 VHD/VHDX 並在該驅動器上安裝 SQL Server
- 使用跟踪標誌 1800 啟動 SQL Server
對於您現有的安裝,跟踪標誌的解決方法可能是最簡單的。但是,LocalDb 似乎沒有提供記錄在案的方法來指定跟踪標誌(可以將 SQL Server 配置管理器用於其他版本)。我在 SO 上找到了這個答案,它顯示了 LocalDb 啟動參數的系統資料庫位置,並針對 SQL 2019 LocalDb 和跟踪標誌 1800 對其進行了調整。
我在我的 PC 上測試了這些 Powershell 命令,它正確設置了 LocalDB 1800 跟踪標誌。
New-Item -Path 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15E.LOCALDB\MSSQLServer\Parameters' -Force New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15E.LOCALDB\MSSQLServer\Parameters' -Name 'SQLArg0' -Value "-T1800" -PropertyType String -Force
之後您需要重新啟動 localDb:
sqllocaldb stop MSSQLLocalDB sqllocaldb start MSSQLLocalDB