Nâng
Trong thực hiện hiện tại của giao thức SQL Server Virtual Backup Device (VDI), thông báo cuối cùng được gửi từ SQL Server đến máy khách VDI sẽ là lệnh VDC_Flush . Để ngăn ngừa mất dữ liệu, máy khách VDI phải hoàn tất bản sao lưu trước khi trả lời lệnh VDC_Flush . Bắt đầu với SQL Server 2008 và phần giới thiệu về FILESTREAM, lệnh VDC_Flush có thể được gửi nhiều lần trong quá trình sao lưu. Thao tác này gây ra sự cố mà máy khách VDI phải hoàn tất việc sao lưu nhiều lần trong khi thao tác sao lưu. Điều này không thể đối với một số máy khách VDI. Ngoài ra, nếu khách hàng VDI phản hồi về lệnh VDC_Flush mà không cần đảm bảo sao lưu bị cứng khi dữ liệu khác sắp xảy ra sau VDC_Flush, SQL Server có thể cắt xén nhật ký giao dịch. Tuy nhiên, nếu sao lưu cuối cùng không thành công trên máy khách VDI và Nhật ký giao dịch cũng bị cắt cụt, mất dữ liệu có thể xảy ra. Bản cập nhật này thêm lệnh VDI mới VDC_Complete cho biết SQL Server đã hoàn tất việc gửi dữ liệu đến máy khách VDI. Vì vậy, máy khách VDI sẽ có thể hoàn tất bản sao lưu trước khi nó gửi phản hồi đối với SQL Server. chức năng này cho phép máy khách VDI không thể sao lưu trong trường hợp xảy ra sự cố, cũng như ngăn việc đăng nhập giao dịch bị cắt cụt bởi lỗi.Lưu ý Để hỗ trợ lệnh VDC_Complete mới, bản cập nhật này cũng thêm hai tính năng mới vdi VDF_RequestComplete và VDF_CompleteEnabled.
Thông tin cập nhật
Cải thiện này được bao gồm trong các bản Cập Nhật tích lũy sau đây cho SQL Server: Bản Cập Nhật tích lũy 2 cho SQL server 2016 SP1 Cumulative Update 4 cho SQL Server 2016
Bản Cập Nhật tích lũy 5 cho SQL server 2012 Service Pack 3 (SP3) Cumulative Update 3 cho SQL Server 2014 SP2 Cumulative update 10 for SQL Server 2014 SP1
Giới thiệu về 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 cho SQL Server chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật đã được đưa vào bản Cập Nhật tích lũy trước đó. Kiểm tra các bản Cập Nhật tích lũy mới nhất cho SQL Server:
Bản Cập Nhật tích lũy mới nhất cho SQL Server 2016
Thông tin Bổ sung
Để dùng lệnh VDC_Complete mới, thì việc triển khai sau đây phải được áp dụng cho máy khách VDI của bạn:
-
Yêu cầu tính năng VDI mới VDF_RequestComplete. Nếu SQL Server hỗ trợ lệnh VDC_Complete , nó sẽ trả về một phản hồi không phải là NULL. Nếu không, nó sẽ trả về phản hồi NULL cho tính năng được yêu cầu. Mẫu mã ở đây cho biết cách yêu cầu tính năng:
m_pvdiComponents->m_pvdConfig->features = VDF_RequestComplete; printf("Requested features to SQL Server: 0x{0:X}", m_pvdiComponents->m_pvdConfig->features);
-
Xác định xem máy chủ SQL có hỗ trợ lệnh VDC_Complete mới bằng cách sử dụng hàm getconfiguration hay không.
hr = m_pvdiComponents->m_pvdDeviceSet->GetConfiguration(timeout, m_pvdiComponents->m_pvdConfig); if (!(m_pvdiComponents->m_pvdConfig->features & VDF_CompleteEnabled)) { printf("Server does not support VDC_Complete."); return VD_E_NOTSUPPORTED; }
-
Khi bạn xử lý các thư VDI được tải bởi hàm Getcommand , hãy thêm một câu lệnh trường hợp bổ sung để xử lý lệnh VDC_Complete .
case VDC_Complete: // Close the media and ensure that book keeping is completed. backupMedia->Close(); completionCode = ERROR_SUCCESS; break;
Lưu ý Thông báo VDC_Complete phải được tích hợp vào ứng dụng sao lưu để nó có thể sử dụng cải thiện.
Tham khảo
Tìm hiểu về thuật ngữ mà Microsoft sử dụng để mô tả các bản cập nhật phần mềm.