Visual Basic 2005 Express e DB MySql Express

lunedì 19 febbraio 2007 - 13.08

aintono Profilo | Junior Member

Salve a tutti!
Sono nuovo della Comunity ma non di programmazione (anche se è da poco che mi sono avvicinato al V.B.2005)..

Giungo direttamente al mio problema:

Ho ideato un'applicazione in VISUAL BASIC 2005 EXPRESS che si appoggia a DB MYSQL EXPRESS in locale.

Ho provato a selezionare un DB in LAN ma non funziona, mi da un errore, avvisandomi che il nome del DB non è valido (appunto, nel percorso c'è il percorso di rete...)

Come si fa ad utilizzare un DB che non risiede nella postazione in cui gira l'applicazione?
Ho provato a cercare qualche notizia in più, ma senza alcun risultato.

Ringrazio anticipatamente chi, vorrà o saprà aiutarmi!!

aintono Profilo | Junior Member

Purtroppo è una cosa che non mi fa dormire la notte:

Si tratta sicuramente di un errore nella stringa di connessione

Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Documents and
Settings\Administrator\Documenti\dbRemoto.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True


"C:\Documents and

Settings\Administrator\Documenti\dbRemoto.mdf " con cosa lo devo sostituire dato che non mi prende il percorso in lan?
Nella macchina che deve ospitare il file MYSQL deve essere installato MYSQL espress?

Non ci sto capendo più nulla

MarKonE Profilo | Guru

Ciao, secondo me stai facendo un po' di confusione..... parli di MySQL ma la stringa di connessione sembra relativa a SQL SERVER EXPRESS.

Quale utilizzi ? Nell'attesa di un tuo chiarimento ti segnalo questo sito : http://www.connectionstrings.com/

E' molto utile per risolvere eventuali dubbi sulla sintassi per la connessione.

Eventualmente per favore posta l'errore preciso che riscontri...sarà più facile aiutarti.

Ciao!
My Blog... http://blogs.dotnethell.it/Mark/

aintono Profilo | Junior Member

Ciao MarKonE!

Utilizzo SQL EXPRESS, è la mia risposta definitiva :)

Ho sviluppato questa applicazione in Visual Basic 2005 express e SQL EXPRESS.
Il DB praticamente si trova nella cartella di default ma riesco ad utilizzarne qualunque altro che si trovi in locale (cambiando appunto il percorso del file)

E se volessi usare un db che risiede in un altro computer in LAN?
E se volessi usare un db che risiede in un pc di cui conosco l'ip?

Ho provato modificare la connessione,a sfogliare le cartelle, e ad inserire il percorso di rete..ma questo è l'errore che mi riene restituito avviando il test di connessione:


Il file "\\Server\shareddocs\dbRemoto.mdf" è in un percorso di rete non supportato per i file di database.
Impossibile allegare un database a denominazione automatica per il file

\\Server\shareddocs\dbRemoto.mdf. Esiste un database con lo stesso nome oppure il file pecificato non può essere aperto oppure si trova in una condivisione UNC.

Di seguito riporto la finestra di errore che compare.

666x146 24Kb



Devo installare SQL Express nella macchina destinata ad ospitare il db?

Grazie per il tempo dedicatomi

MarKonE Profilo | Guru

>Devo installare SQL Express nella macchina destinata ad ospitare
>il db?

Sicuramente

Come ti dicevo vedi questo sito per la sintassi :
http://www.connectionstrings.com/?carrier=sqlserver2005

Vedi la parte relativa a .Net .

Nello specifico :

"Are you using SQL Server 2005 Express? Don't miss the server name syntax Servername\SQLEXPRESS where you substitute Servername with the name of the computer where the SQL Server 2005 Express installation resides."

>Grazie per il tempo dedicatomi

Prova e facci sapere se hai altri problemi .

Ciao!
My Blog... http://blogs.dotnethell.it/Mark/

aintono Profilo | Junior Member

Grazie, mi metto all'opera!
Speriamo bene!

aintono Profilo | Junior Member

Ho installato nella macchina Host DB SQL EXPRESS, e fin qui tutto bene.
Ma si ritorna al tasto dolente della stringa di connessione:

Data Source=.\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;User Instance=True

E' quella che mi restituisce di defaul.

Leggendo su ConnectionStrings.com ho capito che dovrei sostituire

Data Source=.\SQLEXPRESS con
Data Source=nomeserver\SQLEXPRESS

ma Visual Basic 2005 EXPRESS non me lo permette

Che sia un limite del programma che utilizzo?(o mio? )

MarKonE Profilo | Guru

Vedi qui :
http://blogs.dotnethell.it/sandro/Abilitare-le-connessioni-remote-in-SQL-Server-2005.__3236.aspx

Così laviamo i panni sporchi in casa

Ciao!
My Blog... http://blogs.dotnethell.it/Mark/

aintono Profilo | Junior Member

MarKonE, sei un tesoro


Guardo subito :D:D

aintono Profilo | Junior Member

Fatto tutto ma la storia non cambia.


Il Visual Basic 2005 Express non mi permette di modificare la stringa Data Source.

Data Source=.\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;User Instance=True


a quanto ho capito dovrebbe essere del tipo:
Data Source=nomeserver\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;User Instance=True


ma non me la fa impostare

ecco la finestra di modifica stringa:


302x363 29Kb

MarKonE Profilo | Guru

Non puoi modificare la stringa di connessione da codice ?

Eventualmente prova a cercare tra le proprietà del progetto --> impostazioni.

Purtroppo non ho la versione Express dell'IDE quindi non posso fare prove

Ciao
My Blog... http://blogs.dotnethell.it/Mark/

aintono Profilo | Junior Member

Niente, mi sa che comincio ad abbandonare lo sviluppo di questa applicazione

Ho installato Microsoft SQL Express sia nel client che nel server (ho controllato i settaggi di quest'ultimo...), ma non riesco a collegare l'applicazione con il db che risiede in un altro computer nella stanza accanto.

Per la creazione del progetto mi sono affidato a Visual Basic 2005 express che gira su Win XP PRO S.P.2
Il DB invece sta su un Win Server2k3 in LAN.

Ho provato a seguire come riferimenti, le stringhe del sito segnalatomi ma nulla.
Il Visual Basic continua a visualizzarmi sempre quell'errore, e per di più non posso sostituire quel
Data Source=.\SQLEXPRESS

in

Data Source=nomeserver\SQLEXPRESS.

in quanto il programma mi da di default le seguenti stringhe

.\SQLEXPRESS oppure
.\MSSQLEXPRESS


Boh!

MarKonE Profilo | Guru

>Niente, mi sa che comincio ad abbandonare lo sviluppo di questa
>applicazione

Giammai


Hai verificato come ti avevo detto .....

In Esplora soluzioni fare doppio clic su Progetto e individuare l'impostazione relativa alla stringa di connessione nella scheda Impostazioni

?

Che impostazioni trovi ? Le puoi modificare ?

Ciao
My Blog... http://blogs.dotnethell.it/Mark/

aintono Profilo | Junior Member

Praticamente è questo quello che vedo:


597x466 37Kb



se clicco su "Visualizza Codice" lo posso modificare.

Attualmente ho riportato la connessione al DB in locale, nello stesso pc in cui gira l'applicazione ma lì non c'è nessuna riga di codice né stringa che faccia riferimento a questa cosa...



Namespace My

'La classe consente la gestione di eventi specifici sulla classe delle impostazioni:
' L'evento SettingChanging viene generato prima della modifica di un valore dell'impostazione.
' L'evento PropertyChanged viene generato dopo la modifica di un valore dell'impostazione.
' L'evento SettingsLoaded viene generato dopo il caricamento dei valori dell'impostazione.
' L'evento SettingsSaving viene generato prima del salvataggio dei valori dell'impostazione.
Partial Friend NotInheritable Class MySettings
End Class
End Namespace



MarKonE Profilo | Guru

Ti linko altri due post che potrebbero tornarti utili :

http://www.dotnethell.it/forum/messages.aspx?ThreadID=6394

http://www.dotnethell.it/forum/messages.aspx?ThreadID=6393


Poi vorrei sapere che procedura utilizzi per connetterti al DB...perchè non capisco dove tenti di modificare la famosa connectionstring.

Questo è un altro articolo molto interessante (secondo me ) che riguarda l'accesso ai dati con Vb .Net Express :
http://www.ilsoftware.it/articoli.asp?ID=3219

Puoi prendere spunto ricordandoti che la tua stringa di connessione è differente


Vedi anche qui : http://msdn2.microsoft.com/it-it/library/ms165732.aspx# (Cerca "Aggiungi connessione")

L'articolo è riferito a Visual Web Developer 2005 Express ma direi che la parte di accesso ai dati dovrebbe essere molto simile.

Ciao!
My Blog... http://blogs.dotnethell.it/Mark/

Jumpa Profilo | Junior Member

ma la proprieta connectionstring dell'oggetto SqlConnection a runtime non riesci a modificarla?

tipo che allo start up dell'applicazione ti fai una bella chiamata del tipo

conn.connectionstring = tuaStringadiconnessione

dove conn è l'oggetto SQLConnection

altra cosa ricordati quando installi sql2k5express che per default ha il tcpip disabilitato!
altra cosa ancora verifica bene le permission vedo che usi l'integrated security quindi verifica che l'utente windows sia riconosciuto sul server dove hai il db

spero di esserti stato d'aiuto

cia cia

Jumpa
-------------------------
Follow the White Rabbit...

http://www.jumpa.org
-------------------------

aintono Profilo | Junior Member

Notizie dal fronte:

Ragazzi io provo a fare il collegamento seguendo il procedimento descritto nell'articolo
http://www.ilsoftware.it/articoli.asp?ID=3219

solo che non riesco ad utilizzare un db che risiede in un'altra macchina.

ho installato sql2k5express e abilitato il tcp/ip.
VISUAL BASIC 2005 EXPRESS dalla finestra di selezione origine dati, non prende il db ospitato nell'altra macchina: mi da un errore in cui mi viene riferito che il percorso del db non è valido perchè contiene un percorso lan, esiste già, oppure perchè risiede in una condivisione UNC.
e dalla schermata non mi permette di modificare la stringa Data Source

Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Documents and
Settings\Administrator\Documenti\dbRemoto.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True

che a quanto ho letto, e capito dovrebbe essere del tipo:
Data Source=nomeserver\SQLEXPRESS;etc etc etc.



Un'altra dubbio mi perplime:
- devo copiare il db nella macchina ospitante in un percorso ben definito?
(installato sql2k5express)

Non pensavo fosse così complicato trasferire un db da locale a remoto..
Nessuno di voi potrebbe postarmi del codice-esempio di un windows form anche vuoto che si collega ad un db in LAN?

Ve ne sarei veramente grato..



Jumpa Profilo | Junior Member

vedo che fai l'attach "al volo" magari prova a copiarti i file mdf e ldf
fare un attach manuale sul server, e poi cambia la stringa di connessione con una di questo tipo

Data Source=[SERVER]\[NOME_ISTANZA];Initial Catalog=[NOME_DATABASE];User Id=[utente_sql];Password=[password_utente_sql;

SERVER = NOME O IP DEL COMPUTER DOVE RISIEDE IL DB
NOME ISTANZA = TIPICAMENTE SQLEXPRESS MA CI SONO MOLTI CASI IN CUI C'E' L'ISTANZA PREDEFINITA QUINDI PUOI TRALASCIARE QUESTO PARAMETRO
NOME_DATABASE=NOME DEL DB CHE HAI COLLEGATO
utente_sql=utente definito dentro sqlexpress


cia cia


Jumpa
-------------------------
Follow the White Rabbit...

http://www.jumpa.org
-------------------------

aintono Profilo | Junior Member

Ciao Jumpa!

Con Microsoft SQL Server Managment Studio Express riesco ad aprire dal client il servizio SQL avviato nel server, nessun problema di autenticazione e riesco ad aprire il db che ho collegato (che poi è quello dell'applicazione..).

Al momento che provo a selezionare la stringa per l'origine dati,
il VISUAL BASIC 2005 EXPRESS mi fa lavorare solo in locale (dato che non mi permette la modifica della connectionstring dal menu di selezione origine dati)




Ho capito perfettamente il tuo post di prima, ma il mio problema è sempre quello:

non capisco dove devo andare per modificare questa stringa di connessione.

Potrebbe essere un limite del VB 2005 EXPRESS non far selezionare (e permettere dunque) origini dati remote?

Dal menu origine dati, dove faccio l'attach non mi permette di selezionare il db remoto e per di più non mi viene data la possibilità di modificare la stringa!



aintono Profilo | Junior Member

Ragazzi avevo provato a fare un collegamento ad un db locale e modificare la stringa,adattandola per un db remoto


1024x768 110Kb



ma come si può vedere VB 2k5 express non mi permette la modifica della connectionstring nella finestra proprietà.

Più tempo passa, e più mi convinco che il problema è questo.

aintono Profilo | Junior Member

Mi hanno detto che non posso usare la user instance (AttachDbFileName) con file mdf che stanno su un altra macchina.
Quello che dovrei fare e' fare l'attach del DB sulla macchina che ospita sqlserver 2005 express

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=803792&SiteID=1

e poi mi dovrei connettere usando Data Source=nomeserver\SQLEXPRESS;etc etc etc.

(se solo sapessi le istruzioni per farlo )

Jumpa Profilo | Junior Member

allora

facendo le cose via codice devi fare una cosa del genere


Dim conn as new SqlConnection

conn.connectionString = tuastringadiconnessione

conn.open()

conn.close()

prova a fare questa cosina dietro ad un pulsante
e vedi se tutto gira
in tuastringadiconnessione mettici il server remoto

let me know
-------------------------
Follow the White Rabbit...

http://www.jumpa.org
-------------------------

aintono Profilo | Junior Member

Jumpa, non vorrei bagnarmi prima di piovere..ma forse ci siamo..

Adesso dopo aver sostituito la stringconnection nell'applicativo mi dice che l'utente non dispone delle autorizzazioni necessarie per svolgere questa operazione (semplice collegamento al db sql in remoto.)

uso autenticazione windows, mi consigli di passare ad autenticazione sql?
Se sì, dove come settare i privilegi dell'utente sql?


Se invece provo autenticazione SQL:
Questo è il messaggio di errore che mi viene inoltrato.


Impossibile eseguire l'accesso per l'utente 'gestionale'. L'utente non è associato a una connessione SQL Server trusted.

Stranamente, oggi sono molto ottimista!!

Che devo fare?

MarKonE Profilo | Guru

Scaricati questo comodissimo tool visuale per la gestione di SQL Server :

http://www.microsoft.com/downloads/details.aspx?displaylang=it&FamilyID=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796

Ciao
My Blog... http://blogs.dotnethell.it/Mark/

aintono Profilo | Junior Member

Ebbene sì, ragazzi!

Ce l'abbiamo fatta!!!

Ma sono in LAN, adesso ho paura a provare in remoto!!

Alla fine ho lavorato in locale con il db, ho fatto l'attach sempre in locale.
Poi sono andato sul server dopo aver fatto una copia identica del mio DB, l'ho collegato al servizio sql.

E sono riuscito ad accedere al db dal client, usando questa stringa:

Data Source=NOMESERVER\SQLEXPRESS;Initial Catalog=pbreak;Trusted_Connection=yes;

e se volessi accedere al SERVER inserendo l'ip?Per un'eventuale connessione remota?
Non credo mi basti sostituire il NOMESERVER con l'indirizzo!!
Se non dovesse andare, potrei utilizzare la connessione remota di win s2k3, VPN?

MarKonE Profilo | Guru

>e se volessi accedere al SERVER inserendo l'ip?

Secondo me non dovresti avere nessun problema...il nome è solo una comodità per noi umani che alla fine viene tradotto in indirizzo IP.

>Per un'eventuale connessione remota?

Attenzione a non bloccare la porta del servizio SQL.... per default è la 1433.


Ciao!
My Blog... http://blogs.dotnethell.it/Mark/

aintono Profilo | Junior Member

MarKonE quindi pensi che usando la stessa stringa, mettendo l'ip al posto di NOMESERVER potrei per es. riuscire a collegarmi al DB anche da casa?

MarKonE Profilo | Guru

>MarKonE quindi pensi che usando la stessa stringa, mettendo l'ip
>al posto di NOMESERVER potrei per es. riuscire a collegarmi al
>DB anche da casa?

Direi che senza blocchi da parte di firewall et similia non dovresti avere problemi ma........ da casa l'IP del server potrebbe essere diverso !

Ti colleghi in VPN ? Oppure attraverso internet ? Nel secondo caso dovresti conoscere l'indirizzo con cui viene pubblicato il tuo server....

Ciao!


My Blog... http://blogs.dotnethell.it/Mark/

aintono Profilo | Junior Member

Beh..vorrei collegarmi via internet, però potrei avere la possibilità di utilizzare una connessione VPN.

Ma l'autenticazione che avviene per accedere al DB SQL è di tipo Windows, non mi darà problemi accedendo da una postazione che non fa parte del Dominio?

Jumpa Profilo | Junior Member

con l'autenticaizone di windows da remoto
mi sa che te li dara proprio i problemi!!!
poi aggiungere degli utenti sql

cmq giusto per, io non esporrei il server sql su internet,
magari accedici dentro una vpn è di molto piu sicuro!
oppure scoatti e ci metti dei webservice davanti che espongono solo le funzioni che ti occorrono, ad esempio

_ws_select_from_tabella(clausola where) as dataset

cosi dall'applicazione richiami il webservice che ti ritorna un dataset



-------------------------
Follow the White Rabbit...

http://www.jumpa.org
-------------------------
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