Nous utilisons l'authentification SQL (pour réduire le nombre de pools de connexions) et les chaînes de connexion .NET 4.0 pour se connecter à SQL Server Enterprise Edition 2012 SP1 sur un serveur d'entreprise Windows 2008 R2:
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
19 octobre 2012 13:38:57
Copyright (c) Microsoft Corporation
Enterprise Edition (64 bits) sur Windows NT 6.1 (Build 7601: Service Pack 1)
Nous utilisons environ 50 serveurs répartis en 8 groupes différents, différentes parties d'un site Web.
Notre site Web utilise ce serveur SQL pour enregistrer les données de suivi des visites. Au cours des derniers jours, il a craché les messages suivants concernant la réinitialisation des pools de connexions:
Le client n'a pas pu réutiliser une session avec SPID 1327, qui avait été réinitialisé pour le regroupement de connexions. L'ID d'échec est 46. Cette erreur peut être due à l'échec d'une opération antérieure. Vérifiez les journaux d'erreurs pour les opérations ayant échoué immédiatement avant ce message d'erreur.
Le journal des erreurs indique:
Erreur: 18056, gravité: 20, état: 46.
Le client n'a pas pu réutiliser une session avec SPID 959, qui avait été réinitialisée pour le regroupement de connexions. L'ID d'échec est 46. Cette erreur peut être due à l'échec d'une opération antérieure. Vérifiez les journaux d'erreurs pour les opérations ayant échoué immédiatement avant ce message d'erreur.
La connexion a échoué pour l'utilisateur «xxxx». Motif: Échec de l'ouverture de la base de données 'xxxxxxxx' configurée dans l'objet de connexion lors de la revalidation de la connexion sur la connexion. [CLIENT: 10.xx.xx.xxx]
Après quelques recherches, j'ai trouvé ce document sur le blog CSS: Comment ça marche: Erreur 18056 - Le client n'a pas pu réutiliser une session avec SPID ##, qui avait été réinitialisée pour le regroupement de connexions et celle-ci par Aaron Bertrand: Dépannage de l'erreur 18456 . Je sais que le numéro d'erreur est différent mais l'ID d'échec est le même avec un certain nombre de messages identiques).
L'ID d'échec 46 suggère que la connexion ne disposait pas d'autorisations. Nos connexions par défaut à la base de données master et le nom de la base de données est spécifié dans la chaîne de connexion.
Je voulais vérifier le nombre de pools de chaînes de connexion, etc. et vérifié tous les compteurs de Perfmon .Net Data Provider for SqlServer
. Cela ne m'a donné que l'option defaultdomain9675
pour l'instance, j'ai donc choisi cela en supposant qu'il s'agit d'un nom d'identification généré par le système pour notre réseau Datacentre. Malheureusement, tous les compteurs lisent zéro. Sur l'un de nos autres serveurs principaux, les pools de connexions tournent autour de 10, ce que je m'attendais à voir sur un serveur sain avec ce type de charge.
Ma question est triple
Quelqu'un peut-il suggérer pourquoi le serveur Windows 2008 R2 n'est pas affiché
.Net Data Provider for SqlServer
?Quelqu'un a-t-il vécu cela, car je pense que la connexion sans autorisations est un hareng rouge?
Si différents groupes de serveurs Web ont la même syntaxe de chaîne de connexion mais avec des espaces blancs légèrement différents, cela pourrait-il amener le serveur à utiliser un autre pool de connexions?
Les paramètres de mémoire minimum et maximum sont respectivement de 20 Go et 58 Go. Le serveur est un serveur de base de données dédié avec 64 Go de RAM. Je ne pense pas que la mémoire soit le problème car la boîte semble avoir une espérance décente de page lfe. La fermeture automatique n'est pas activée. Le serveur est toujours opérationnel: il s'agit d'un site Internet 24h / 24, 7j / 7 avec une utilisation intensive.