KB4492899 - KHẮC PHỤC: Thư mục cấp cơ sở dữ liệu FileTable không thể truy nhập sau khi khởi động cơ sở dữ liệu trong SQL Server 2016 và 2017

Áp dụng cho
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer Windows SQL Server 2017 Enterprise Windows SQL Server 2017 Enterprise Core Windows SQL Server 2017 Standard Windows

Triệu chứng

Trong quá trình khởi động Microsoft SQL Server 2016 và 2017, nếu người dùng cố gắng kết nối với cơ sở dữ liệu trước khi nó được khởi động, phiên người dùng có thể khiến cơ sở dữ liệu tự động được khởi động. Khi điều này xảy ra, nếu cơ sở dữ liệu chứa FileTable và bật FILESTREAM non_transacted_access thì thư mục FileTable cấp cơ sở dữ liệu sẽ không thể truy nhập được sau khi khởi động cơ sở dữ liệu. Nếu bạn cố truy nhập thư mục thông qua File Explorer, điều đó có thể cho thấy thư mục không khả dụng. Khi bạn chạy lệnh "dir" từ dấu nhắc lệnh, lệnh trả về "The system cannot find the file specified" (Hệ thống không thể tìm thấy tệp được chỉ định).

Ngoài ra, bạn có thể thấy các lỗi sau đây trong nhật ký lỗi cho biết một phiên người dùng đã kích hoạt cơ sở dữ liệu tự động khởi động:

Ngày Giờ Lỗi Đăng nhập: 18456, Mức độ nghiêm trọng: 14, Trạng thái: 38.

Ngày Giờ Đăng nhập không thành công cho người dùng 'Tên người dùng'. Lý do: Không thể mở ' DatabaseName' cơ sở dữ liệu được chỉ định rõ ràng. [MÁY KHÁCH: IPNumber]

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".

Giải pháp

Sự cố này đã được khắc phục trong các bản cập nhật tích lũy sau đây dành cho SQL Server:

Giới thiệu về các bản cập nhật tích lũy cho SQL Server:

Mỗi bản cập nhật tích lũy mới dành cho SQL Server chứa tất cả các bản sửa lỗi nóng và bản sửa lỗi bảo mật được tích hợp trong bản cập nhật tích lũy trước đó. Xem các bản cập nhật tích lũy mới nhất cho SQL Server:

Giải pháp thay thế

Giải pháp thay thế cho sự cố này là tắt và bật lại non_transacted_access FILESTREAM của cơ sở dữ liệu.

ALTER DATABASE [DatabaseName] SET SINGLE_USER VỚI ROLLBACK IMMEDIATE

ALTER DATABASE [DatabaseName] SET FILESTREAM ( NON_TRANSACTED_ACCESS = OFF )

ALTER DATABASE [DatabaseName] SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL )

ALTER DATABASE [DatabaseName] SET MULTI_USER VỚI ROLLBACK IMMEDIATE

Tham khảo

Tìm hiểu về thuật ngữ mà Microsoft dùng để mô tả các bản cập nhật phần mềm.