Microsoft phân phối các bản sửa lỗi Microsoft SQL Server 2008 R2 là một tệp được tải xuống. Vì bản sửa lỗi được tích lũy, mỗi bản phát hành mới 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 phát hành khắc phục SQL Server 2008 trước đó.

Triệu chứng

Hãy xem xét tình huống sau:

  • Một ứng dụng chạy một truy vấn tham chiếu một số bảng tạm thời trong Microsoft SQL Server 2008 và trong Microsoft SQL Server 2008 R2. Các bảng tạm thời được tạo trong một phiên thay vì trong thủ tục được lưu trữ.

  • Gói truy vấn được lưu trữ.

  • Nhiều người dùng chạy cùng một truy vấn trong một môi trường có đồng thời cao. Ví dụ, nhiều người dùng sử dụng một ứng dụng chạy truy vấn sau đây:

    create table #x (col1 int) go insert into #x values (1) go select * from #x where col1 = 1 go

Trong trường hợp này, ứng dụng gặp sự cố về hiệu suất.Lưu ý Để biết thêm thông tin về cách xác định vấn đề này, hãy xem mục "thông tin thêm".

Nguyên nhân

Sự cố này xảy ra vì cùng một gói truy vấn được chèn vào bộ đệm ẩn trong cùng một xô băm cho mỗi người dùng khi văn bản truy vấn giống nhau. Khi một số lượng lớn các kế hoạch được băm thành cùng một thùng (còn được gọi là chuỗi băm), thời gian tìm kiếm kế hoạch trong bộ đệm ẩn sẽ tăng đáng kể và các vấn đề về hiệu năng có thể xảy ra. Ngoài ra, chủ đề công nhân có thể gặp phải đối đầu spinlock nghiêm trọng và các chủ đề khác bị ảnh hưởng khi các chủ đề công nhân này không thực hiện đúng sản lượng trình lập lịch biểu.

Giải pháp

Lưu ý Chỉ có bản Cập Nhật cho SQL Server 2008 R2 hiện sẵn dùng. Đối với SQL Server 2008, hãy xem mục "giải pháp thay thế" để làm việc xung quanh vấn đề này.

Thông tin Cập Nhật tích lũy

Gói dịch vụ SQL Server 2008 R2 1

Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong Cumulative Update 1 cho SQL Server 2008 R2 Service Pack 1. Để biết thêm thông tin về cách tải gói Cập Nhật tích lũy này, hãy bấm số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:

2544793 Gói Cập Nhật tích lũy 1 cho SQL Server 2008 R2 gói dịch vụ 1Lưu ý Vì bản dựng được tích lũy, mỗi bản phát hành khắc phục sự cố mới 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 phát hành khắc phục SQL Server 2008 trước đó. Chúng tôi khuyên bạn nên cân nhắc việc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:

2567616 Bản dựng SQL Server 2008 R2 đã được phát hành sau khi SQL Server 2008 R2 Service Pack 1 đã được phát hành

SQL Server 2008 R2

Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong bản Cập Nhật tích lũy 7. Để biết thêm thông tin về cách tải gói Cập Nhật tích lũy cho SQL Server 2008 R2, hãy bấm số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:

2507770 Gói Cập Nhật tích lũy 7 cho SQL Server 2008 R2 Lưu ý Vì bản dựng được tích lũy, mỗi bản phát hành khắc phục sự cố mới 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 phát hành khắc phục SQL Server 2008 trước đó. Chúng tôi khuyên bạn nên cân nhắc việc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:

981356 Bản dựng SQL Server 2008 R2 đã được phát hành sau khi SQL Server 2008 R2 được phát hành

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".

Cách giải quyết

Để giải quyết vấn đề này trong SQL Server 2008 và trong SQL Server 2008 R2, hãy di chuyển bất kỳ tham chiếu nào của các bảng tạm thời sang bên trong thủ tục được lưu trữ.

Thông tin Bổ sung

Để biết thêm thông tin về cách tạo và sửa đổi cơ bản về bảng, hãy truy cập trang web MSDN sau đây:

Cách tạo và sửa đổi thông tin cơ bản về bảngGanh đua spinlock có thể được nhận dạng từ dạng xem quản lý sys.dm_os_spinlock_stats động (DMV) có tỷ suất ganh đua cao trên SOS_CACHESTORE spinlock. Để xác định vấn đề này, hãy chạy một truy vấn tương tự như sau:

select cp.bucketid, count(cp.bucketid) as BucketCount, st.text from sys.dm_exec_cached_plans cp cross apply sys.dm_exec_sql_text(cp.plan_handle) as st group by cp.bucketid, st.text having count(cp.bucketid) >1 order by BucketCount descNếu các điều kiện sau đây là đúng khi bạn chạy truy vấn này, bạn có thể gặp phải các vấn đề về hiệu suất:

  • Truy vấn này tạo ra cùng một văn bản truy vấn.

  • Số đếm cho cùng một hàm bucketid lớn.Lưu ý Số lượng lớn cho cùng một bucketid thường qua 1000.

  • Bảng tạm thời tham chiếu truy vấn

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!

×