Que faut-il faire pour activer la mise en pool dans une application Delphi 7? Ma chaîne de connexion est:Comment activer le pool de ressources OLEDB dans une application Delphi 7
Fournisseur = SQLOLEDB.1; Initial Catalog =% s; Data Source =% s; mot de passe =% s; ID utilisateur =% s; OLE DB Services = -1
je peux Indique que le regroupement de connexions n'est pas réalisé en consultant le compteur de performances SQLServer: GeneralStatistics UserConnections - il fluctue de manière très aléatoire lorsque mon application s'exécute. Avec la mise en commun des connexions, je m'attendrais à ce qu'il atteigne un état stable. En outre, je vois que les compteurs Logins/s et Logouts/s sont tous les deux très élevés - si le regroupement de connexions était utilisé, les Logouts/s seraient à zéro ou près de zéro.
Dans la recherche, je trouve cet article sur la mise en commun des ressources:
http://www.ddj.com/database/184416942
Il suggère que « Si vous travaillez au niveau SDK OLEDB (ou COM) en utilisant ATL, vous devez écrire un peu plus de code "(en plus d'ajouter OLE Db Services = -1 à la chaîne de connexion) pour obtenir le regroupement de connexions:
CDataSource db; CDBPropSet dbinit (DBPROPSET_DBINIT);
dbinit.AddProperty (DBPROP_AUTH_USERID, "MyName); dbinit.AddProperty (DBPROP_INIT_DATASOURCE," MyServer); dbinit.AddProperty (DBPROP_INIT_CATALOG, « MyDb); dbinit.AddProperty (DBPROP_INIT_PROMPT, (court) 4); dbinit.AddProperty (DBPROP_INIT_LCID, (long) 1033); dbinit.AddProperty (DBPROP_INIT_OLEDBSERVICES, (long) DBPROPVAL_OS_ENABLEALL); HRESULT hr = db.OpenWithServiceComponents (_T ("sqloledb"), & dbinit);
Malheureusement, ce code est grec pour moi et je ne suis pas sûr de savoir comment traduire cela à Delphi (ou si son même nécessaire).
Je suis aussi attention à ne pas changer la chaîne de connexion du tout. toutes les suggestions sur ce que je pourrais avoir besoin de faire pour permettre la mise en commun des ressources?
Mais la fonction de regroupement de connexions n'est-elle pas de laisser le code ouvrir et fermer les connexions souvent sans fermer la connexion au serveur? Si je cours le même code dans IIS je le vois créer 2 connexions au serveur Db qui durent la vie de l'application. –
Il s'agit davantage d'une réutilisation de connexions actives récentes existantes. Dites que le compte va à zéro ... combien de temps pensez-vous que le pool devrait garder la connexion ouverte à la base de données? À zéro, je crois qu'il commence à nettoyer et finit par mettre fin à toutes les connexions. Je n'ai pas testé le délai exact. –
Merci Darian, cela expliquerait aussi pourquoi IIS maintient quelques connexions ouvertes. Je marquerai ceci comme réponse et éditerai si le test prouve le contraire. –