Potrei sbagliarmi, lo spero, forse quanto sto per dire dipende unicamente dalla mia “inettitudine” o dalla mia capacità poco sviluppata di utilizzare questo strumento (anche se sono ormai più di 3 anni che ci lavoro). Avete mai provato a:
- Creare un database su SQL Server Standard o Enteprise.
- Successivamente, con SQL Management Studio Express creare una copia di backup del database per ripristinarlo su un’altra macchina.
- Cercare di ripristinare il backup effettuato sulla nuova macchina (utilizzando sempre SQL Management Studio Express) ed ottenete un messaggio di errore che tra le righe riporta Accesso Negato.
Ci ho pensato parecchio, un problema cosi da cosa può dipendere? Allora ho provato a seguire una strada diversa. Mi sono collegato direttamente alla macchina server che monta motore di database ed SQL Management Studio, da qui creo il backup. Successivamente, sulla macchina dove voglio ripristinare il backup, eseguo l’operazione senza alcun problema, questa volta utilizzando SQL Management Express.
Ora mi chiedo, ci sono differenze? Sicuramente ma avrò perso qualche passaggio, un backup viene visto in maniera molto differente se effettuato da una versione Express ad una Studio! Questa è una piccola nota, nel caso vi dovesse accedere quanto è successo a me, potete sempre tentare questa strada, attualmente sto analizzando il problema per capire “dove sbaglio” (perchè sicuramente dipende, come dicevo prima, dalla mia inettitudine
).
Share on Facebook
Argomento molto interessante, mi occupo di web-application da molto tempo e questo problema è sempre ricorrente. L’aumentare del numero di utenti che visitano un sito web è direttamente proporzionale all’attenzione che si deve porre nei confronti dei vari meccanismi che si occupano di far interagire ui e database. Per rendere questo “collegamento” performante si può utilizzare il Connection Pooling.
Il connection pooling è una cache delle connessioni mantenute dal database, queste rimangono in memoria per un determinato periodo di tempo T, durante il quale il db, per richieste esterne, può erogare ottenendo cosi un servizio più veloce.
Il concetto è semplice, il server di database non chiude subito le connessioni al db, al contrario le lascia aperte in attesa che qualcuno possa richiederle. Come si attiva questo meccanismo? Basta modificare attentamente la connection string all’interno del web.config della nostra applicazionie come nel seguente esempio:
<configuration>
<connectionStrings>
<add name="Connessione"
ConnectionString="Server=localhost;Integrated Security=SSPI;Pooling=true;Min Pool Size=1; Max Pool Size=10" />
</connectionStrings>
</configuration>
Sostanzialmente sono stati inseriti tre parametri all’interno della connessione:
- Min Pool Size: numero minimo di connessioni su cui applicare il pooling (quindi cache e riutilizzo);
- Max Pool Size: numero massimo di connessioni su cui applicare il pooling;
- Pooling: con questa proprietà stiamo attivando il meccanismo di pool per la ConnectionString;
Attenzione, Min Pool Size e Max Pool Size, hanno importanza assoluta. Questi due valori vanno impostati dopo un attento studio in quanto determinano proprio l’aumentare o meno delle performance del server sql, se configurati male possono creare più rallentamenti che benefici. Se per esempio ho un’applicazione web in cui sò per certo che avrò un numero di connessioni minime simultanee di 10 persone, logicamente imposterò il mio Min Pool Size = 10.
Spero possa aiutarvi! Enjoy!
Share on Facebook
Commenti recenti