Connessione in remoto di sql server 2008 express

mercoledì 09 giugno 2010 - 10.54

mauri1961 Profilo | Senior Member

Ho un problema di accesso ai dati del mio database in sqlserver 2008 express dalle pagine aspx che ho creato e che sono già accessibili su internet. Mi è stato segnalato un post di Benaglia (http://www.dotnethell.it/forum/messages.aspx?ThreadID=10971) che risolveva come al solito brillantemente il problema in quanto sqlserver all'atto dell'installazione funziona solo in accesso locale.

Io ho lo stesso problema ma in quel post si parlava della versione 2005, io ho la 2008 e non riesco a ritrovare i punti della procedura da fare (temendo, vista l'inesperienza, di combinare danni).

Da configuration manager vedo che sqlserver express è in running ma loggato come local, non penso che basti mettere solo network....

Grazie, Maurizio

lbenaglia Profilo | Guru

>Io ho lo stesso problema ma in quel post si parlava della versione
>2005, io ho la 2008 e non riesco a ritrovare i punti della procedura
>da fare (temendo, vista l'inesperienza, di combinare danni).

Ciao Maurizio,

Con SQL Server 2008 puoi abilitare il protocollo TCP/IP utilizzando il SQL Server Configuration Manager.
Seleziona il nodo SQL Server Network Configuration > Protocols for <nome istanza>.

>Grazie, Maurizio
Prego.

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

mauri1961 Profilo | Senior Member

Scusami per il ritardo nella risposta ma, purtroppo, riesco a provare queste cose solo nei ritagli di tempo tra un impegno e un altro.
Ho seguito la procedura che mi hai segnalato ma devo dirti che tutto quanto dovevo compiere era già abilitato in configurazione.

L'unica cosa che mi lascia perplesso è che entrando nel nodo sql server services mi dice che sqlserver express è in running ma il log on as me lo segnala come local.

E' corretto ?

Visto che tutto ciò nasce dal fatto che le mie pagine aspx non riescono a leggere il database e che come errore mi segnala o il mancato collegamento al database o un errore nella connection string sapresti indicarmi cosa devo segnalare come data source il nome del server (nel mio caso SRV-DB01), l'indirizzo IP PUBBLICO (89.96. ecc...) oppure l'ip del server (192 ecc..).

per essere precisi nelle proprietà della TCP/IP mi segnala questo:

IP1 ENABLED ACTIVE 192.XXX.X.X porta 1434
IP2 ENABLED ACTIVE 10.10.10.3 porta 1434
IP3 ENABLED ACTIVE 127.0.0.1 porta 1434

in dynamic ports e tutte le altre voci sono vuote

Ti ringrazio come sempre.

Maurizio.

lbenaglia Profilo | Guru

>L'unica cosa che mi lascia perplesso è che entrando nel nodo
>sql server services mi dice che sqlserver express è in running
>ma il log on as me lo segnala come local.
>
>E' corretto ?
Probabilmente il servizio sta girando con le credenziali del Local System Account.
E' corretto? Boh, è sicuramente eccessivo dato che SQL Server può girare con un normalissimo user senza alcun privilegio particolare.

>Visto che tutto ciò nasce dal fatto che le mie pagine aspx non
>riescono a leggere il database e che come errore mi segnala o
>il mancato collegamento al database o un errore nella connection
>string sapresti indicarmi cosa devo segnalare come data source
>il nome del server (nel mio caso SRV-DB01), l'indirizzo IP PUBBLICO
>(89.96. ecc...) oppure l'ip del server (192 ecc..).
Dipende da dove si trovano i due server.
Sono in LAN con un DNS? -> IP privato o nome DNS
Sono in LAN senza un DNS? --> IP Privato
Sono in WAN? --> IP pubblico

>Ti ringrazio come sempre.
Prego.

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

mauri1961 Profilo | Senior Member

viene utilizzata una LAN senza DNS. quindi per IP PRIVATO si intende 192.168 ecc. oppure il 10.0.0.2 ?

Abbi pazienza ma essendo la prima volta che mi scontro con queste cose mi tocca un po' inventare (anche se piano piano poi ci arrivo...).

Grazie ancora, Maurizio

lbenaglia Profilo | Guru

>viene utilizzata una LAN senza DNS. quindi per IP PRIVATO si
>intende 192.168 ecc. oppure il 10.0.0.2 ?
Entrambe le classi di indirizzi che hai postato sono riservati per reti private dalla IANA
Che indirizzo ha il client? 192.168.x.x o 10.0.x.x? In base a quello specifica il corrispondente indirizzo del server nella stessa classe.

>Grazie ancora, Maurizio
Prego.

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

mauri1961 Profilo | Senior Member

ok. capito provo e Ti faccio sapere, anche se mi sa che c'è ancora qualche cosa a livello di connessione con il server dove è posizionato il database.

Verifico. Grazie !!

Maurizio

lbenaglia Profilo | Guru

>ok. capito provo e Ti faccio sapere, anche se mi sa che c'è ancora
>qualche cosa a livello di connessione con il server dove è posizionato
>il database.
Se la telnet funziona non hai problemi di connessione, al più di autenticazione all'istanza (login/stringa di connessione errata).

>Verifico. Grazie !!
Prego.

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

mauri1961 Profilo | Senior Member

LA telnet funziona correttamente.
Non vorrei che fosse sulla stringa di connessione il fatto che utilizzo un'istanza SQLEXPRESS dove non c'è utente e password infatti in locale la stringa era così composta (e funzionava..):

Data Source=SRV-DB01\SQLEXPRESS; Initial Catalog=CASSAWEB;Integrated Security=SSPI

dove integrated security sostituisce utente e password...sarà quello ??

Ciao, Maurizio

lbenaglia Profilo | Guru

>LA telnet funziona correttamente.
>Non vorrei che fosse sulla stringa di connessione il fatto che
>utilizzo un'istanza SQLEXPRESS dove non c'è utente e password
>infatti in locale la stringa era così composta (e funzionava..):
>
>Data Source=SRV-DB01\SQLEXPRESS; Initial Catalog=CASSAWEB;Integrated
>Security=SSPI
>
>dove integrated security sostituisce utente e password...sarà
>quello ??
I 2 PC sono in dominio?
Se non lo sono non puoi utilizzare la Windows Authentication (Integrated Security=SSPI) per autenticarti da remoto.
Come prima cosa verifica se l'istanza è configurata per accettare anche la SQL Server Authentication: lancia SSMS sul server, autenticati, seleziona l'istanza nell'Object Explorer, tasto DX, Properties, Security e verifica che sia selezionato l'option button "SQL Server and Windows Authentication mode".
A questo punto definisci una nuova login di tipo SQL Server authentication sempre da SSMS, specifica una pwd e seleziona il tuo db come database di default. Seleziona User Mapping, fai click sulla check box relativa al tuo database e seleziona le database roles che vuoi assegnare allo user account (cerca sui Books Online il significato dei vari ruoli).
Una volta terminata questa operazione avrai configurato correttamente una nuova login in grado di autenticarsi all'istanza con la SQL Server Authentication mappata ad uno user account nel tuo database con le permission necessarie per accedere ai dati.

Come ultima cosa non ti resta che modificare la stringa di connessione in questo modo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

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

mauri1961 Profilo | Senior Member

Ho seguito le Tue istruzioni ed ho inserito login e password in SQL SERVER AUTHENTICATION. Tutto ok, però ora mi trovo il database vuoto.
Io ho selezionato come mi hai detto il database come default (Cassaweb) e nello user mapping ho di nuovo messo la spunta su Cassaweb.
Non avrei dovuto ritrovarmi l'intero database sulla nuova istanza ?
Ho anche provato a fare backup in windows authentication e restore in sql server authentication ma mi dice che non ho il permesso di effettuare il restore.
Alla peggio mi riporto le tabelle e faccio girare gli script che le popolano, niente di tragico ma non mi convince molto il fatto di non ritrovarmi più le tabelle.


Ciao, sempre grazie, Maurizio.

lbenaglia Profilo | Guru

>Ho seguito le Tue istruzioni ed ho inserito login e password
>in SQL SERVER AUTHENTICATION. Tutto ok, però ora mi trovo il
>database vuoto.
>Io ho selezionato come mi hai detto il database come default
>(Cassaweb) e nello user mapping ho di nuovo messo la spunta su
>Cassaweb.
Che permission hai assegnato allo user account?
Prova con db_owner anche se con molta probabilità è eccessivo per l'uso che ne devi fare.

>Non avrei dovuto ritrovarmi l'intero database sulla nuova istanza
>?
Il database è sempre lì, quindi non capisco cosa intendi .

>Ho anche provato a fare backup in windows authentication e restore
>in sql server authentication ma mi dice che non ho il permesso
>di effettuarlo.
Backup di cosa e da quale istanza? Restore di cosa ed in quale istanza?

>Ciao, sempre grazie, Maurizio.
Prego.

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

mauri1961 Profilo | Senior Member

ok funziona tutto perfettamente...finalmente.

Ho messo la spunta su db_owner e poi in connection strings ho inserito come data source 10.10.10.3,1434

a quel punto vedo in navigazione il database. PERFETTO!!!

grazie, Maurizio.
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