Triệu chứng
Giả định rằng bạn sử dụng chế độ lưu trữ quan hệ OLAP (ROLAP) cho một nhóm đo lường trong một phiên bản của SQL Server 2014 hoặc 2016 Analysis Services. Sau khi bạn thiết lập giá trị của thuộc tính Maxrolaporđiều kiện nâng cao cho hơn 256, bạn thực thi các truy vấn MDX trên nhóm đo đó. Trong trường hợp này, bạn nhận được các lỗi giống như sau:
#Error phân tích cú pháp không thể tải và phân tích dòng. URL: ' ' lý do: ' thao tác đã bỏ dở: vi phạm hạn chế tối đa thành phần. Nguồn: ' '. Vị trí tệp: 0. Đường kẻ: 6.
Nguyên nhân
Dịch vụ phân tích tạo ra một tài liệu pseudo-SQL XML, khi đó sẽ được chuyển qua một trang tính XML kiểu XML để tạo câu lệnh SQL cuối cùng được gửi đến nguồn quan hệ. Khi tạo tài liệu XML nội bộ ban đầu, hoặc các điều kiện cho cột sẽ được tạo như là các thành phần XML lồng nhau như trong ví dụ sau:
<OR> <Condition>column1 = value1</Condition> <OR> <Condition>column1 = value2</Condition> <OR> <Condition>column1 = value3</Condition> </OR> </OR></OR>
Thuộc tính Maxelementsâu mặc định cho đối tượng DOM MSXML được dùng bởi các dịch vụ phân tích để xây dựng tài liệu XML là 256 trong MSXML 6.0. do đó, khi cấu hình Maxrolaporconditions được tăng lên, tài liệu XML được tạo có thể vượt quá độ sâu tối đa này.
Giải pháp
Sự cố này đã được khắc phục trong bản Cập Nhật tích lũy sau đây cho SQL Server:
Bản Cập Nhật tích lũy 5 cho SQL Server 2016 RTM
Bản Cập Nhật tích lũy 2 cho SQL Server 2016 SP1
Bản Cập Nhật tích lũy 4 cho SQL Server 2014 SP2
Bản Cập Nhật tích lũy 10 cho SQL Server 2014 SP1
Giới thiệu về 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 cho SQL Server chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật đã được đưa vào bản Cập Nhật tích lũy trước đó. Kiểm tra các bản Cập Nhật tích lũy mới nhất cho SQL Server:
Trạng thái
Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
Thông tin Bổ sung
Sửa lỗi này thay đổi cách tạo tài liệu XML trung gian, sao cho mỗi trạng thái bổ sung hoặc không được lồng vào trong phần trước hoặc XML. Do đó, bạn có thể tăng các điều kiện Maxrolaporđiều kiện vượt quá 256. Tuy nhiên, vẫn có các giới hạn thực tế với số lượng hoặc điều kiện có thể được sử dụng. Khi số hoặc điều kiện tăng, độ phức tạp của câu lệnh SQL được tạo ra có thể vượt quá khả năng của máy chủ cơ sở dữ liệu quan hệ, gây ra các điều kiện lỗi mới. Sau đây là ví dụ về các điều kiện có thể gây ra lỗi mới:
-
Vượt quá số lượng tham số tối đa trong một câu lệnh
-
Vượt quá số điều kiện tối đa trong mệnh đề where
-
Lỗi trong phân tích chuỗi truy vấn SQL
-
Vượt quá kích cỡ tối đa của chuỗi truy vấn SQL
Do đó, chúng tôi khuyên bạn nên thực hiện bất kỳ điều chỉnh nào với giá trị cấu hình Maxrolaporconditions .
Tham khảo
Tìm hiểu về thuật ngữ Microsoft sử dụng để mô tả các bản cập nhật phần mềm.