Distribuzione applicazione Vb.net - SQL server Express - Client/Server...

venerdì 09 aprile 2010 - 20.08

nikkysixx Profilo | Junior Member

Salve,stavo facendo un po di prove nella distribuzione della mia applicazione,ma temo di aver bisogno di una mano,per sapere i passi precisi con cui effettuare l installazione,in modalita' client server

Ho installato sul server sql server express,collegato il database, reimpostato la stringa di connessione,ho anche controllato che Sql server accettasse connessioni remoto,e l applicazione funziona perfettamente se fatta partire in locale sul server

Ma quando un client prova ad aprirlo,ottengo degli errori di istanza non valido.cmq posto il log completo

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

Inoltre se vado se vado all interno di Ms Sql Server Managament e seleziono Connection properties -> Network Protocol -> TCP/IP ottengo un errore

"Si è verificato un errore di rete o specifico dell istanza mentre si cercava di stabilire una connessione con il server SQL. Il server non è stato trovato o non è accessibile.Verificare che il nome dell istanza sia corretto e che il server SQL sia configurato in modo da consentire connessione remote. error 26:errore nell individuazione del server/istanza specificata (MSQL Server)"

Cosi per potermi connettere,devo mettere <default>

E'piu o meno l errore che poi mi da richiamando il programma in remoto.

Do qualche altra indizio a quello che per me è un rebus

- firewall disattivato

- una parte del database è stata realizzata manualmente ,un altra coi databindings quindi ho due connection string

1) la prima è dichiarata in un modulo,ed è quella usata per gestire via codice alcune operazioni

Public con_string As String = "Data Source=nome_pc\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=nome_tabella"

2) la seconda invece è quella generata in automatico dai databinding fatti trascinando i controlli dal dataset sulla finestra di progettazione,sembra essere presente cliccando le proprieta'del progetto alla voce Impostazioni

ConnectionString (Stringa di connessione) Provider=SQLOLEDB;Data Source=mio_pc\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog="mio_nome"

- per la parte di codice scritta a mano ho usato

nome_connessione As IDbConnection = New SqlConnection(con_string)

- in locale l applicazione funziona perfettamente

- quando ho aggiunto l origine dati via wizard,mi pare di ricordare che l aggiunta di un dataset come istanza di sql server mi dava errore cosi ho selezionato SQL Server OLEDB

Grazie

kataklisma Profilo | Senior Member

>Salve,
Ciao!

stavo facendo un po di prove nella distribuzione della
>mia applicazione,ma temo di aver bisogno di una mano,per sapere
>i passi precisi con cui effettuare l installazione,in modalita'
>client server
>
>Ho installato sul server sql server express,collegato il database,
>reimpostato la stringa di connessione,ho anche controllato che
>Sql server accettasse connessioni remoto,e l applicazione funziona
>perfettamente se fatta partire in locale sul server
>
>Ma quando un client prova ad aprirlo,ottengo degli errori di
>istanza non valido.cmq posto il log completo
>
>************** Testo dell'eccezione **************
>System.Data.SqlClient.SqlException: Si è verificato un errore
>di rete o specifico dell'istanza mentre si cercava di stabilire
>una connessione con il server SQL. Il server non è stato trovato
>o non è accessibile. Verificare che il nome dell'istanza sia
>corretto e che il server SQL sia configurato in modo da consentire
>connessioni remote. (provider: Interfacce di rete SQL, error:
>26 - Errore nell'individuazione del server/dell'istanza specificata)
>
>Aprendo un altra funzione invece
>************** Testo dell'eccezione **************
>System.Data.OleDb.OleDbException: [DBNETLIB][ConnectionOpen (Connect()).]Server
>SQL inesistente o accesso negato.
>in System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString
>constr, OleDbConnection connection)
>
>Inoltre se vado se vado all interno di Ms Sql Server Managament
>e seleziono Connection properties -> Network Protocol ->
>TCP/IP ottengo un errore
>
>"Si è verificato un errore di rete o specifico dell istanza mentre
>si cercava di stabilire una connessione con il server SQL. Il
>server non è stato trovato o non è accessibile.Verificare che
>il nome dell istanza sia corretto e che il server SQL sia configurato
>in modo da consentire connessione remote. error 26:errore nell
>individuazione del server/istanza specificata (MSQL Server)"
>
>Cosi per potermi connettere,devo mettere <default>
>
>E'piu o meno l errore che poi mi da richiamando il programma
>in remoto.
>
>Do qualche altra indizio a quello che per me è un rebus
>
>- firewall disattivato
>
>- una parte del database è stata realizzata manualmente ,un altra
>coi databindings quindi ho due connection string
>
>1) la prima è dichiarata in un modulo,ed è quella usata per gestire
>via codice alcune operazioni
>
>Public con_string As String = "Data Source=nome_pc\SQLEXPRESS;Integrated
>Security=SSPI;Initial Catalog=nome_tabella"
>
>2) la seconda invece è quella generata in automatico dai databinding
>fatti trascinando i controlli dal dataset sulla finestra di progettazione,sembra
>essere presente cliccando le proprieta'del progetto alla voce
>Impostazioni
>
>ConnectionString (Stringa di connessione) Provider=SQLOLEDB;Data
>Source=mio_pc\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog="mio_nome"
>
>- per la parte di codice scritta a mano ho usato
>
>nome_connessione As IDbConnection = New SqlConnection(con_string)
>
>- in locale l applicazione funziona perfettamente
>
>- quando ho aggiunto l origine dati via wizard,mi pare di ricordare
>che l aggiunta di un dataset come istanza di sql server mi dava
>errore cosi ho selezionato SQL Server OLEDB

Ti sembrerà strano ma, invece di inserire il nome del pc nella connection string, inserisci l'IP del server con relativa porta adibita al servizio SqlServer.

Inoltre prova a connetterti con telnet a SqlServer.

Aspetto tuo riscontro.

>Grazie
Di niente! Tranquillo che lo risolviamo!

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nikkysixx Profilo | Junior Member

Grazie davvero, ti allego un paio di reperti nel primo penso che l indirizzo sia il 10.0.0.101,e la porta tcp la 1430


1024x823 80Kb


Il secondo è l errore che avviene connettendomi a sqlserver via tcp/ip (da lo stesso errore anche abilitando la spunta si,nel menu sopra)

1024x719 83Kb


kataklisma Profilo | Senior Member

>Grazie davvero, ti allego un paio di reperti nel primo penso
>che l indirizzo sia il 10.0.0.101,e la porta tcp la 1430
L'applicazione gira in locale? Se si inserisci un'ip della classe 192.168.x.x e sopratutto ABILITALO, è disattivato nell'immagine :)
Elimina lo zero dalla textbox porte dinamiche e prova a fare il login.

Ps, ripeto prova a connetterti con telnet :

1)Start -> Esegui
2)telnet ipserver porta ex. telnet 192.168.1.34 1430
3)Premi invio

Se la schermata è nera vuol dire che la connessione è andata a buon fine, altrimenti riceverai un'errore.

Ps 2
Attiva il servizio SqlBrowser.

>Il secondo è l errore che avviene connettendomi a sqlserver via
>tcp/ip (da lo stesso errore anche abilitando la spunta si,nel
>menu sopra)
Lascia default sul protocollo di rete.

;)
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nikkysixx Profilo | Junior Member

Allora l applicazione gira in locale, e ho messo si alla voce Abilitato su 10.0.0.101

Non ho capito pero'cosa intendi con
"Se si inserisci un'ip della classe 192.168.x.x e sopratutto ABILITALO, è disattivato nell'immagine"
forse alla voce ip2 ? abilitare anche quello sostituendo il 127.0.0.1 ma con cosa?

Il telnet purtroppo non posso provarlo immediatamente in quanto non sono in ufficio,e non saprei farlo da remoto pur conoscendone l indirizzo ip.

Appena riesco ti riportero'cosa dice

kataklisma Profilo | Senior Member

>Allora l applicazione gira in locale, e ho messo si alla voce
>Abilitato su 10.0.0.101
>
>Non ho capito pero'cosa intendi con
>"Se si inserisci un'ip della classe 192.168.x.x e sopratutto
>ABILITALO, è disattivato nell'immagine"
>forse alla voce ip2 ? abilitare anche quello sostituendo il
>127.0.0.1 ma con cosa?
Ti spiego, visto che gli errori che riporti, a naso mi danno di problemi riguardanti la configurazione della rete lan sarebbe meglio controllare un po di cosucce tipo ad esempio l'indirizzo ip del router, se i computer connessi possiedono ip con classe uguale, esempio : 192.168 etc...ecco perchè ti chiedevo di effettuare una connessione con telnet.

Quindi il problema riguarda a parer mio e viste le informazioni datemi, la rete e la configurazione dei vari indirizzi ip.

In parole molto povere i pc in lan per comunicare hanno bisogno di indirizzi ip appartenenti ad una classe, se il tuo server ha una classe 10.0 e il client 192.168 non potranno mai comunicare, questo è il motivo del perchè in locale ti funziona e da un'altra postazione no!

>Il telnet purtroppo non posso provarlo immediatamente in quanto
>non sono in ufficio,e non saprei farlo da remoto pur conoscendone
>l indirizzo ip.
>
>Appena riesco ti riportero'cosa dice
;)

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nikkysixx Profilo | Junior Member

Allora ho controllato gli indirizzi ip,che avevo scritto da quache parte , il router ha come indirizzo 10.0.0.138
i pc 10.0.0.x

kataklisma Profilo | Senior Member

>Allora ho controllato gli indirizzi ip,che avevo scritto da quache
>parte , il router ha come indirizzo 10.0.0.138
>i pc 10.0.0.x

Perfetto, allora domani ricordati di provare ad effettuare una connessione telnet e di attivare sqlbrowser.

;)

P.S hai modificato la connection string in questo modo?

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

Se non va prova anche questa :

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

http://blogs.dotnethell.it/swdev/

nikkysixx Profilo | Junior Member

Uff non potro provare prima di lunedi comunque sei gentilissimo e non vedo l ora di provare il tutto xD

ma nel secondo caso l user id e la password sono quelle di sql sever o di windows?

kataklisma Profilo | Senior Member

Ciao :)

>Uff non potro provare prima di lunedi comunque sei gentilissimo
>e non vedo l ora di provare il tutto xD
Addirittura , ti ringrazio...

>ma nel secondo caso l user id e la password sono quelle di sql
>sever o di windows?
Beh, se accetta connessioni remote deve accettare, per forza di cose, credenziali SqlServer, quindi dovrai inserire username e password di un'utente avente permessi necessari sul database oggetto delle tue notti insonni :)
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nikkysixx Profilo | Junior Member

Chiaro e lunedi faro tutte le prove del caso sperando di risolvere, ma perdonami e toglimi un dubbio enorme, cosi com è fatta la mia piccola applicazione,che è soltanto una prova a dirla tutta,cosa succederebbe se due utenti inserissero dei dati contemporaneamente o se uno modificasse un contatto ,mentre un altro lo elimina ? insomma la gestione della concorrenza è qualcosa che nessuno ha saputo spiegarmi in parole semplici

kataklisma Profilo | Senior Member

>Chiaro e lunedi faro tutte le prove del caso sperando di risolvere,
>ma perdonami e toglimi un dubbio enorme, cosi com è fatta la
>mia piccola applicazione,che è soltanto una prova a dirla tutta,cosa
>succederebbe se due utenti inserissero dei dati contemporaneamente
>o se uno modificasse un contatto ,mentre un altro lo elimina
>? insomma la gestione della concorrenza è qualcosa che nessuno
>ha saputo spiegarmi in parole semplici

La gestione della concorrenza non è assolutamente una cosa semplice, si ha bisogno di un'application server che gestisca interamente tutte le problematiche riguardanti il caso.
Sto sviluppando un'applicazione client-server orientata ai servizi, multithread, e concorrenziale su una base dati proprietaria di un grosso erp italiano, ti posso garantire che tutto cio è molto complicato sopratutto se si ha a disposizone team di piccole dimensioni o addirittura con un'unico sviluppatore (come nel mio caso).

Giusto per avere un'idea puoi dare un'occhiatina qui :

http://technet.microsoft.com/it-it/library/ms171845(SQL.90).aspx

e qui

http://technet.microsoft.com/it-it/library/ms172975(SQL.90).aspx

;)

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nikkysixx Profilo | Junior Member

Allora ecco il risultato del telnet

telnet 10.0.0.101 1430

Impossibile aprire una connessione con l host,sulla porta 1430 connessione non riuscita

kataklisma Profilo | Senior Member

Ciao!

>Allora ecco il risultato del telnet
>
>telnet 10.0.0.101 1430
>
>Impossibile aprire una connessione con l host,sulla porta 1430
>connessione non riuscita
>
>Ora provo a modificare la stringa con l indirizzo ip come mi
>hai suggerito e vedo cosa cambia
>
Il problema riguarda SqlServer non la tua applicazione, abilita SqlBrowser attiva il tcp/ip e riprova.
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nikkysixx Profilo | Junior Member

Ciaooo

Ho modificato la stringa di connessione in un modulo come

Public con_string As String = "Server=10.0.0.101\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=My Database"

ma ottengo errore -.-

sqlbrowswer è attivo

kataklisma Profilo | Senior Member

>Ciaooo
Ciao :)

>Ho modificato la stringa di connessione in un modulo come
>
>Public con_string As String = "Server=10.0.0.101\SQLEXPRESS;Integrated
>Security=SSPI;Initial Catalog=My Database"
>
>ma ottengo errore -.-
>
>sqlbrowswer è attivo
>

Non inserire l'istanza :

Public con_string As String = "Server=10.0.0.101,1430;Integrated Security=SSPI;Initial Catalog=My Database"

prova a connetterti con telnet sulla porta 1433.
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nikkysixx Profilo | Junior Member

Ho modificato la stringa in questo modo

Public con_string As String = "Server=10.0.0.101,1433;Integrated
Security=SSPI;Initial Catalog=My Database"

In piu sono andato nelle impostazioni di sql server

ip1 ->abilitato si ,attivo si, 10.0.0.101 porta 1433
ip2 ->abilitato no ,attivo no, 127.0.0.1
ipall ->non configurato

provando con telnet 10.0.0.101 1433 da un client(10.0.0.67),verso il server ottengo sempre lo stesso errore
p.s. sto impazzendo

kataklisma Profilo | Senior Member

>Ho modificato la stringa in questo modo
>
>Public con_string As String = "Server=10.0.0.101,1433;Integrated
>Security=SSPI;Initial Catalog=My Database"
>
>In piu sono andato nelle impostazioni di sql server
>
>ip1 ->abilitato si ,attivo si, 10.0.0.101 porta 1433
>ip2 ->abilitato no ,attivo no, 127.0.0.1
>ipall ->non configurato
>
>provando con telnet 10.0.0.101 1433 da un client(10.0.0.67),verso
>il server ottengo sempre lo stesso errore
>p.s. sto impazzendo

Prova ad eseguire il telnet in locale :

telnet localhost 1433

Dopodiche prova ad effettuare una connessione a SqlServer utilizzando il tool ODBC di windows : Start-Strumenti Amministrazione - Origine Dati (ODBC).

Tranquillo è una questione di configurazione di SqlServer ;)
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nikkysixx Profilo | Junior Member

Stesso errore! facendo il telnet da locale,sul server con firewall disabilitato
telnet localhost 1433

Tra un po gli do fuoco...

kataklisma Profilo | Senior Member

>Stesso errore! facendo il telnet da locale,sul server con firewall
>disabilitato
>telnet localhost 1433
Non è che la porta è 1430 come detto da te precedentemente?

Sei sicuro di aver abilitato il tcp/ip dal pannello di amministrazione di SqlServer?
Sei sicuro che quello sia l'indirizzo del server ove risiede SqlServer?
Sei sicuro di aver abilitato SqlBrowser?
Sei sicuro che il servizio SqlServer sia attivo?

Forse cambio il nick in "Ispettore Derrick" :)

>Tra un po gli do fuoco...
Potrebbe essere una soluzione :)

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nikkysixx Profilo | Junior Member

[EDIT] Forse ci siamo (halleluja) impostando come porta 1433 telnet va a buon fine

Public con_string As String = "Data Source=10.0.0.101,1433\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=my database"


Dal SERVER (ip = 10.0.0.101)
------------------------------


stringa di connessione "Data Source=10.0.0.101,1433\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=my database" FUNZIONA


Firewall disattivato


Dal CLIENT (ip = 10.0.0.67)
-----------------
telnet 10.0.0.101 1433 ok!
Firewall disattivato

Ora c è un ultimo problema pare,in quanto dal client ottengo un eccezione...
Accesso non riuscito per l utente NOMESERVER/NomeServer
System.Data.SqlClient.SqlException: Impossibile aprire il database "My Database" richiesto dall'account di accesso. Accesso non riuscito

Forse devo mettere utente e password di windows nella stringa?e se si dove=?

"Data Source=10.0.0.101,1433\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=my database"
[EDIT 2]

Ho riletto ora un altro tuo commento in cui avevi scritto

Data Source=10.0.0.101,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=tuoUsername;Password=tuaPassword;

In questo caso, Username sarebbe nome_utente_windows o nome_server/nome_utente_windows e password = password di windows?
Grazie

nikkysixx Profilo | Junior Member

Niente ..adesso per errore ho disabilitato il login di accesso a sql server
Quindi m sa che lascio ogni speranza

kataklisma Profilo | Senior Member

Ciao!
>Niente ..adesso per errore ho disabilitato il login di accesso
>a sql server
I dati di accesso devo essere credenziali SqlServer, quindi crea un'utente sul DB, imposta i relativi privilegi sul Database ed inserisci username e password nella stringa di connessione.

Per attivare il login di SqlServer fai cosi :

Esegui SqlServer Management Studio, click destro sul server in esplora oggetti, proprietà, protezione, abilita la voce Autenticazione SqlServer e di Windows.

Fatto questo nella connectionstring non devi far altro che inserire username e password dell'utente creato senza specificare domini et varie.

>Quindi m sa che lascio ogni speranza
Non lasciare niente....ti ho detto che si risolve :) avrai solamente combinato qualche pastrocchio con la configurazione :)
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nikkysixx Profilo | Junior Member

Ciao Il problema è che volevo fare una cosa simile ma non mi accettava la password,cosi per errore (leggasi disperazione) ho cliccato disabilita login,col risultato di non poter accedere affatto ad sql neanche con l autenticazione windows.
Ho rimosso il tutto e ora ho reinstallato sql server express usando come modalita di autenticazione nome e password complessa con credenziali sql server...se non funziona neanche cosi mi do all ippica -.-"

kataklisma Profilo | Senior Member

>Ciao Il problema è che volevo fare una cosa simile ma non
>mi accettava la password,cosi per errore (leggasi disperazione)
>ho cliccato disabilita login,col risultato di non poter accedere
>affatto ad sql neanche con l autenticazione windows.
>Ho rimosso il tutto e ora ho reinstallato sql server express
>usando come modalita di autenticazione nome e password complessa
>con credenziali sql server...se non funziona neanche cosi mi
>do all ippica -.-"

Dai, proviamo a rinconfigurarlo dopo la reinstallazione e non disperare :)

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nikkysixx Profilo | Junior Member

GRANDE :D usando le credenziali sql server e la stringa di connessione,che mi hai scritto precedentemente,funziona perfettamente
Ti devo una pizza xD

kataklisma Profilo | Senior Member

>GRANDE :D usando le credenziali sql server e la stringa di connessione,che
>mi hai scritto precedentemente,funziona perfettamente

Bene!Quindi ricorda, la prossima volta prima di toccare qualcosa sulla configurazione di SqlServer leggi qualcosa ;) molto probabilmente hai fatto un po di confusione con ip e correlati.

>Ti devo una pizza xD
Sono a dieta

;) Ciao!

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5