Khắc phục: Tệp dữ liệu cơ sở dữ liệu có thể không đúng đánh dấu là thưa trong SQL Server 2008 R2 hoặc SQL Server 2008 ngay cả khi các tập tin vật lý được đánh dấu là không thưa trong hệ thống tệp

Áp dụng cho: SQL Server 2008 R2 DeveloperSQL Server 2008 R2 EnterpriseSQL Server 2008 R2 Express

Microsoft phân phối Microsoft SQL Server 2008 R2 hoặc Microsoft SQL Server 2008 sửa chữa như là một tải về tệp. Bởi vì các bản sửa lỗi tích lũy, mỗi bản phát hành mới chứa tất cả các hotfix và tất cả bản vá bảo mật được đính kèm với trước SQL Server 2008 R2 hoặc SQL Server 2008 sửa chữa phát hành.

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 ngay cả khi các tập tin vật lý được đánh dấu là không thưa trong hệ thống tệp.

Lưu ý:
  • Để xác định xem các tệp dữ liệu cơ sở dữ liệu được đánh dấu là thưa trong siêu dữ liệu SQL Server, chạy lệnh sau, và sau đó kiểm tra xem cột Is_Sparse được đặt thành giá trị khác không tập kết quả:
    Use 
    <database name>
    select is_sparse , physical_name from sys.database_files
  • Để yêu cầu trạng thái của các tập tin vật lý trong hệ thống tệp, hãy chạy lệnh Windows sau khi cơ sở dữ liệu ngoại tuyến:
    fsutil sparse queryflag 
    <files path>\<database file>
    Nếu bạn nhận được kết quả sau, tệp được đánh dấu là thưa trong hệ thống tệp:
    Tệp này được đặt là thưa.
  • Siêu dữ liệu SQL Server và siêu dữ liệu hệ thống tệp phải được đánh dấu là thưa để chỉ cơ sở dữ liệu tệp dữ liệu là một phần của ảnh chụp cơ sở dữ liệu.

Nguyên nhân


Sự cố này xảy ra vì hệ thống tệp không đúng cách đánh dấu tệp cơ sở dữ liệu toàn bộ dữ liệu như thưa sau một dòng khác đã được đánh dấu là thưa bị xoá. Dòng khác bị xoá khi lệnh DBCC CHECKDB kết thúc.

Lưu ý:
  • Sử dụng ảnh chụp cơ sở dữ liệu nội bộ là một tính năng NTFS được sử dụng DBCC CHECKDB dòng lệnh. Khi bạn chạy lệnh DBCC , cơ sở dữ liệu tạo ra một ảnh chụp cơ sở dữ liệu thay thế dòng và đến một trạng thái nhất quán giao dịch. Lệnh DBCC chạy kiểm tra đối với các dòng khác. Dòng khác bị loại bỏ sau khi lệnh DBCC xong.
  • Thiết kế gây ra sự cố này đã được giới thiệu trong Windows Server 2003 mà Windows mức âm lượng sao lưu được sử dụng để sao lưu cơ sở dữ liệu tập tin. Siêu dữ liệu SQL Server lưu trữ bản sao thưa thuộc tính cho tệp dữ liệu trong bảng hệ thống. Tuy nhiên, SQL Server Cập nhật thông tin Is_Sparse sau khi thưa thuộc tính bị xoá khỏi hệ thống tệp.
  • Vấn đề này cũng xảy ra sau khi bạn di chuyển cơ sở dữ liệu từ Windows Server 2003 sang phiên bản mới hơn của hệ điều hành Windows.

    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, áp dụng hotfix sau, và sau đó mang lại cơ sở dữ liệu trực tuyến. Khi cơ sở dữ liệu được cung cấp trực tuyến, SQL Server kiểm tra xem các siêu dữ liệu tệp cơ sở dữ liệu vật lý được đánh dấu là thưa trong hệ thống tệp. Nếu nó được đánh dấu là không thưa, siêu dữ liệu SQL Server được Cập Nhật.

Lưu ý Thưa thuộc tính khỏi các tệp hệ thống, sao chép các tệp cơ sở dữ liệu, và sau đó sử dụng bản sao mới của các tệp cơ sở dữ liệu. Để biết thêm chi tiết về quá trình này, hãy ghé thăm website sau của MSDN:

Thông tin Cập Nhật tích luỹ

SQL Server 2008 gói dịch vụ 3

Việc khắc phục sự cố này lần đầu tiên phát hành bản Cập Nhật tích lũy gói 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 luỹ 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 tích lũy gói 1 cho SQL Server 2008 gói dịch vụ 3
Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và tất cả bản vá bảo mật được đính kèm với trước SQL Server 2008 sửa chữa phát hành. Microsoft khuyên bạn xem xét việc áp dụng bản vá 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 để xem bài viết trong Cơ sở Kiến thức Microsoft:
2629969 SQL Server 2008 phiên bản được phát hành sau khi SQL Server 2008 gói dịch vụ 3
Microsoft SQL Server 2008 hotfix được tạo cho gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng một hotfix SQL Server 2008 gói dịch vụ 3 cho việc cài đặt SQL Server 2008 gói dịch vụ 3. Theo mặc định, bất kỳ hotfix nào được cung cấp trong gói dịch vụ máy chủ SQL được bao gồm trong gói dịch vụ tiếp theo của SQL Server.

SQL Server 2008 gói dịch vụ 1

Sửa chữa cho vấn đề này lần đầu tiên phát hành gói Cập Nhật tích luỹ 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 luỹ 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 tích lũy gói 16 cho SQL Server 2008 gói dịch vụ 1
Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và tất cả các bản vá bảo mật được đính kèm với trước SQL Server 2008 sửa chữa phát hành. Microsoft khuyên bạn xem xét việc áp dụng bản vá 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 để xem bài viết trong Cơ sở Kiến thức Microsoft:
970365 SQL Server 2008 phiên bản được phát hành sau khi SQL Server 2008 gói dịch vụ 1
Microsoft SQL Server 2008 hotfix được tạo cho gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng một 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, bất kỳ hotfix nào được cung cấp trong gói dịch vụ máy chủ SQL được bao gồm trong gói dịch vụ tiếp theo của SQL Server.

SQL Server 2008 gói dịch vụ 2

Sửa chữa cho vấn đề này lần đầu tiên phát hành bản Cập Nhật tích lũy gói 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 luỹ 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 tích lũy gói 6 cho SQL Server 2008 gói dịch vụ 2
Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và tất cả bản vá bảo mật được đính kèm với trước SQL Server 2008 sửa chữa phát hành. Microsoft khuyên bạn xem xét việc áp dụng bản vá 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 để xem bài viết trong Cơ sở Kiến thức Microsoft:
2402659 SQL Server 2008 phiên bản được phát hành sau khi SQL Server 2008 gói dịch vụ 2
Microsoft SQL Server 2008 hotfix được tạo cho gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng một hotfix SQL Server 2008 gói dịch vụ 2 để cài đặt SQL Server 2008 gói dịch vụ 2. Theo mặc định, bất kỳ hotfix nào được cung cấp trong gói dịch vụ máy chủ SQL được bao gồm trong gói dịch vụ tiếp theo của SQL Server.

SQL Server 2008 R2 CU9

Sửa chữa cho vấn đề này lần đầu tiên phát hành gói Cập Nhật tích luỹ 9 dành 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 luỹ này dành 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 tích lũy gói 9 cho SQL Server 2008 R2
Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và tất cả các bản vá bảo mật được đính kèm với trước SQL Server 2008 R2 sửa chữa phát hành. Chúng tôi khuyên bạn xem xét việc áp dụng bản vá 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 để xem bài viết trong Cơ sở Kiến thức Microsoft:
981356 SQL Server 2008 R2 xây dựng được phát hành sau khi SQL Server 2008 R2

SQL Server 2008 R2 gói dịch vụ 1 CU2

Sửa chữa cho vấn đề này lần đầu tiên được phát hành gói Cập Nhật tích luỹ 2. Để biết thêm thông tin về cách lấy gói Cập Nhật tích luỹ này dành cho SQL Server 2008 R2 SP1, 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:
2567714 tích lũy Cập Nhật gói 2 cho SQL Server 2008 R2 gói dịch vụ 1
Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và tất cả các bản vá bảo mật được đính kèm với trước SQL Server 2008 R2 SP1 vá. Chúng tôi khuyên bạn xem xét việc áp dụng bản vá 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 để xem bài viết trong Cơ sở Kiến thức Microsoft:
2567616 SQL Server 2008 R2 Phiên bản được phát hành sau khi SQL Server 2008 R2 gói dịch vụ 1

Thông tin về cập nhật nóng

Cập nhật nóng được hỗ trợ do Microsoft cung cấp. Tuy nhiên, cập nhật nóng này chỉ được dùng để khắc phục sự cố được mô tả trong bài viết này. Chỉ áp dụng cập nhật nóng này cho hệ thống đang gặp sự cố được mô tả trong bài viết này. Cập nhật nóng này có thể được kiểm tra thêm. Vì vậy, 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 đợi bản cập nhật phần mềm tiếp theo có chứa cập nhật nóng này.

Nếu cập nhật nóng này sẵn có để tải xuống thì sẽ có phần "Cập nhật nóng có sẵn để tải xuố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 Dịch vụ Khách hàng và Bộ phận Hỗ trợ của Microsoft để nhận được các cập nhật nóng.

Lưu ý Nếu sự cố khác xảy ra hoặc nếu cần khắc phục sự cố, bạn có thể phải tạo một yêu cầu dịch vụ riêng. Chi phí hỗ trợ thông thường sẽ tính cho các câu hỏi hỗ trợ bổ sung và các sự cố không phù hợp với cập nhật nóng cụ thể này. Để có danh sách đầy đủ số điện thoại của Bộ phận Hỗ trợ và Dịch vụ Khách hàng của Microsoft hoặc để tạo yêu cầu dịch vụ riêng, hãy truy cập website sau của Microsoft:
Lưu ý Mẫu "Tải xuống cập nhật nóng sẵn có" hiển thị các ngôn ngữ mà cập nhật nóng này sẵn có. Nếu bạn không thấy ngôn ngữ của mình thì đó là do cập nhật nóng này hiện không có ngôn ngữ đó.

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

Để áp dụng hotfix này, bạn phải cài đặt của 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 bạn áp dụng hotfix này.

Thông tin thay thế cập nhật nóng

Cập nhật nóng này không thay thế cập nhật nóng được phát hành trước đó.

Thông tin về tệp

Phiên bản toàn cầu 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ờ Quốc tế Phối hợp (UTC). Khi bạn xem thông tin về tệp, ngày và giờ được chuyển đổi thành giờ địa phương. Để tìm sự khác nhau giữa UTC và giờ địa phương, sử dụng tab Múi Giờ trong mục Ngày và Giờ trong Pa-nen điều khiển.

Tên tệpPhiên bản tệpKích thước tệpNgàyGiờNền tảng
Sqlservr.exe2009.100.1800.0121,829,21608-Jul-201111:55IA-64
Sqlservr.exe2009.100.1800.062,027,61608-Jul-201112:28x64
Sqlservr.exe2009.100.1800.042,911,58408-Jul-201113:22x86

Trạng thái


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

Thông tin


Bảng sau đây cung cấp thêm thông tin về sản phẩm hoặc công cụ tự động kiểm tra các điều kiện trên phiên bản SQL Server và các phiên bản của sản phẩm SQL Server mà quy tắc được đánh giá.
Phần mềm quy tắcTiêu đề quy tắcMô tả quy tắcPhiên bản sản phẩm mà các quy tắc được đánh giá
Tư vấn Trung tâm Hệ thốngTệp cơ sở dữ liệu SQL Server đánh dấu là tệp thưa
Tư vấn trung tâm hệ thống kiểm tra nếu phiên bản SQL Server chứa các tệp cơ sở dữ liệu được đánh dấu là thưa. Chỉ những tệp ảnh chụp cơ sở dữ liệu sẽ được đánh dấu là tệp. Nếu tệp cơ sở dữ liệu bình thường được đánh dấu là thưa, sau đó cố vấn tạo cảnh báo. Cố vấn dựa trên cột is_sparse sys.master_files xem danh mục. Xem thông tin chi tiết được cung cấp trong phần "Thông tin thu thập" cố vấn báo và kiểm tra trạng thái thưa ở cấp hệ điều hành cho các tệp bị ảnh hưởng. Sau khi bạn xoá trạng thái thưa hệ điều hành, bạn có thể áp dụng hotfix được thảo luận trong bài viết này để làm tươi siêu dữ liệu SQL Server và đồng bộ hoá với các cài đặt hệ điều hành.

SQL Server 2008

SQL Server 2008 R2

SQL Server 2012

Tham khảo


Để biết thêm thông tin về lệnh DBCC, hãy ghé thăm website sau của MSDN:Để biết thêm thông tin về lệnh Fsutil , ghé thăm website sau của MSDN:Để 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 tệp lớn trong hệ thống tệp NTFS khi tất cả các dòng dữ liệu có thưa thuộc tính bị xoá trong phiên bản 64-bit của Windows XP SP2 hoặc Windows Server 2003 SP2
932021 thông báo lỗi khi bạn chạy lệnh "chkdsk" cùng với các "/ v" chuyển đổi trên máy tính chạy Windows Server 2003: "Correcting thưa tệp dữ liệu phân đoạn < số >"