2010-06-21 47 views
9

Tôi đang cố gắng xác định xem tôi có bị rò rỉ kết nối cơ sở dữ liệu hay không. Vì vậy, tôi cần xem số lượng kết nối mở. Tôi có một số mã kiểm tra đơn giản mà tạo ra một sự rò rỉ:Làm cách nào để đo lường số lượng kết nối cơ sở dữ liệu mở

protected void Page_Load(object sender, EventArgs e) 
{ 
    for(int i = 0; i < 100; i++) 
    { 
    SqlConnection sql = new SqlConnection(@"Data Source=.\SQLExpress;UID=sa;PWD=fjg^%kls;Initial Catalog=ABC"); 
    sql.Open(); 
    } 

} 

Lưu ý không có .Close và điều này làm Infact sụp đổ sau khi được chạy 3 lần liên tiếp nhanh chóng.

Để đo rò rỉ Tôi đang chạy màn hình Hiệu suất và đo SQLServer: Các thống kê chung Connections/User:

alt text http://www.yart.com.au/stackoverflow/counter.png

Tuy nhiên, những dường như là zero khi tôi chạy mã của tôi:

alt text http://www.yart.com.au/stackoverflow/counter1.jpg

Tôi nên thay đổi điều gì để thực sự thấy kết nối?

ĐÁP

tôi đã chấp thuận một câu trả lời dưới đây. Mặc dù nó không sử dụng các công cụ hiệu suất, nó đủ tốt để tôi sử dụng. Điểm mấu chốt là tôi muốn xem có bao nhiêu kết nối vẫn mở sau khi mở một trang web và điều này đã làm các trick.

+0

"ASP.NET SQL" có nghĩa là gì? Nếu nó chỉ là hai thẻ, thì hãy để chúng ra khỏi tiêu đề. –

Trả lời

5

Bạn có thể thử chạy một truy vấn đối với các bậc thầy db như thế này:

SELECT SPID, 
     STATUS, 
     PROGRAM_NAME, 
     LOGINAME=RTRIM(LOGINAME), 
     HOSTNAME, 
     CMD 
FROM MASTER.DBO.SYSPROCESSES 
WHERE DB_NAME(DBID) = 'TEST' AND DBID != 0 

Xem this link để biết thêm chi tiết.

2

Bạn đã thử chạy sp_who proc được lưu trữ chưa? Nếu có các kết nối mở cũ, chúng sẽ hiển thị ở đó.

Để hiển thị chỉ là sa người dùng các tiến trình chạy:

EXEC sp_who 'sa' 
+0

Điều đó có nghĩa là tôi không thể thấy các kết nối trong biểu đồ Hiệu suất? – Petras

Các vấn đề liên quan