2010-01-26 16 views

Trả lời

6

Ngoài việc loại bỏ hồ bơi kết nối (như hầu hết các câu trả lời cho đến nay), bạn có nguy cơ bị khóa dữ liệu.

Nếu bạn đang đọc hoặc ghi vào bảng, một số ngữ nghĩa khóa sẽ khiến một số hàng nhất định bị khóa cho các kết nối khác. Điều này đặc biệt đúng nếu bạn có bất kỳ giao dịch mở nào trên kết nối.

Đọc và ghi sau đó có thể không thành công và ứng dụng sẽ ném ngoại lệ lên khắp nơi.

Tóm lại, luôn đóng kết nối.

+0

Ngay cả sau khi lệnh sql sử dụng kết nối được thực hiện với các hàng? –

+0

Nếu bạn có một giao dịch mở, sau đó có. – Oded

+2

Một cam kết là đủ để tránh vấn đề đó, mặc dù. –

9

Sớm hay muộn, bạn sẽ gặp phải lỗi "Đã đạt đến giới hạn kết nối tối đa". Tôi muốn gọi đó là một bất lợi lớn.

1

Nhóm kết nối sẽ lấp đầy và mọi kết nối mới sẽ hết thời gian chờ kết nối mới từ hồ bơi.

0

kết nối với máy chủ cơ sở dữ liệu đang mở. giả sử bạn có 100s của các chương trình đánh cùng một máy chủ ...

bạn cũng nên vứt bỏ nó

0

nhanh câu trả lời đơn giản là sớm hơn bạn đóng, càng sớm càng kết nối có thể được tái sử dụng bởi các hồ bơi kết nối.

+0

"sử dụng sử dụng tốt" là một câu thần chú nhỏ mà tôi tự nói khi tham gia vào sql. SqlConnection thực hiện iDisposable vì vậy chỉ cần quấn mã sql của bạn trong một khối "sử dụng" để đảm bảo đóng của bạn được gọi tự động. –

1

Mỗi và mọi kết nối với SQL Server đều yêu cầu cấp phát bộ nhớ.

Vì vậy, càng có nhiều kết nối bạn mở nhiều bộ nhớ hơn đang được sử dụng và được giữ, có thể có khả năng được sử dụng tốt hơn.

Nếu bạn muốn biết có bao nhiêu bộ nhớ được sử dụng bởi các kết nối trong SQL Server, hãy xem tham chiếu sau đây.

Memory Used by SQL Server Objects

+0

Cập nhật liên kết của bạn lên MSDN, nhưng tại ~ 300K cho mỗi kết nối, đây có lẽ là một trong những cân nhắc nhỏ hơn ... nó sẽ mất hàng nghìn hoặc hàng chục nghìn kết nối trước khi bắt đầu tự cảm nhận. –

+0

+1 cho liên kết, mặc dù –

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