Đăng nhập với Microsoft
Đăng nhập hoặc tạo tài khoản.
Xin chào,
Chọn một tài khoản khác.
Bạn có nhiều tài khoản
Chọn tài khoản bạn muốn đăng nhập.

Triệu chứng

User-Defined Hàm (UDF) được triển khai trong Transact-SQL và trả về một giá trị dữ liệu duy nhất được gọi là Hàm User-Defined vô hướng T-SQL (UDFs). 

Microsoft SQL Server 2019 đã giới thiệu tính năng Phác thảo UDF Scalar có thể cải thiện hiệu suất của các truy vấn gọi UDF Scalar T-SQL, trong đó thực thi UDF là nút cổ chai chính. Tính năng Định hướng UDF Vô hướng T-SQL tự động chuyển đổi UDF nội tuyến thành các biểu thức quan hệ. 


Bản cập nhật tích lũy này bao gồm một số bản sửa lỗi trong các tình huống sau đây, trong đó một truy vấn sử dụng Scalar UDF Inlining có thể trả về lỗi hoặc kết quả không mong muốn:

  • Nhập lỗi không khớp nếu loại trả về của UDF là giá sql_variant (được thêm vào Microsoft SQL Server 2019 CU2)

  • Gọi UDF từ thực sp_executesql hủy bỏ (được thêm vào Microsoft SQL Server 2019 CU2)

  • UDFs tham chiếu đến nhãn không có lệnh GOTO liên kết sẽ trả về kết quả không chính xác (được thêm vào Microsoft SQL Server 2019 CU2)

  • Điều kiện hết bộ nhớ và rò bộ nhớ xảy ra do UDF vô hướng rất lớn (được thêm vào Microsoft SQL Server 2019 CU2)

  • Các biến không khởi tạo được sử dụng trong câu lệnh điều kiện (IF-ELSE) gây ra lỗi (được thêm vào Microsoft SQL Server 2019 CU2)

  • Lỗi chuyển đổi rõ ràng nếu UDF có SQL_VARIANT số mới (được thêm vào Microsoft SQL Server CU7 2019)

  • Lỗi được nâng lên khi tham chiếu hàm vô hướng CHECKSUM (được thêm vào Microsoft SQL Server CU7 2019)

  • Gọi UDF với số lượng biểu thức vô hướng cao đánh giá lại có thể dẫn đến lỗi bộ lập lịch không đạt lợi tức (được thêm vào Microsoft SQL Server CU7 2019)

  • Lỗi xuất hiện khi truy vấn tham chiếu UDF sử dụng OPTION (RECOMPILE) (được thêm vào Microsoft SQL Server CU7 2019)

  • Lỗi về quyền xuất hiện khi các dạng xem gọi UDFs được gạch dưới (được thêm vào Microsoft SQL Server 2019 CU9)

  • Vi phạm truy nhập xảy ra khi sử dụng tùy chọn XEvent query_tsql_scalar_udf_inlined (được thêm vào Microsoft SQL Server 2019 CU9) 

  • Hành vi không nhất quán do Scalar UDF Inlining not respecting the 'QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n' query hint (added in Microsoft SQL Server 2019 CU9)

  • Inlining UDFs contain aggregations that could result in non-yielding scheduler error (added in Microsoft SQL Server 2019 CU9) 

  • Lỗi hết bộ nhớ do một chuỗi các thao tác vô hướng trên cùng một biến trong các khối có điều kiện (được thêm vào Microsoft SQL Server 2019 CU9)

  • Vi phạm truy nhập có thể xảy ra khi một đối tượng gọi UDF vô hướng cùng dòng (UDF1) bằng vô hướng UDF nội tuyến (UDF2) được sử dụng làm tham số đầu vào sau khi nâng cấp lên CU9 (được thêm vào Microsoft SQL Server 2019 CU11)

  • Inlining UDFs could result in result in error with following error codes 6846, 1011 and 107 (added in Microsoft SQL Server 2019 CU11)

  • Inlining UDFs running as the non-sysadmin account could throw the error 'A severe error occurred on the current command.  Kết quả, nếu có, nên được loại bỏ' (được thêm vào Microsoft SQL Server 2019 CU16)

Bản cập nhật tích lũy này cũng chặn việc viết tay trong các trường hợp sau:

  • Nếu UDF tham chiếu các hàm nội tại nhất định (ví dụ: @@ROWCOUNT) có thể làm thay đổi kết quả khi được inlined (được thêm vào Microsoft SQL Server 2019 CU2)

  • Khi hàm tổng hợp được chuyển như tham số vào UDF vô hướng (được thêm vào Microsoft SQL Server CU2 2019)

  • Nếu UDF tham chiếu các dạng xem tích hợp sẵn (ví dụ: OBJECT_ID) (được thêm vào Microsoft SQL Server 2019 CU2)

  • Nếu UDF sử dụng các phương pháp XML (được thêm vào Microsoft SQL Server 2019 CU4)

  • Nếu UDF chứa SELECT với ORDER BY mà không có "TOP 1" (được thêm vào Microsoft SQL Server 2019 CU4)

  • Nếu truy vấn SELECT thực hiện một nhiệm vụ kết hợp với mệnh đề ORDER BY (ví dụ: SELECT @x = @x +1 FROM table ORDER BY column_name) (được thêm vào Microsoft SQL Server cu4 năm 2019)

  • Nếu UDF chứa nhiều câu lệnh RETURN (được thêm vào Microsoft SQL Server CU5 2019)

  • Nếu UDF được gọi từ một câu lệnh RETURN (được thêm vào Microsoft SQL Server CU5 2019)

  • Nếu UDF tham chiếu hàm STRING_AGG (được thêm vào trong Microsoft SQL Server 2019 CU5)

  • Nếu định nghĩa UDF tham chiếu bảng từ xa (được thêm vào Microsoft SQL Server CU6 2019)

  • Nếu truy vấn gọi UDF sử dụng GROUPING SETS, CUBE hoặc ROLLUP (được thêm vào Microsoft SQL Server 2019 CU6)

  • Nếu truy vấn gọi UDF có chứa biến được sử dụng làm tham số UDF để gán (ví dụ: SELECT @y=2, @x=UDF(@y)) (được thêm vào cua Microsoft SQL Server 2019 CU6)

  • Nếu UDF tham chiếu các cột được mã hóa (được thêm vào Microsoft SQL Server 2019 CU11)

  • Nếu UDF chứa tham chiếu đến 'WITH XMLNAMESPACES' (được thêm vào Microsoft SQL Server 2019 CU11)

  • Nếu truy vấn kích hoạt UDF có Biểu thức Bảng Phổ biến (CTEs) (được thêm vào Microsoft SQL Server 2019 CU11)


Sau khi nâng cấp lên CU2 Microsoft SQL Server 2019 nhưng trước khi nâng cấp lên CU5, bạn nên đánh giá lại xem UDF có đủ điều kiện để inlining hay không. Để thực hiện điều này, hãy làm mới UDF vô hướng đủ điều kiện thông qua một trong các phương pháp sau đây:

Tập lệnh sau tạo ra một tập lệnh để làm mới siêu dữ liệu cho UDF vô hướng được gạch dưới dạng hiện có:

/*

Generates a script that can be used to refresh all active inlineable scalar UDFs.

Note The sp_refreshsqlmodule command does not affect any permissions, extended properties, or SET options that are associated with the object.

*/

SELECT 'EXECUTE sys.sp_refreshsqlmodule ''[' + OBJECT_SCHEMA_NAME(object_id) + +'].' + '[' + OBJECT_NAME(object_id)

+ ']'';' AS 'RefreshStatement'

FROM sys.sql_modules

WHERE is_inlineable = 1

AND inline_type = 1;

GO

Chú ý Sau khi bạn nâng cấp Microsoft SQL Server CU5 2019, chúng tôi sẽ tự động phát sinh UDF inlineability trong quá trình biên dịch một lần nữa.

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 dành SQL Server:

Mỗi bản cập nhật tích lũy mới dành cho SQL Server sẽ chứa tất cả các bản cập nhật nóng và tất cả các bản sửa lỗi bảo mật được bao gồm 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 dành cho doanh 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".

Tham khảo

Tìm hiểu về thuật ngữ mà Microsoft sử dụng để mô tả các bản cập nhật phần mềm.

Bạn cần thêm trợ giúp?

Phát triển các kỹ năng của bạn
Khám phá nội dung đào tạo
Sở hữu tính năng mới đầu tiên
Tham gia Microsoft dùng nội bộ

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?
Điều gì ảnh hưởng đến trải nghiệm của bạn?

Cảm ơn phản hồi của bạn!

×