Tôi có một ứng dụng sử dụng SqlConnection.ClearAllPools
để đóng tất cả các kết nối trước khi xóa cơ sở dữ liệu.SqlConnection.ClearAllPools, những gì được xóa?
Có trường hợp kết nối vẫn còn ở đó. Kết nối này đã được tạo trong miền ứng dụng khác.
Tôi tự hỏi kết nối nào bị đóng bởi SqlConnection.ClearAllPools
?
- Chỉ các kết nối được mở bởi quy trình gọi (hoặc AppDomain)?
- Tất cả các kết nối được mở bởi máy này?
- ...?
Cảm ơn. Tài liệu không rõ ràng về nó. Tôi biết có một hồ bơi cho mỗi cấu hình và mỗi ứng dụng. Nhưng ClearAllPools là số nhiều và nó xóa một số hồ bơi. Nhưng cái nào? Nó không thể dựa vào cấu hình, bởi vì nó là một phương thức tĩnh mà không có bất kỳ đối số nào. Nhưng liệu nó có phụ thuộc vào quy trình/miền ứng dụng không? –
@Stefan, có tài liệu không rõ ràng về phương pháp này. Trong thực tế, có thể có nhiều hồ bơi cho mỗi miền ứng dụng nếu nó sử dụng các chuỗi kết nối khác nhau. Khi bạn chuyển một chuỗi kết nối tới 'SqlConnection' bên trong miền ứng dụng, kết nối này sẽ được rút ra từ nhóm được kết hợp với nhóm kết nối này hoặc một nhóm mới sẽ được tạo nếu nó không tồn tại. Đó là lý do tại sao cũng có phương thức 'SqlConnection.ClearPool' cho phép bạn xóa hồ bơi liên quan đến một kết nối đã cho. Vì vậy, về cơ bản hồ bơi là cho mỗi chuỗi kết nối/mỗi miền ứng dụng. –
Chắc chắn, đó là phần tôi có thể tìm thấy trong tài liệu. Nhưng tôi không thể lấy được "phạm vi" của 'ClearAllPools' từ điều này. –