Tôi gặp phải một vấn đề lớn ở đây, cũng tại máy chủ của tôi.Hơn 100 kết nối với máy chủ sql 2008 trong trạng thái "ngủ"
Tôi có trang web ASP .net (khung 4.x) chạy trên máy chủ của tôi, tất cả các giao dịch/chọn/cập nhật/chèn được thực hiện bằng ADO.NET.
Vấn đề là sau khi sử dụng một lúc (một vài lần cập nhật/chọn/chèn) đôi khi tôi nhận được hơn 100 kết nối trên trạng thái "ngủ" khi kiểm tra kết nối trên máy chủ sql với truy vấn này:
SELECT
spid,
a.status,
hostname,
program_name,
cmd,
cpu,
physical_io,
blocked,
b.name,
loginame
FROM
master.dbo.sysprocesses a INNER JOIN
master.dbo.sysdatabases b ON
a.dbid = b.dbid where program_name like '%TMS%'
ORDER BY spid
Tôi đã kiểm tra mã và đóng mỗi lần tạo kết nối, tôi sẽ thử nghiệm lớp mới, nhưng tôi e rằng vấn đề không được khắc phục.
Giả sử rằng kết nối tổng hợp, giữ kết nối để sử dụng lại chúng, nhưng cho đến khi tôi thấy không sử dụng lại chúng luôn.
Bất kỳ ý tưởng nào ngoài kiểm tra để đóng tất cả các kết nối mở sau khi sử dụng chúng?
SOLVED (bây giờ tôi chỉ có một và kết nối tuyệt đẹp trên "ngủ" trạng thái):
Bên cạnh những anwser của David Stratton, tôi muốn chia sẻ liên kết này giúp giải thích thực sự tốt như thế nào hồ bơi kết nối hoạt động: http://dinesql.blogspot.com/2010/07/sql-server-sleeping-status-and.html
Chỉ cần được ngắn, bạn cần phải đóng tất cả các kết nối (đối tượng kết nối sql) theo thứ tự mà các hồ bơi kết nối có thể tái sử dụng các kết nối và sử dụng chuỗi connectinos cùng, để đảm bảo điều này rất được khuyến khích sử dụng một trong các webConfig.
Hãy cẩn thận với dataReaders bạn nên đóng kết nối của nó để (đó là những gì làm cho tôi điên trong khi).
Bạn có thể nhận được câu trả lời tốt hơn và tốt hơn tại [dba.stackexchange.com] (http://dba.stackexchange.com), nơi toàn thời gian của DBA hang out –