Microsoft phân phối các bản sửa lỗi Microsoft SQL Server 2008 R2 hoặc Microsoft SQL Server 2008 dưới dạng một tệp có thể tải xuống. Vì các bản sửa lỗi được tích lũy, mỗi bản phát hành mới đều chứa toàn bộ bản sửa lỗi nóng và toàn bộ bản sửa lỗi bảo mật có trong bản phát hành bản sửa lỗi SQL Server 2008 R2 hoặc SQL Server 2008 trước đó.
Triệu chứng
Microsoft SQL Server 2008 R2 hoặc Microsoft SQL Server 2008 có thể đánh dấu tệp dữ liệu cơ sở dữ liệu là thưa thớt, ngay cả khi các tệp vật lý được đánh dấu là không thưa thớt trong hệ thống tệp.
Ghi chú
Để xác định xem tệp dữ liệu cơ sở dữ liệu có được đánh dấu là thưa thớt trong siêu dữ liệu SQL Server hay không, hãy chạy câu lệnh sau đây, rồi kiểm tra xem cột Is_Sparse có được đặt thành giá trị khác 0 trong tập kết quả không:
Sử dụng
<tên cơ sở dữ liệu>
Chọn is_sparse , physical_name từ sys.database_filesĐể truy vấn trạng thái tệp vật lý trong hệ thống tệp, hãy chạy lệnh Windows sau sau khi cơ sở dữ liệu ở chế độ ngoại tuyến:
fsutil sparse queryflag<files path>\<database file>Nếu bạn nhận được đầu ra sau đây thì tệp được đánh dấu là thưa thớt trong hệ thống tệp:
Tệp này được đặt là thưa thớt.
Cả siêu dữ liệu SQL Server và siêu dữ liệu hệ thống tệp đều phải được đánh dấu là thưa thớt chỉ đối với các tệp dữ liệu cơ sở dữ liệu là một phần của ảnh cơ sở dữ liệu.
Nguyên nhân
Sự cố này xảy ra vì hệ thống tệp đánh dấu không chính xác toàn bộ tệp dữ liệu cơ sở dữ liệu là thưa thớt sau khi luồng thay thế ban đầu được đánh dấu là thưa thớt bị xoá. Luồng thay thế sẽ bị loại bỏ khi lệnh DBCC CHECKDB kết thúc.
Ghi chú
Sử dụng Ảnh tức thời Cơ sở dữ liệu Nội bộ là một tính năng của NTFS được sử dụng bởi dòng lệnh DBCC CHECKDB. Khi bạn chạy lệnh DBCC, bộ máy cơ sở dữ liệu sẽ tạo luồng thay thế ảnh cơ sở dữ liệu và đưa dòng về trạng thái nhất quán về giao dịch. Lệnh DBCC chạy kiểm tra dựa trên luồng thay thế. Luồng thay thế bị bỏ sau khi lệnh DBCC hoàn tất.
Thiết kế gây ra sự cố này được giới thiệu trong Windows Server 2003, trong đó các bản sao lưu mức ổ đĩa của Windows được sử dụng để sao lưu các tệp cơ sở dữ liệu. Siêu dữ liệu SQL Server lưu trữ bản sao của các thuộc tính thưa thớt cho các tệp dữ liệu trong bảng hệ thống. Tuy nhiên, SQL Server sẽ không cập nhật thông tin Is_Sparse sau khi thuộc tính thưa thớt bị loại bỏ khỏi hệ thống tệp.
Sự cố này cũng xảy ra sau khi bạn di chuyển cơ sở dữ liệu từ Windows Server 2003 sang một phiên bản hệ điều hành Windows mới hơn.
Ví dụ: bạn di chuyển cơ sở dữ liệu từ Windows Server 2003 sang Windows Server 2008 hoặc Windows Server 2008 R2.
Giải pháp
Để khắc phục sự cố này trong SQL Server 2008 R2 hoặc SQL Server 2008, hãy áp dụng hotfix sau, sau đó đưa cơ sở dữ liệu trực tuyến. Khi cơ sở dữ liệu được đưa lên mạng lưới, SQL Server sẽ kiểm tra xem siêu dữ liệu của tệp cơ sở dữ liệu vật lý có được đánh dấu là thưa thớt trong hệ thống tệp hay không. Nếu siêu dữ liệu được đánh dấu là không thưa thớt, siêu dữ liệu SQL Server sẽ được cập nhật.
Lưu ý Để loại bỏ các thuộc tính thưa thớt khỏi hệ thống tệp, hãy sao chép tệp cơ sở dữ liệu, rồi dùng bản sao mới của các tệp cho cơ sở dữ liệu đó. Để biết thêm thông tin về quy trình này, hãy truy nhập trang web MSDN sau:
Cách loại bỏ các thuộc tính thưa thớt khỏi hệ thống tệp
Thông tin cập nhật tích lũy
SQL Server 2008 Gói Dịch vụ 3
Bản sửa lỗi cho sự cố này được phát hành lần đầu trong gói cập nhật tích lũy 1 cho SQL Server 2008 Gói Dịch vụ 3. Để biết thêm thông tin về gói cập nhật tích lũy này, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
2617146 Gói cập nhật tích lũy 1 cho SQL Server 2008 Gói Dịch vụ 3Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các bản hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành sửa lỗi SQL Server 2008 trước đó. Microsoft khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi mới nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2629969 Các bản dựng SQL Server 2008 được phát hành sau khi SQL Server 2008 Gói Dịch vụ 3 được phát hành Các hotfix Microsoft SQL Server 2008 được tạo cho các gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng hotfix SQL Server 2008 Gói Dịch vụ 3 cho cài đặt SQL Server 2008 Gói Dịch vụ 3. Theo mặc định, mọi hotfix được cung cấp trong gói dịch vụ SQL Server sẽ được đưa vào gói dịch vụ SQL Server tiếp theo.
SQL Server 2008 Gói Dịch vụ 1
Bản sửa lỗi cho sự cố này được phát hành lần đầu trong gói cập nhật tích lũy 16 cho SQL Server 2008 Gói Dịch vụ 1. Để biết thêm thông tin về gói cập nhật tích lũy này, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
2582282 Gói cập nhật tích lũy 16 cho SQL Server 2008 Gói Dịch vụ 1Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các bản hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành bản sửa lỗi SQL Server 2008 trước đó. Microsoft khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi mới nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
970365 Các bản dựng SQL Server 2008 được phát hành sau khi SQL Server 2008 Gói Dịch vụ 1 được phát hành Các hotfix Microsoft SQL Server 2008 được tạo cho các gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng hotfix SQL Server 2008 Gói Dịch vụ 1 cho cài đặt SQL Server 2008 Gói Dịch vụ 1. Theo mặc định, mọi hotfix được cung cấp trong gói dịch vụ SQL Server sẽ được đưa vào gói dịch vụ SQL Server tiếp theo.
SQL Server 2008 Gói Dịch vụ 2
Bản sửa lỗi cho sự cố này được phát hành lần đầu trong gói cập nhật tích lũy 6 cho SQL Server 2008 Gói Dịch vụ 2. Để biết thêm thông tin về gói cập nhật tích lũy này, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
2582285 Gói cập nhật tích lũy 6 cho SQL Server 2008 Gói Dịch vụ 2Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các bản hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành bản sửa lỗi SQL Server 2008 trước đó. Microsoft khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi mới nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2402659 Các bản dựng SQL Server 2008 được phát hành sau khi SQL Server 2008 Gói Dịch vụ 2 được phát hành Các hotfix Microsoft SQL Server 2008 được tạo cho các gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng hotfix SQL Server 2008 Gói Dịch vụ 2 cho cài đặt SQL Server 2008 Gói Dịch vụ 2. Theo mặc định, mọi hotfix được cung cấp trong gói dịch vụ SQL Server sẽ được đưa vào gói dịch vụ SQL Server tiếp theo.
SQL Server 2008 R2 CU9
Bản sửa lỗi cho sự cố này được phát hành lần đầu trong gói cập nhật tích lũy 9 cho SQL Server 2008 R2. Để biết thêm thông tin về cách lấy gói cập nhật tích lũy này cho SQL Server 2008 R2, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
2567713 Gói cập nhật tích lũy 9 cho SQL Server 2008 R2 Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các bản hotfix và tất cả bản sửa lỗi bảo mật được tích hợp trong bản phát hành bản sửa lỗi SQL Server 2008 R2 trước đó. Chúng tôi khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
981356 Các bản dựng SQL Server 2008 R2 được phát hành sau khi SQL Server 2008 R2 được phát hành
SQL Server 2008 R2 Gói Dịch vụ 1 CU2
Bản sửa lỗi cho sự cố này được phát hành lần đầu trong gói cập nhật tích lũy 2. Để biết thêm thông tin về cách lấy gói cập nhật tích lũy này cho SQL Server 2008 R2 SP1, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở kiến thức Microsoft:
2567714 Gói cập nhật tích lũy 2 cho SQL Server 2008 R2 Gói Dịch vụ 1Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các bản hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành bản sửa lỗi SQL Server 2008 R2 SP1 trước đó. Chúng tôi khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2567616 Các bản dựng SQL Server 2008 R2 được phát hành sau khi SQL Server 2008 R2 Gói Dịch vụ 1 được phát hành
Thông tin hotfix
Một hotfix được hỗ trợ luôn sẵn dùng từ Microsoft. Tuy nhiên, hotfix này chỉ nhằm mục đích khắc phục sự cố được mô tả trong bài viết này. Chỉ áp dụng hotfix này cho các hệ thống đang gặp phải sự cố được mô tả trong bài viết này. Hotfix này có thể được kiểm tra bổ sung. Do đó, nếu bạn không bị ảnh hưởng nghiêm trọng bởi sự cố này, chúng tôi khuyên bạn nên đợi bản cập nhật phần mềm tiếp theo có chứa hotfix này.
Nếu hotfix sẵn có để tải xuống, có một phần "Hotfix tải xuống khả dụng" ở đầu bài viết Cơ sở Kiến thức này. Nếu phần này không xuất hiện, hãy liên hệ với bộ phận Dịch vụ và Hỗ trợ khách hàng của Microsoft để nhận hotfix.
Lưu ý Nếu phát sinh sự cố bổ sung hoặc nếu cần khắc phục sự cố thì có thể bạn phải tạo yêu cầu dịch vụ riêng. Chi phí hỗ trợ thông thường sẽ áp dụng đối với các vấn đề và câu hỏi hỗ trợ bổ sung không phù hợp với hotfix cụ thể này. Để biết danh sách đầy đủ các số điện thoại hỗ trợ và dịch vụ khách hàng của Microsoft hoặc để tạo một yêu cầu dịch vụ riêng biệt, hãy truy cập trang web sau của Microsoft:
/contactus/?ws=support Lưu ý Biểu mẫu "Hotfix tải xuống khả dụng" hiển thị các ngôn ngữ mà hotfix sẵn dùng. Nếu bạn không thấy ngôn ngữ của mình thì đó là do không có hotfix cho ngôn ngữ đó.
Điều kiện tiên quyết
Để áp dụng hotfix này, bạn phải cài đặt SQL Server 2008 R2.
Yêu cầu khởi động lại
Bạn không phải khởi động lại máy tính sau khi áp dụng hotfix này.
Thông tin thay thế hotfix
Hotfix này không thay thế hotfix đã phát hành trước đó.
Thông tin tệp
Phiên bản chung của hotfix này có các thuộc tính tệp (hoặc thuộc tính tệp mới hơn) được liệt kê trong bảng sau. Ngày và giờ của các tệp này được liệt kê theo Giờ Chuẩn Quốc tế (UTC). Khi bạn xem thông tin về tệp, tệp đó đã được chuyển đổi thành giờ địa phương. Để xem sự khác biệt giữa UTC và giờ địa phương, hãy sử dụng tab Múi giờ trong mục Ngày và giờ trong Panel điều khiển.
| Tên tệp | Phiên bản tệp | Kích thước tệp | Ngày | Thời gian | Nền tảng |
|---|---|---|---|---|---|
| Sqlservr.exe | 2009.100.1800.0 | 121,829,216 | Ngày 8 tháng 7 năm 2011 | 11:55 | IA-64 |
| Sqlservr.exe | 2009.100.1800.0 | 62,027,616 | Ngày 8 tháng 7 năm 2011 | 12:28 | x64 |
| Sqlservr.exe | 2009.100.1800.0 | 42,911,584 | Ngày 8 tháng 7 năm 2011 | 13:22 | x86 |
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".
Xem thêm thông tin
Bảng sau đây cung cấp thêm thông tin về các sản phẩm hoặc công cụ tự động kiểm tra tình trạng này trên phiên bản SQL Server của bạn và trên các phiên bản sản phẩm SQL Server mà quy tắc được đánh giá.
| Phần mềm quy tắc | Tiêu đề quy tắc | Mô tả quy tắc | Các phiên bản sản phẩm mà quy tắc được đánh giá |
|---|---|---|---|
| Trình tư vấn Trung tâm Hệ thống | Tệp cơ sở dữ liệu SQL Server được đánh dấu là tệp thưa thớt | Trình tư vấn Trung tâm Hệ thống kiểm tra xem phiên bản SQL Server này có chứa các tệp cơ sở dữ liệu được đánh dấu là thưa thớt hay không. Chỉ nên đánh dấu tệp ảnh cơ sở dữ liệu là tệp. Nếu các tệp cơ sở dữ liệu bình thường được đánh dấu là thưa thớt, thì Trình tư vấn sẽ tạo cảnh báo. Trình tư vấn dựa vào cột is_sparse trong sys.master_files dạng xem danh mục. Xem lại thông tin chi tiết được cung cấp trong phần "Thông tin được Thu thập" của cảnh báo trình tư vấn, rồi kiểm tra trạng thái thưa thớt ở cấp độ HĐH cho các tệp bị ảnh hưởng. Sau khi bạn xóa trạng thái HĐH thưa thớt, bạn có thể áp dụng hotfix được thảo luận trong bài viết này để làm mới siêu dữ liệu SQL Server và đồng bộ hóa với thiết đặt HĐH. |
SQL Server 2008 SQL Server 2008 R2 SQL Server 2012 |
Tham khảo
Để biết thêm thông tin về các lệnh DBCC, hãy truy cập trang web MSDN sau:
Thông tin chung về lệnh DBCC Để biết thêm thông tin về điều khoản Fsutil, hãy truy cập trang web MSDN sau:
Thông tin chung về câu lệnh Fsutil Để biết thêm thông tin về sự cố này trong Windows Server 2003, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
973886 Bạn không thể khôi phục các tệp lớn trong hệ thống tệp NTFS khi tất cả các luồng dữ liệu có thuộc tính thưa thớt bị xóa trong phiên bản 64 bit của Windows XP SP2 hoặc trong Windows Server 2003 SP2
932021 Thông báo lỗi khi bạn chạy lệnh "chkdsk" cùng với khóa chuyển đổi "/v" trên máy tính chạy Windows Server 2003: "Sửa số phân> đoạn <bản ghi tệp thưa thớt"