[SQL Server] Lento..

sabato 07 luglio 2007 - 12.16

gigi90 Profilo | Senior Member

Ho costruito un'applicazione che funziona con sql server, questa applicazione deve funzionare nella rete di un azienda, quindi ho installato l'istanza di sql server su un server centrale della rete, e l'applicazione su tutti i client, quindi l'applicazione funziona bvenissimo e in più è molto performante.
Questa azienda che dispone di due centri separati fisicamente, mi ha chiesto di far funzionare l'applicazione anche sull'altro centro, ma con lo stesso database, quindi siccome il server contenente il database è sempre connesso ad internet e dispone di un indirizzo IP statico, ho pensato di far connettere le applicazioni dell'altro centro al database in maniera remota cambiando la stringa di connessione al database(ho messo quella in cui si specifica l'IP del server), qui sorge il problema: l'applicazione funziona si, ma quando recupera informazioni dal database, questo processo risulta molto lento , addirittura si protrae fino a 1 min, e l'azienda che mi ha coimmisionato il database non può aspettare tutto questo tempo siccome l'applicazione si occupa di gestire prenotazioni e in alcuni casi c'è molta folla.


Esiste qualke configurazione per velocizzare l'acesso al database??

lbenaglia Profilo | Guru

>Questa azienda che dispone di due centri separati fisicamente,
>mi ha chiesto di far funzionare l'applicazione anche sull'altro
>centro, ma con lo stesso database, quindi siccome il server contenente
>il database è sempre connesso ad internet e dispone di un indirizzo
>IP statico, ho pensato di far connettere le applicazioni dell'altro
>centro al database in maniera remota cambiando la stringa di
>connessione al database(ho messo quella in cui si specifica l'IP
>del server), qui sorge il problema: l'applicazione funziona si,
>ma quando recupera informazioni dal database, questo processo
>risulta molto lento , addirittura si protrae fino a 1 min, e
>l'azienda che mi ha coimmisionato il database non può aspettare
>tutto questo tempo siccome l'applicazione si occupa di gestire
>prenotazioni e in alcuni casi c'è molta folla.
>
>
>Esiste qualke configurazione per velocizzare l'acesso al database??

Ciao gigi90,

esporre un DBMS su Internet, vuol dire "farsi del male"
Probabilmente ignori i pericoli a cui stai andando incontro, ma te ne accorgerai quando qualche malintenzionato ti avrà completamente "brasato" i database o peggio aggiornato i dati a tua insaputa.

Per quanto riguarda le prestazioni, tutto dipende da come le due sedi sono collegate tra di loro.
Leggendo il tuo post mi sembra di capire che non esista alcuna linea dedicata ma che il collegamento avvenga tramite Internet.
Generalmente le prestazioni di una LAN sono di gran lunga superiori rispetto ad una connessione via Internet, pertanto è facile individuare la causa del problema (che è interamente imputabile alla rete e non a SQL Server!).

In questi casi sarebbe consigliabile configurare un secondo server SQL dedicato presso la sede remota al quale i clients si connetteranno, impelmentando una tipologia di replica tra i due server.
Tale architettura non è "indolore" dato che comporta modifiche allo schema del db e quindi va prevista fin dal principio.

Sui Books Online troverai una intera sezione dedicata alle Repliche con tutti i dettagli sulle varie tipologie offerte da SQL Server.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

SSUPERPIPPO Profilo | Guru

Un sorciatoia che io ho già implementato da un mio cliente, portebbe essere questa:

Installa il tuo programma sul server
Attivi una connessione VPN tra la sede staccata e il server locale
Attivi una connessione Desktop Remoto (passando per la VPN, più sicura!) e lavori direttamente sul server.

Le prestazioni sono decisamente performanti e non servono neanche licenze terminal server in quanto se possiedi Windows 2003 server include già due connessioni per l'amministrazione remota che puoi utilizzare.

Spero di esserti stato d'aiuto, fammi sapere, ciao

Alessandro

gigi90 Profilo | Senior Member

Siccome non sono molto esperto di sistemi Server, mi potresti spiegare come connettere due computer client all'applicazione sul server, in remoto, ti premetto che sul server è installato Windows Server 2003.
Grazie!!!!!

SSUPERPIPPO Profilo | Guru

Ti riassumo quello che devi fare:

1. Configurare il Router (IP Statico) affinchè possa ricevere connessioni remote abilitando la porta TCP/UDP 1723
2. Abilitare accesso remoto sul server

3. Configurare la connessione VPN sul lato client

Per i punti 2 e 3 ti rimando a questo articolo che ti spiega come creare un tunneling VPN:

http://support.microsoft.com/kb/323441/it

4. Una volta che hai stabilito una connessione VPN il gioco è fatto, infatti basterà che tu avvii una connessione a Desktop remoto (Start/Programmi/Accessori/Connessione a Desktop Remoto) indicando come indirizzo di connessione l'indirizzo della rete LAN del server (non l'IP pubblico);
In questo modo vedrai il desktop remoto del Server rimanendo comunque nella "sicurezza" della VPN.

Attenzione! ricordati che comprese in Win Server 2003 ci sono solo 2 licenze terminal ad uso amministrazione, se devi connettere più postazioni allora devi acquistare altre licenze terminal.
Chiaramente la gestione di più connessioni simultanee và sempre rapportata all'ampiezza di banda disponibile e al tipo di server che hai e i servizi attivati.

Se hai bisogno di qualche suggerimento sono a disposizione, intanto leggiti bene la documentazione nel link.

Ciao

Alessandro
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5