Trong Microsoft SQL Server 2008, cú pháp tạo ra lỗi Các tính năng Kho dữ liệu song song (PDW) không được bật.


8

Tôi có cột ảo sau được tạo từ tổng hợp trên một phân vùng được sắp xếp,

MIN(picture_id) OVER ( PARTITION BY [360_set] ORDER BY picture_id ASC )

Tuy nhiên, khi tôi thực hiện điều đó, tôi nhận được như sau.

Msg 11305, Level 15, State 10, Line 12
The Parallel Data Warehouse (PDW) features are not enabled.

Đây là nơi nó trở nên thú vị, mặc dù không có thứ tự sắp xếp trên phân vùng, nó hoạt động:

MIN(picture_id) OVER ( PARTITION BY [360_set] )

Và, hơn nữa, ROW_NUMBER()một hàm cửa sổ (không phải là hàm tổng hợp) hoạt động với một thứ tự rõ ràng trên phân vùng.

ROW_NUMBER() OVER ( PARTITION BY [360_set] ORDER BY picture_id ASC )

Làm thế nào mà tuyên bố mong muốn không hoạt động? Tài liệu này ở đâu? Thông tin phiên bản đã được yêu cầu, đây là thông tin tôi trợ giúp → Giới thiệu.

Microsoft SQL Server Management Studio          10.0.5512.0
Microsoft Analysis Services Client Tools        10.0.5500.0
Microsoft Data Access Components (MDAC)         6.1.7601.17514
Microsoft MSXML                                 3.0 6.0 
Microsoft Internet Explorer                     9.10.9200.16635
Microsoft .NET Framework                        2.0.50727.5472
Operating System                                6.1.7601

Kết quả từ SELECT @@VERSIONMicrosoft SQL Server 2008 (SP3) - 10.0.5512.0 (X64) Aug 22 2012 19:25:47 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)


Phiên bản chính xác là gì? Có vẻ như một lỗi. Tôi nhận được một lỗi cú pháp bình thường cho ví dụ đầu tiên vào ngày 10.50.1600. Mặc dù vậy, bên cạnh đó, tôi không thấy vấn đề - bạn đang cố gắng làm gì với cú pháp này?
Jon Seigel

Vì vậy, bạn thực sự quan tâm đến việc phân vùng xếp hạng theo [360_set], hoặc là phần đó không liên quan? Ngoài ra, từ nhận xét của bạn, công thức bạn đưa ra chỉ hoạt động như mô tả văn bản nếu không có khoảng trống trong chuỗi. Bạn muốn cái nào
Jon Seigel

2
Thứ tự theo mệnh đề cho các tổng hợp đã không được triển khai cho đến SQL Server 2012. Không chắc phần mở rộng PDW là gì.
Martin Smith

2
@JonSeigel Nó đặt thứ tự các hàng cho khung cửa sổ. Nó không ảnh hưởng đến cách MINhoạt động của khóa học, nhưng nó thay đổi các hàng trong khung MINđược thực hiện.
Paul White 9

1
@JonSeigel - Mặc định nếu không được chỉ định là RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW. Vì vậy, cửa sổ chỉ bao gồm các giá trị có picture_idgiá trị nhỏ hơn hoặc bằng giá trị trong hàng hiện tại.
Martin Smith

Câu trả lời:


16

Các tính năng Kho dữ liệu song song (PDW) không được bật.

Đây là lỗi trình phân tích cú pháp chỉ tồn tại trong SQL Server 2008. Các phiên bản không phải PDW của SQL Server trước năm 2012 không hỗ trợ ORDER BYmệnh đề với các hàm tổng hợp như MIN:

Sách trích xuất trực tuyến

Hỗ trợ chức năng cửa sổ đã được mở rộng đáng kể vào năm 2012, so với triển khai cơ bản có sẵn bắt đầu với SQL Server 2005. Các tiện ích mở rộng đã có sẵn trong Kho dữ liệu song song trước khi được tích hợp vào sản phẩm hộp. Bởi vì các phiên bản khác nhau có chung một cơ sở mã chung, các thông báo lỗi sai lệch như thế này là có thể.

Nếu bạn quan tâm, ngăn xếp cuộc gọi khi tổng hợp được xác minh bởi trình phân tích cú pháp được hiển thị bên dưới. Bởi vì tổng hợp có một OVERmệnh đề với ORDER BY, một kiểm tra cho PDW được ban hành:

Xác minh tổng hợp

Kiểm tra này ngay lập tức không thành công với lỗi trình phân tích cú pháp:

Lỗi phân tích cú pháp

May mắn thay, bạn không cần một tổng hợp có cửa sổ hỗ trợ ORDER BYđóng khung để giải quyết vấn đề mã của bạn.


2

Đây sẽ là kết quả của việc hợp nhất các cơ sở mã của PDW, Azure và phiên bản hộp. Chúng ta sẽ bắt đầu thấy những thông báo như thế này hoặc rằng bạn không có trên máy Azure khi cố gắng thực hiện những thứ chỉ được phát hành trong Azure.

Đối với câu hỏi của Martin về các phần mở rộng PDW là gì, đây sẽ là các tính năng của ngôn ngữ T-SQL chỉ được triển khai trong sản phẩm Kho dữ liệu song song (PDW).


Chúng có thể được kích hoạt thông qua một hack? Hoặc, họ không được vận chuyển với sản phẩm? Tôi chỉ tự hỏi nếu họ nghiêm túc kéo tính năng thô sơ đó? Nó không phức tạp cho việc sử dụng DB.
Evan Carroll

3
@EvanCarroll Không, ORDER BYvới các tổng hợp có cửa sổ không thể được bật trong SQL Server 2008. Tính năng này không được 'kéo', nó không được phát hành cho SQL Server không PDW cho đến khi phát hành năm 2012.
Paul White 9

1

Trả lời đây là một yếu tố của thông báo lỗi. Như @MartinSmith đã nói ở trên,

Thứ tự theo mệnh đề cho các tổng hợp đã không được triển khai cho đến SQL Server 2012. Không chắc phần mở rộng PDW là gì. - Martin Smith

Điều này được đề cập chính thức tại đây SQL Server 2008 R2 - Điều khoản QUÁ (Transact-SQL)

Khi được sử dụng trong ngữ cảnh của hàm cửa sổ xếp hạng, chỉ có thể tham khảo các cột được tạo bởi mệnh đề TỪ. Một số nguyên không thể được chỉ định để thể hiện vị trí của tên hoặc bí danh của một cột trong danh sách chọn. không thể được sử dụng với các chức năng cửa sổ tổng hợp.

Điều quan trọng hơn nữa là phiên bản trong SQL Server 2012 - Điều khoản QUÁ (Transact-SQL)

Tùy thuộc vào chức năng xếp hạng, tổng hợp hoặc phân tích được sử dụng với mệnh đề QUÁ và / hoặc có thể không được hỗ trợ.

Vì vậy, có vẻ như nó chắc chắn không có sẵn trong năm 2008 - mặc dù thông báo lỗi đó là một cách nói thực sự mơ hồ "không được thực hiện" , và vào năm 2012, có vẻ như lập trường chính thức của Microsoft là số dặm của bạn có thể thay đổi .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.