2009-11-23 10 views
0

Une application ASP.NET 3.5 dispose de deux chaînes de connexion:Connection Pooling et connexion plusieurs chaînes

Data Source=RedDB;Initial Catalog=Red;User Id=myuser;Password=pas;Max Pool Size=50;Min Pool Size=1 

Data Source=BlueDB;Initial Catalog=Blue; User Id=myuser;Password=pas;Max Pool Size=375;Min Pool Size=2 

Supposons que la connexion RedDB a une procédure stockée qui est suspendu indéfiniment en raison d'un mauvais indice.

  1. Si l'application ne ferme pas la connexion RedDB correctement (à savoir., Avec un bloc try/finally), comment rapidement les connexions de piscine sont recyclés que les utilisateurs arrivent sur le site?

  2. Si le pool de connexions RedDB est atteint au maximum en raison de l'expiration du délai SQL, est-ce que cela a un impact sur BlueDB ou est-ce un pool de connexions complètement isolé?

+0

Vous avez probablement un délai d'attente raisonnable spécifié sur une connexion de sorte que si un sproc se bloque, la connexion peut être fermée et renvoyée à la piscine? –

Répondre

2

Si la connexion n'est pas correctement éliminée, vous êtes à la merci du GC. Et vous ne savez jamais quand cela va se déclencher (même si vous appelez GC.Collect(), il n'est pas garanti qu'un objet donné sera collecté).

Les pools de connexions sont basés sur des chaînes de connexion, de sorte que les 2 chaînes de connexions que vous avez créeront 2 pools complètement séparés.