Stiamo utilizzando l'autenticazione SQL (per ridurre il numero di pool di connessioni) e le stringhe di connessione .NET 4.0 per connettersi a SQL Server Enterprise Edition 2012 SP1 su un Windows Enterprise Server 2008 R2:
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
19 ott 2012 13:38:57
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) su Windows NT 6.1 (Build 7601: Service Pack 1)
Utilizziamo circa 50 server suddivisi in 8 gruppi diversi in diverse parti di un sito Web.
Il nostro sito Web utilizza questo SQL Server per registrare i dati di tracciamento delle visite. Negli ultimi giorni ha eliminato i seguenti messaggi relativi al ripristino dei pool di connessioni:
Il client non è stato in grado di riutilizzare una sessione con SPID 1327, che era stato ripristinato per il pool di connessioni. L'ID errore è 46. Questo errore potrebbe essere stato causato da un'operazione precedente non riuscita. Controllare i log degli errori per le operazioni non riuscite immediatamente prima di questo messaggio di errore.
Letture registro errori:
Errore: 18056, gravità: 20, stato: 46.
Il client non è stato in grado di riutilizzare una sessione con SPID 959, che era stato ripristinato per il pool di connessioni. L'ID errore è 46. Questo errore potrebbe essere stato causato da un'operazione precedente non riuscita. Controllare i log degli errori per le operazioni non riuscite immediatamente prima di questo messaggio di errore.
Accesso non riuscito per l'utente 'xxxx'. Motivo: impossibile aprire il database 'xxxxxxxx' configurato nell'oggetto login durante la riconvalida dell'accesso sulla connessione. [CLIENTE: 10.xx.xx.xxx]
Dopo alcuni approfondimenti, ho trovato questo documento sul blog CSS: How It: Errore 18056 - Il client non è stato in grado di riutilizzare una sessione con SPID ##, che era stata reimpostata per il pool di connessioni e questa da Aaron Bertrand: Risoluzione dei problemi Errore 18456 . So che il numero di errore è diverso ma l'ID di errore è lo stesso con un numero di messaggi identici).
L'ID errore 46 suggerisce che l'accesso non disponeva delle autorizzazioni. I nostri accessi predefiniti al database principale e il nome db sono specificati nella stringa di connessione.
Volevo controllare il numero di pool di stringhe di connessione, ecc. E ho controllato tutti i contatori di Perfmon per .Net Data Provider for SqlServer
. Mi ha dato solo l'opzione defaultdomain9675
per l'istanza, quindi ho selezionato che supponendo che fosse un nome ID generato dal sistema per la nostra rete Datacenter. Sfortunatamente tutti i contatori stanno leggendo zero. Su uno dei nostri altri server principali i pool di connessione si aggirano intorno alle 10, che è quello che mi aspettavo di vedere su un server sano con quel tipo di carico.
La mia domanda è 3 volte
Qualcuno può suggerire perché il server Windows 2008 R2 non viene visualizzato
.Net Data Provider for SqlServer
?Qualcuno ha sperimentato questo dato che ovviamente credo che il login che non dispone delle autorizzazioni sia un'aringa rossa?
Se diversi gruppi di server Web hanno la stessa sintassi della stringa di connessione ma con spazi bianchi leggermente diversi, ciò indurrebbe il server a utilizzare un altro pool di connessioni?
Le impostazioni di memoria minima e massima sono rispettivamente 20 GB e 58 GB. Il server è un server di database dedicato con 64 GB di RAM. Non penso che la memoria sia il problema in quanto la scatola sembra avere una buona aspettativa di vita della pagina. La chiusura automatica non è abilitata. Il server è sempre attivo: questo è un sito Web 24x7 con un utilizzo intenso.