Hotfix này cũng áp dụng cho Dịch vụ Phân tích Microsoft SQL Server 2014 (SSAS 2014).
Triệu chứng
Giả sử bạn có một số chiều trong khối Microsoft SQL Server 2012 Analysis Services (SSAS 2012) hoặc SQL Server 2014 Analysis Services (SSAS 2014) cube (Tfs_Analysis) chứa dữ liệu cho Microsoft Visual Studio Team Foundation Server (TFS). Khi bạn chạy lệnh Quy trình đối với các kích thước, quá trình xử lý có thể không thành công và bạn nhận được thông báo lỗi sau đây:
Lưu ý
Lỗi nội bộ: Đã xảy ra lỗi ngoài dự kiến (tệp 'pfiallocator.cpp', dòng 822, hàm 'PFMemoryHolder::RegisterMemoryHolder').
Nếu bạn sử dụng SQL Profiler để theo dõi sự cố, quy trình dõi vết cho thấy rằng thông báo lỗi sau xuất hiện trong khi thực hiện lệnh ProcessFull trên chiều vDimWorkItemTreeOverlay:
Lưu ý
Lỗi nội bộ: Đã xảy ra lỗi ngoài dự kiến (tệp 'pfiallocator.cpp', dòng 822, hàm 'PFMemoryHolder::RegisterMemoryHolder'). Lỗi trong công cụ lưu trữ OLAP: Đã xảy ra lỗi trong khi đang xử lý thuộc tính 'WorkItemTreeSK' của chiều 'Cây Mục Công việc' từ cơ sở dữ liệu 'Tfs_Analysis'.
Lưu ý Lỗi xử lý ảnh hưởng tới thiết kế cơ sở dữ liệu Analysis Services có nguồn dữ liệu sử dụng Nhà cung cấp Dữ liệu .NET Framework được quản lý cho SQL Server, mà chính là System.Data.SqlClient.
Nguyên nhân
Sự cố này xảy ra do giá trị khóa chiều trùng lặp trong nguồn dữ liệu được sử dụng bởi bộ phận xử lý Analysis Services.
Giải pháp
Sự cố này được khắc phục lần đầu tiên trong bản cập nhật tích lũy tiếp theo của SQL Server.
Cập nhật tích lũy 1 cho SQL Server 2014 /en-us/help/2931693
Cập nhật tích lũy 6 cho SQL Server 2012 SP1 /en-us/help/2874879
Giới thiệu về các bản 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 dành cho SQL Server chứa tất cả các bản sửa lỗi nóng và bản sửa lỗi bảo mật được tích hợp trong bản cập nhật tích lũy trước đó. Xem 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 2014
- Bản cập nhật tích lũy mới nhất cho SQL Server 2012 SP1
Xem thêm thông tin
Sau khi bạn áp dụng hotfix, quá trình xử lý sẽ hoạt động theo thiết đặt cấu hình lỗi xử lý thay vì theo các hiện tượng lỗi nội bộ.
Bạn có thể kiểm soát hành vi bằng cách sử dụng thiết đặt khóa Nhân đôi khi bạn xử lý kích thước SSAS. Hoặc bạn có thể kiểm soát hành vi bằng cách đặt cấu hình thuộc tính KeyDuplicate của thuộc tính ErrorConfiguration như sau khi bạn thiết kế kích thước:
- Khi thiết đặt KeyDuplicate được đặt về thiết đặt mặc định IgnoreError, sẽ không có cảnh báo nào khi gặp phải giá trị khóa trùng lặp và quá trình xử lý sẽ tiếp tục.
- Khi thiết đặt KeyDuplicate được đặt thành ReportAndContinue, lỗi hoặc cảnh báo được báo cáo. Tuy nhiên, quá trình xử lý vẫn tiếp tục.
- Khi thiết đặt KeyDuplicate được đặt thành ReportAndStop, các lỗi hoặc cảnh báo sẽ được báo cáo và quá trình xử lý sẽ bị dừng.
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".
Giải pháp thay thế
Để tránh sự cố này, hãy xóa khóa trùng lặp không hợp lệ trong bảng chiều kho dữ liệu trong Công cụ Cơ sở dữ liệu SQL Server. Bạn có thể sử dụng truy vấn sau đây để tìm khóa trùng lặp:SELECT COUNT(WorkItemTreeSK) WorkItemTreeSKCount, WorkItemTreeSK
FROM [Tfs_Warehouse].dbo.vDimWOrkItemTreeOverlay
GROUP BY WorkItemTreeSK
HAVING COUNT(WorkItemTreeSK) >1
Tham khảo
Để biết thêm thông tin về các tùy chọn và cài đặt xử lý, hãy truy cập trang web MSDN sau đây:
Thông tin về các tùy chọn và cài đặt xử lý Để biết thêm thông tin về cách xử lý nhà kho hoặc khối theo cách thủ công, hãy truy cập trang web MSDN sau đây:
Xử lý thủ công kho dữ liệu và khối Analysis Services cho Team Foundation Server