> For the complete documentation index, see [llms.txt](https://docs.verge.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.verge.io/knowledge-base/vi/virtual-machines/virtio-win-mssql-compatibility.md).

# Tương thích trình điều khiển VirtIO-Win với khối lượng công việc MS SQL Server

## Tổng quan

{% hint style="info" %}
**Các điểm chính**

* virtio-win **v0.1.285** và **v0.1.292** chứa một điều kiện tranh chấp trong `vioscsi` và `viostor` các trình điều khiển lưu trữ gây lộ lỗi trên các máy ảo MS SQL Server tải nặng
* **v0.1.271** là bản phát hành cuối cùng trước commit bị ảnh hưởng và là phiên bản được khuyến nghị cho các máy khách Windows chạy khối lượng công việc cơ sở dữ liệu
* Các triệu chứng rõ rệt nhất trên **Windows Server 2025** các máy khách dưới I/O song song liên tục
* Bản sửa upstream đã được đưa vào vào tháng 1 năm 2026; các bản phát hành virtio-win sau này có bao gồm nó cũng sẽ an toàn — hãy xác minh bản dựng trước khi triển khai rộng rãi
* Tạo snapshot của VM và dừng các dịch vụ SQL Server trước khi thay đổi trình điều khiển lưu trữ
  {% endhint %}

Các máy ảo Windows chạy MS SQL Server trên VergeOS có thể tạo ra một luồng các mục nhật ký SQL Server "read-retry" — và trong một số trường hợp, dịch vụ SQL Server bị treo sau vài ngày chịu tải liên tục — khi máy khách đang dùng **virtio-win v0.1.285 hoặc v0.1.292**. Nguyên nhân gốc là việc gán SRB ID không nguyên tử trong `vioscsi`/`viostor` các miniport Storport cho phép phát sinh ID trùng lặp khi Windows phân phối I/O song song trên nhiều CPU (được theo dõi ở upstream là [vấn đề virtio-win #1453](https://github.com/virtio-win/kvm-guest-drivers-windows/issues/1453)).

Hành vi này dễ tái hiện nhất trên **Windows Server 2025** vì triển khai Storport của nó song song hóa `StartIo` mạnh tay hơn so với các bản phát hành Windows Server trước đó. Các máy khách Windows cũ hơn cũng gặp cùng lỗi này nhưng ít khi kích hoạt hơn.

Hạ cấp trình điều khiển virtio-win của máy khách xuống **v0.1.271** là một cách khắc phục ổn định. Bản sửa cho điều kiện tranh chấp cơ bản đã được hợp nhất upstream và phát hành trong các bản dựng virtio-win mới hơn, vì vậy các bản phát hành sau có bao gồm nó cũng sẽ an toàn — hãy xác nhận với bộ phận hỗ trợ VergeOS bản dựng nào trong môi trường của bạn đã được biết là tốt trước khi nâng cấp giữa sự cố.

## Triệu chứng

Nếu bạn nghi ngờ sự cố này trên một máy ảo Windows VergeOS, hãy tìm các mục sau trong **Application** nhật ký sự kiện và **nhật ký lỗi SQL Server**:

* Các thông điệp Read-retry mà **mong đợi** và **thực tế** có giá trị giống nhau, ví dụ:

  > *Một lần đọc tệp '\*.mdf' tại offset 0x... đã thành công sau khi thất bại 1 lần với lỗi: checksum không đúng (mong đợi: 0xad4c6778; thực tế: 0xad4c6778)*

  > *Một lần đọc tệp '\*.mdf' tại offset 0x... đã thành công sau khi thất bại 1 lần với lỗi: pageid không đúng (mong đợi 1:29669944; thực tế 1:29669944)*
* `Không tìm thấy SRB cho ID` các mục từ `vioscsi` nguồn
* Các dịch vụ SQL Server bị treo sau vài ngày chịu tải nặng liên tục

{% hint style="info" %}
**Các thông điệp này có thể trông giống như hỏng dữ liệu nhưng thường không phải vậy**

SQL Server báo cáo **thử lại** kết quả, và nó thành công ở lần thử thứ hai. `DBCC CHECKDB` thường vẫn sạch — các trang cơ sở dữ liệu trên đĩa còn nguyên vẹn. Trình điều khiển đang trả buffer sai cho lần đọc đầu tiên do SRB ID trùng lặp, và lần đọc thứ hai trả về dữ liệu đúng. Việc phải thử lại liên tục vẫn cho thấy có vấn đề thực sự và cần được xử lý ngay cả khi không phát hiện hỏng dữ liệu.
{% endhint %}

## Điều kiện tiên quyết

* Một máy ảo Windows chạy MS SQL Server (hoặc khối lượng công việc cơ sở dữ liệu có I/O cao tương tự) trên VergeOS
* Quyền quản trị trên máy khách Windows
* Một snapshot của VM được tạo trước khi thay đổi bất kỳ trình điều khiển nào
* Tham số **ISO virtio-win v0.1.271** được tải lên môi trường VergeOS của bạn tại **Tệp**. Các ISO lưu trữ có sẵn từ [kho lưu trữ stable-virtio trên Fedora People](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/)

## Xác định phiên bản Trình điều khiển VirtIO đã cài đặt

Trước khi thay đổi bất cứ điều gì, hãy xác nhận bản dựng virtio-win mà máy khách hiện đang chạy.

1. **Mở Device Manager**
   * Nhấp chuột phải vào menu Start và chọn **Trình quản lý Thiết bị**.
2. **Tìm bộ điều khiển lưu trữ VirtIO**
   * Mở rộng **Storage controllers**.
   * Nhấp chuột phải **Red Hat VirtIO SCSI controller** (cho vioscsi) hoặc **Red Hat VirtIO SCSI pass-through controller** / **Red Hat VirtIO SCSI Disk Device** (cho viostor) và chọn **Properties**.
3. **Kiểm tra phiên bản và ngày của trình điều khiển**
   * Chuyển sang tab **Trình điều khiển** tab.
   * Ghi lại các trường **Driver Version** và **Driver Date** .
4. **Đối chiếu với ISO nguồn**
   * Dấu phiên bản trình điều khiển theo định dạng `100.<minor>.<build>.<revision>` trong đó thành phần revision cuối được tạo từ phiên bản ISO virtio-win. Ví dụ, một `vioscsi` trình điều khiển từ **virtio-win 0.1.285** thường kết thúc bằng `.28500`; **0.1.271** thường kết thúc bằng `.27100`.
   * Nếu bạn không chắc ISO nào đã tạo ra trình điều khiển đã cài đặt, hãy gắn ISO ứng viên bên trong máy khách và so sánh `vioscsi.inf` / `viostor.inf` `DriverVer` dòng với giá trị hiển thị trong Device Manager.

{% hint style="success" %}
**Kiểm tra cả vioscsi và viostor**

Lỗi upstream ảnh hưởng đến cả `vioscsi` (Virtio SCSI) và `viostor` (Virtio block). Nếu VM dùng một loại bus cho đĩa OS và loại khác cho đĩa dữ liệu, hãy kiểm tra cả hai bộ điều khiển.
{% endhint %}

## Các phiên bản được khuyến nghị

| Phiên bản                                                          | ô                                                                                                                                   |
| ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| **v0.1.271**                                                       | **Cách khắc phục được khuyến nghị.** Bản phát hành cuối cùng trước commit bị ảnh hưởng; đã được xác nhận ổn định dưới tải SQL nặng. |
| **v0.1.285**                                                       | **Tránh.** Chứa `vioscsi`/`viostor` lỗi tranh chấp SRB ID; gây ra lỗi read-retry trên các VM SQL bận rộn.                           |
| **v0.1.292**                                                       | **Tránh.** Cùng lỗi như v0.1.285.                                                                                                   |
| Các bản dựng **sau bản sửa upstream** (từ tháng 1 năm 2026 trở đi) | Về nguyên tắc thì nên an toàn. Hãy xác nhận bản dựng cụ thể với bộ phận hỗ trợ VergeOS trước khi triển khai.                        |

Các lượt tải ISO virtio-win ổn định có sẵn từ [kho lưu trữ Fedora People stable-virtio](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/), và các bản phát hành cũ hơn từ [thư mục archive-virtio](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/).

## Hạ cấp xuống virtio-win v0.1.271

{% hint style="warning" %}
**Chụp ảnh nhanh trước**

Trước khi thay đổi bất kỳ trình điều khiển virtio nào trong máy khách, hãy tạo một snapshot VergeOS của VM. Ngăn xếp lưu trữ là phần sống còn khi khởi động — snapshot là điểm khôi phục nếu việc thay đổi trình điều khiển khiến Windows không thể gắn các đĩa của nó.
{% endhint %}

1. **Dừng các dịch vụ MS SQL Server trong máy khách**
   * Từ PowerShell nâng cao hoặc bảng điều khiển Services, hãy dừng **dịch vụ SQL Server (MSSQLSERVER)** và mọi dịch vụ phụ thuộc (SQL Agent, full-text, Reporting Services, v.v.) để làm yên I/O trước khi thay đổi trình điều khiển lưu trữ.
2. **Gắn ISO virtio-win v0.1.271**
   * Trong VergeOS, chỉnh sửa VM và gắn **virtio-win-0.1.271.iso** như một thiết bị CD/DVD.
   * Xác nhận ISO có hiển thị bên trong Windows (thường là ký tự ổ đĩa khả dụng tiếp theo).
3. **Gỡ cài đặt các công cụ khách virtio-win hiện tại**
   * Mở **Cài đặt → Ứng dụng & tính năng** (hoặc **Chương trình và Tính năng** trong Control Panel) bên trong máy khách.
   * Tìm **Virtio-win-guest-tools** và chọn **Gỡ cài đặt**. Làm theo các lời nhắc và khởi động lại nếu được yêu cầu.
   * Nếu việc gỡ cài đặt thất bại hoặc bị hoàn tác với lỗi `0x80070643` (một sự cố đã biết khi xóa virtio-win-guest-tools), hãy dùng [trình khắc phục sự cố Program Install and Uninstall](https://support.microsoft.com/topic/fix-problems-that-block-programs-from-being-installed-or-removed-cca7d1b6-65a9-3d98-426b-e9f927e1eb4d) để dọn dẹp đăng ký trước khi tiếp tục.
4. **Khởi động lại VM**
   * Khởi động lại Windows để mọi tệp trình điều khiển đang được sử dụng được giải phóng. VM vẫn phải khởi động được — Windows giữ các binary trình điều khiển lưu trữ cho đến khi gói mới được cài đặt.
5. **Cài đặt virtio-win-guest-tools từ ISO v0.1.271**
   * Từ ISO v0.1.271 đã gắn, chạy `virtio-win-guest-tools.exe` (hoặc `virtio-win-gt-x64.msi`) với tư cách quản trị viên.
   * Hoàn tất trình cài đặt với lựa chọn thành phần mặc định. Thao tác này cài lại vioscsi, viostor, NetKVM và guest agent ở bản dựng v0.1.271.
6. **Khởi động lại VM một lần nữa**
   * Khởi động lại Windows để các ngăn xếp lưu trữ và mạng nạp lại theo các trình điều khiển đã hạ cấp.
7. **Xác minh phiên bản trình điều khiển mới**
   * Quay lại **Device Manager → Storage controllers**, mở **Properties → Driver** tab, và xác nhận **Driver Version** hiện phản ánh bản dựng v0.1.271 (thường kết thúc bằng `.27100`).
   * Lặp lại cho mọi bộ điều khiển VirtIO khác và cho **Red Hat VirtIO Ethernet Adapter** trong **Network adapters**.
8. **Khởi động các dịch vụ MS SQL Server**
   * Khởi động dịch vụ SQL Server và mọi dịch vụ phụ thuộc, rồi xác nhận các cơ sở dữ liệu lên online sạch sẽ.
9. **Giám sát khi tải**
   * Tiếp tục các khối lượng công việc bình thường và theo dõi nhật ký lỗi SQL Server cùng nhật ký Windows Application để tìm các thông điệp read-retry như mô tả ở trên. Tiêu chí thành công là hoạt động liên tục mà không có retry.

## Khắc phục sự cố

{% hint style="warning" %}
**Các sự cố thường gặp**

* **Trình cài đặt báo "đã cài đặt phiên bản mới hơn"** — MSI virtio-win không thực hiện hạ cấp tại chỗ. Hãy hoàn tất bước gỡ cài đặt (và khởi động lại) trước khi chạy trình cài đặt v0.1.271.
* **Gỡ cài đặt thất bại với lỗi 0x80070643** — Một lỗi đặc trưng đã biết của virtio-win-guest-tools. Hãy dùng *trình khắc phục sự cố Program Install and Uninstall* để xóa trạng thái trình cài đặt thất bại, khởi động lại, và thử cài đặt v0.1.271 lại.
* **VM không khởi động được sau khi đổi trình điều khiển** — Khôi phục snapshot đã tạo ở phần yêu cầu trước và thử lại quy trình, sau khi đã dừng hoàn toàn các dịch vụ SQL Server trước.
* **Bộ điều khiển lưu trữ hiển thị dấu chấm than màu vàng trong Device Manager** — Trình điều khiển không tải sạch. Nhấp chuột phải vào bộ điều khiển, chọn **Update driver → Browse my computer**, rồi trỏ đến thư mục trên ISO v0.1.271 khớp với phiên bản Windows của bạn (ví dụ `vioscsi\2k25\amd64` cho Windows Server 2025).
* **Các thông điệp read-retry vẫn tiếp diễn sau khi hạ cấp** — Xác minh rằng **cả hai** `vioscsi` và `viostor` (bất kể VM dùng cái nào) giờ đều hiển thị bản dựng v0.1.271 trong Device Manager. Nếu đúng như vậy mà thông điệp vẫn tiếp tục, hãy chụp lại một mẫu mới của nhật ký Application và nhật ký lỗi SQL Server rồi liên hệ bộ phận hỗ trợ VergeOS.
* **Có sẵn bản phát hành virtio-win mới hơn** — Các bản phát hành sau tháng 1 năm 2026 có thể bao gồm bản sửa upstream và là lựa chọn dài hạn tốt hơn so với việc giữ ở v0.1.271. Hãy xác nhận bản dựng cụ thể với bộ phận hỗ trợ VergeOS trước khi triển khai nó vào các VM cơ sở dữ liệu sản xuất.
  {% endhint %}

## Tài nguyên bổ sung

* [Nạp Trình điều khiển Virtio trong Windows Recovery Console](/knowledge-base/vi/virtual-machines/loading-virtio-drivers-in-windows-recovery-console.md)
* [Thực hành tốt nhất cho cơ sở dữ liệu](/knowledge-base/vi/system-administration/database-best-practices.md)
* [Ảnh chụp nhanh và khôi phục VM](/automate-protect-and-extend/backup-and-dr/vm-snapshots-restores.md)
* [vấn đề virtio-win #1453 — báo cáo upstream về lỗi tranh chấp SRB ID](https://github.com/virtio-win/kvm-guest-drivers-windows/issues/1453)
* [Tải ISO virtio-win ổn định](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/)
* [Tải ISO virtio-win đã lưu trữ](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/)

## Phản hồi

{% hint style="info" %}
**Cần trợ giúp?**

Nếu bạn đang thấy các thông điệp read-retry hoặc sự không ổn định trên một VM Windows MS SQL và không chắc phiên bản virtio-win nào đã được cài đặt — hoặc nên nâng cấp lên bản dựng nào — vui lòng liên hệ với [Đội ngũ Hỗ trợ VergeOS](/support-and-services.md) trước khi thực hiện thay đổi trình điều khiển trong môi trường sản xuất.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.verge.io/knowledge-base/vi/virtual-machines/virtio-win-mssql-compatibility.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
