Khắc phục: Một phần kết quả truy vấn chỉ columnstore nhóm SQL Server 2014

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 3067257
Bài viết này thảo luận sự cố xảy ra trong quá trình truy vấn chỉ nhóm columnstore trong Microsoft SQL Server 2014. Bài viết này cung cấp giải pháp sự cố này.
Tóm tắt
Khi bạn sử dụng truy vấn quét chỉ nhóm columnstore trong Microsoft SQL Server 2014, bạn có thể điều kiện hiếm, nhận được kết quả truy vấn một phần.

Sự cố này xảy ra khi các hoạt động đang chạy.
Bước 1
Câu lệnh Transact-SQL [chèn hoặc số lượng lớn chèn] chèn dữ liệu vào bảng có nhóm columnstore mục chỉ dẫn. Trong quá trình thao tác này, các điều kiện áp dụng:
  • Khi lệnh Transact-SQL đạt đến ngưỡng rowgroup, nó đóng rowgroup R1 có đoạn S1.
  • Phân đoạn S1 trỏ tới địa phương từ điển D1.
  • Lệnh tiếp tục đưa hàng để mới rowgroup R2.
  • Khi đóng rowgroup R1, địa phương từ điển D1 không cũng phải đóng. Nếu từ điển D1 vẫn còn có không gian có sẵn, bạn có thể để mở và tái sử dụng nó để rowgroup mới R2.
Bước 2
Nếu lệnh Transact-SQL kết thúc bất thường hoặc hủy bỏ trước khi nó đóng mới rowgroup R2, các điều kiện áp dụng:
  • Columnstore siêu dữ liệu thay đổi xảy ra trong subtransactions cam độc lập với giao dịch bên ngoài.
  • Tại thời điểm này, rowgroup R1 vẫn tồn tại trong bảng hệ thống "xây dựng" hoặc trạm đậu ẩn, và đoạn S1 tham chiếu từ điển D1.
  • Không có hàng tạo ra trong bảng hệ thống từ điển D1. Điều này là do lệnh Transact-SQL không bao giờ có thể đóng hàng sẵn có. Vì vậy, dòng hiện tại vẫn tồn tại.
Bước 3
Trong trường hợp thông thường, nếu việc nền mover tuple khởi động sau khi kết thúc lệnh Transact-SQL, tác vụ nền loại bỏ ẩn rowgroup R1 và đoạn S1. Nếu lệnh Transact-SQL mới được Bắt đầu ngay bây giờ và tạo rowgroup R3 có một phân đoạn mới S3 yêu cầu từ điển địa phương mới, bạn không thể sử dụng lại ID từ điển D1, nội bộ. Điều này là do trạm đậu trong bộ nhớ của columnstore theo dõi các từ điển ID được sử dụng. Do đó, phân đoạn S3 sẽ tham chiếu mới từ điển D2.

Lưu ý: Điều kiện trong bước này là một tình trạng phổ biến. Do đó, không có lỗi xảy ra.
Bước 4
Nếu máy chủ SQL mất trạm đậu trong bộ nhớ của từ điển D1 trước việc triển khai nhanh tuple có hiệu lực (và hoạt động như được mô tả trong bước 3), sự cố được mô tả trong bài viết này xảy ra.

Lưu ý:
  • Sự kiện này xảy ra vì những lý do sau:
    • SQL Server kinh nghiệm quá tải bộ nhớ và nội dung trong bộ nhớ của từ điển D1 bị gỡ bỏ khỏi bộ nhớ.
    • Phiên bản SQL Server khởi động lại.
    • bộ máy cơ sở dữ liệu chứa mục nhóm columnstore đi ngoại tuyến và sau đó trở lại trực tuyến.
  • Sau khi một trong những sự kiện xảy ra và SQL Server tải lại các cấu trúc trong bộ nhớ, không có từ điển D1 và nội bộ của ID đã tồn tại. Điều này là do từ điển D1 không được giữ lại trong bảng hệ thống khi kết thúc lệnh Transact-SQL hoặc conceled.
  • Nếu việc nền mover tuple khởi động tại thời điểm này, không có lỗi xảy ra do áp dụng các điều kiện được mô tả trong bước 3.
  • Nếu rowgroup mới R3 được tạo trước khi Bắt đầu việc nền mover tuple (mỗi mục dấu kiểm đầu dòng trước đó), SQL Server đặt ID trong cùng một từ điển mới D1 và nó tham chiếu từ điển D1 đoạn S3 rowgroup R3.
  • Khi tác vụ nền mover tuple khởi động sau khi tác vụ trước đó, nó giảm ẩn rowgroup R1 và các phân đoạn S1 cùng với mới từ điển D1. Điều này xảy ra vì tuple mover xem xét đó từ điển mới D1 và từ điển gốc D1 S1 tham chiếu là giống nhau.

    Lưu ý: Khi điều kiện này xảy ra, bạn không thể truy vấn Nội dung của rowgroup R3.
Giải pháp
Số lần đầu tiên được khắc phục trong bản Cập Nhật tích luỹ sau cho SQL Server:


Việc khắc phục sự cố này cũng được bao gồm trong bản Cập Nhật phát hành (GDR) phân phối rộng rãi sau:

Cập Nhật bảo mật cho SQL Server 2014 QFE
Bản cập nhật này bao gồm 8 Cập Nhật tích luỹ, sửa chữa quan trọng và Cập Nhật bảo mật MS15 058 bắt buộc.

Cập Nhật bảo mật dành cho SQL Server 2014 GDR
Bản cập nhật này bao gồm sửa chữa quan trọng và bảo mật tích luỹ sửa chữa thông qua MS15 058.

Bản cập nhật cập cho SQL Server 2014 Service Pack 1 GDR
Bản cập nhật này bao gồm vá này quan trọng.

Giới thiệu về Cập Nhật tích luỹ cho SQL Server

Mỗi bản Cập Nhật tích luỹ mới cho SQL Server có chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật mà được đính kèm với bản Cập Nhật tích luỹ trước đó. Xem các bản Cập Nhật tích luỹ mới nhất cho SQL Server:
Thông tin thêm

Thông báo lỗi

Trong bộ máy cơ sở dữ liệu hiện bị ảnh hưởng, nếu bạn chạy DBCC CHECKDB sau khi bạn áp dụng sửa lỗi này, bạn nhận được thông báo lỗi sau:
Thông báo lỗi 5289, mức 16, trạm đậu 1, dòng 1
Nhóm columnstore chỉ 'cci' trên bàn 't' có một hoặc nhiều dữ liệu giá trị phù hợp với dữ liệu giá trị trong từ điển. Khôi phục dữ liệu từ đồng gửi lưu.

Trong bộ máy cơ sở dữ liệu hiện bị ảnh hưởng, khi bạn chạy một truy vấn quét bảng bị ảnh hưởng sau khi bạn áp dụng sửa lỗi này, bạn nhận được thông báo lỗi sau:
Thông báo lỗi 5288, mức 16, trạm đậu 1, dòng 1
Columnstore chỉ có một hoặc nhiều dữ liệu giá trị phù hợp với dữ liệu giá trị trong từ điển. Vui lòng chạy DBCC CHECKDB để biết thêm thông tin.

Nếu bạn nhận được lỗi này, bạn có thể lưu dữ liệu đắn bởi số lượng lớn xuất dữ liệu không bị ảnh hưởng cột/rowgroups và sau đó tải lại dữ liệu sau khi bạn thả hoặc tạo mục nhóm columnstore. Bạn phải kích hoạt cờ theo dõi 10207 ngăn chặn lỗi 5288 và quay trở lại chế độ cũ bỏ qua lỗi rowgroups.

Lưu ý Thông báo lỗi 5288 và 5289 được tạo cho này rowgroup R3 có đoạn S3. Cờ theo dõi 10207 được sử dụng để trích xuất các đoạn rowgroup R3 không bị ảnh hưởng bởi thiếu từ điển D1.

Truy vấn bộ máy cơ sở dữ liệu bị ảnh hưởng

Để xác định xem bộ máy cơ sở dữ liệu có chỉ số columnstore đã bị ảnh hưởng bởi sự cố này, hãy chạy truy vấn sau đây:
select         object_name(i.object_id) as table_name,        i.name as index_name,        p.partition_number,        count(distinct s.segment_id) as damaged_rowgroups from        sys.indexes i        join sys.partitions p on p.object_id = i.object_id and p.index_id = i.index_id        join sys.column_store_row_groups g on g.object_id = i.object_id and g.index_id = i.index_id and g.partition_number = p.partition_number        join sys.column_store_segments s on s.partition_id = p.partition_id and s.segment_id = g.row_group_id where         i.type in (5, 6)        and s.secondary_dictionary_id <> -1         and g.state_description = 'COMPRESSED'        and s.secondary_dictionary_id not in        (               select dictionary_id from sys.column_store_dictionaries d               where d.hobt_id = p.hobt_id and d.column_id = s.column_id        ) group by         object_name(i.object_id),        i.name,        p.partition_number 

Lưu ý:
  • Bạn phải chạy truy vấn này với mỗi bộ máy cơ sở dữ liệu chứa columnstore mục chỉ dẫn trên máy chủ đang chạy SQL Server. Một bộ trống kết quả cho thấy rằng bộ máy cơ sở dữ liệu không bị ảnh hưởng.
  • Thực hiện truy vấn này trong một thời gian khi không hoạt động sẽ tạo mới rowgroups hoặc thay đổi trạm đậu hiện tại rowgroups. Ví dụ: các hoạt động có thể thay đổi trạm đậu của rowgroups: chỉ số xây dựng tổ chức lại mục chỉ dẫn, số lượng lớn chèn, tuple mover nén lưu trữ lệch.

    Trước khi bạn thực hiện truy vấn, bạn có thể vô hiệu hoá việc triển khai nhanh tuple nền bằng cách sử dụng cờ theo dõi 634. Sử dụng lệnh này để vô hiệu hoá tác vụ nền: DBCC TRACEON (634, -1). Sau khi truy vấn kết thúc thực thi, nhớ để kích hoạt lại tác vụ nền bằng cách sử dụng lệnh: DBCC TRACEOFF (634, -1).

    Cũng chắc chắn rằng không có không có số lượng lớn chèn/BCP/chọn-vào lệnh chèn dữ liệu vào bảng columnstore chỉ sử dụng khi truy vấn này đang chạy.

    Chúng tôi khuyến khích sử dụng các bước sau để ngăn chặn truy vấn về dương tính giả.
Tình trạng
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".

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 3067257 - Xem lại Lần cuối: 07/26/2015 08:10:00 - Bản sửa đổi: 3.0

Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbsurveynew kbexpertiseadvanced kbfix kbmt KB3067257 KbMtvi
Phản hồi