Connessione a sql Server dal client

martedì 21 febbraio 2006 - 20.33

escaflowne Profilo | Junior Member

Ciao a tutti,
vorrei chiedervi una mano su un problema che mi affligge:
Ho sviluppato un programmino in vb.net utilizzando un database in sql server 2003 express, adesso vorrei provare a mettere il database su una macchina che fa da server ed installare il programmino su di un client (stesso dominio) che acceda al server ogni volta che serve di connettersi al db.
Il fatto è che installando il programma sul client devo, dinamicamente creare la stringa di connessione.
Come faccio?
L'ultima volta che ho sviluppato con db usavo access e mi bastava impostare la stringa di connessione e basta, qui, invece, mi sembra essere più complicato.
Mi date qualche consiglio? (anche di come far accettare al db la connessione dal client)
Grazie a tutti

sanbiz Profilo | Senior Member

>Ciao a tutti,
>vorrei chiedervi una mano su un problema che mi affligge:
>Ho sviluppato un programmino in vb.net utilizzando un database
>in sql server 2003 express,
?? Non usi SQL Server 2005 EXPRESS ???
>adesso vorrei provare a mettere il
>database su una macchina che fa da server ed installare il programmino
>su di un client (stesso dominio) che acceda al server ogni volta
>che serve di connettersi al db.
>Il fatto è che installando il programma sul client devo, dinamicamente
>creare la stringa di connessione.
>Come faccio?
>L'ultima volta che ho sviluppato con db usavo access e mi bastava
>impostare la stringa di connessione e basta, qui, invece, mi
>sembra essere più complicato.
Non è più complicato, semplicemente la stringa di connessione è differente.

Posso immaginare che tu abbia utilizzato oggetti tipo BindingNavigator, BindingSource, DataSet ecc, presi dalla barra degli strumenti di vb.net e che ti gestiscono automaticamente le connessioni al database ancora in fase di sviluppo. Giuso?

Se è il tuo caso, probabilmente avrai anche un oggetto "connection", sempre creato automaticamente.
Nel tuo progetto non devi far altro, in fase di inizializzazione (comunque prima di aprire ogni comunicazione col server) dovrai modificare la proprietà .connectionstring con i valori che ti servono.
Ad esempio.
Per una Trusted connection
Data Source=NOMESERVER;Initial Catalog=NOMEDATABASE;Integrated Security=SSPI;

Per una connessione NON Trusted
Data Source=NOMESERVER;Initial Catalog=NOMEDATABASE;User=USERNAME;PWD=PASSWORD;

Ricorda che se usi SQL Server 2005 EXPRESS dovrai specificare il nome del server comprensivo di dominio Data Source=DOMINIO\NOMESERVER

>Mi date qualche consiglio? (anche di come far accettare al db
>la connessione dal client)
Beh, qui devi creare delle logins per accedere al server SQL ed associarle agli users del tuo database con i diritti necessari.

Ricorda, inoltre, di abilitare i protocolli tcp-ip sul server per poterti connettere da un client in rete.


--
Sandro Bizioli

trinity Profilo | Guru

ti posto questo link...su questo sito troverai ogni tipo ndi connessione ai database..

www.connectionstrings.com

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

escaflowne Profilo | Junior Member

Prima di tutto ti ringrazio per la riposta.
Per quanto riguarda la stringa di connessione, credo, dovrebbe essere abbastanza fattibile la costruzione dinamica (magari cercando dinamicamente di trovare il nome del server).
Il dubbio è su ciò che è necessario per poter far funzionare il collegamento fra il programma sul client e il db sul server.
A quanto ho capito dovrei installare sql server express sul server (uso il 2003) ma mi spaventa la necessaria impostazione (al di la dell'abilitazione del tcp ip che, ho visto su msdn, si può attivare già in fase di installazione) per accettare le connessioni del client (il timore mi deriva dal fatto che, per far funzionare il tutto sul'unica macchina di sviluppo, ho dovuto faticare un po')
Vorrei, insomma, creare un installer che si preoccupasse di tutto....chiedo troppo?
Ciao

trinity Profilo | Guru

Comunque sql server express ha già un'installer che tranquillamente puoi installarlo su qualsiaisi sistema...sarebbe una versione limitata del nuovo sql server 2005 che nelle altre versioni è conosciuto con il nome di MSDE 2000

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

escaflowne Profilo | Junior Member

versione limitata che, credo, sia più che sufficiente per il collegamento fra client (dove risiede il programma sviluppato) e server (dove risiede il database), giusto?

In pratica devo:
Sul SERVER installare sql server express 2005 sul server, far accettare la connessione tcp ip, copiare il database
Sul CLIENT installare il programma e fare in modo che costruisca la stringa di connessione dinamicamente (con l'indirizzo ip del server)

Giusto?
Serve altro?
Grazie

trinity Profilo | Guru

Installa sql server express o msde anche sul client e connetti al Server dove risiede il database con l'autenticazione Windows..Teoricamente è più sicuro il modello di autenticazione Windows dato che si appoggia a Kerberos, il protocollo di autenticazione utlilizzado da Windows 2000+ ma a volte è necessario ricorrere alla SQL Authentication.

Le performance sono strettamente riconcucibili al provider che intendi utilizzare. Meno "strati software" ci sono, più efficiente sarà il colloquio tra client e server.
Se utilizzi SQL Server 2005 adotta il SQL Native Client OLE DB Provider che oltre ad essere molto efficiente, ti permette di sfruttare tutte le nuove funzionalità introdotte in questa versione.

SQL Authentication potresti utilizzarla se devi connetterti ad un server remoto....via internet per esempio ma puoianche utilizzarlo nel tuo caso...comunque ti posto questo link, datti una letta per informazione..

http://www.carlprothman.net/Default.aspx?tabid=86#SQLClientManagedProvider

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

escaflowne Profilo | Junior Member

ok, credo di aver capito.
La cosa nuova, che non immaginavo, è che devo, quindi, installare sql express anche sui client.
Ti ringrazio per le informazioni

trinity Profilo | Guru

Ma nache prima avveniva così se utilizzi la connessione con autenticazione windows il programma per connettersi al database locale o remoto che sia ha bisogno del servizio sqlserver installato sul pc..

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

escaflowne Profilo | Junior Member

no è che è la prima volta che utilizzo sqlserver

trinity Profilo | Guru

Tranquillo...sul sito che ti ho indicato nel post precedente ossia www.connectionstrings.com se utilizzi sqlserver, ti consiglio la connessione: Autenticazione Windows(Trusted Connection)...Ti ho spiegato anche il perchè ed ovviamente su entrambi i pc devi installare il servizio sqlserver..

Autenticazione in SQL Server

SQL Server supporta due tipi di autenticazione :

*

Autenticazione SQL
*

Autenticazione Windows (Trusted è la modalità di default con cui viene installato SQL)

Autenticazione Windows

Se l’utente già ha effettauto il log-on nel dominio windows tramite ticket Kerberos il sistema operativo puo’ chiedere a SQL di accettare tale autenticazione consentendo l’accesso all’ utente sulla base di tali credenziali.

Una connessione di questo tipo è chiamata connessione trusted.

Autenticazione SQL

Se l’utente non è stato autenticato nel dominio , oppure si collega a SQL specificando l’account di protezione SQL , SQL Server 2000 verifica che la userid e la password siano presenti nella tabella sysxlogins e quindi concedere o negare l’accesso.

L’autenticazione SQL risulta pero’ un po’ piu’ svantaggiosa perche’ non supporta del blocco dell’account dopo un certo numero di tentativi di accesso falliti e non supporta di tante altre policy per la gestione delle password.

L’ autenticazione di SQL di default NON crittografa la userid e password di collegamento , per far questo bisogna far si che le librerie di rete client usino SSL tramite l’utility Configurazione di rete di SQL Server.

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

escaflowne Profilo | Junior Member

perfettamente chiaro!
Si, sicuramente è meglio la trusted visto che è molto più sicura.
Allora provo in questo modo. Grazie mille!!!

trinity Profilo | Guru

Di nulla

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

umberto.brighetti Profilo | Newbie

Scusate la domanda ma io ho provato con tutte le stringhe di connessione a SQL 2005 (ODBC e OLE DB) su un'applicazione Access ma non riesco a farlo funzionare...

questo è il mio codice

Db.TableDefs.Delete XTabDest

Set TD = Db.CreateTableDef(XTabDest)

TD.Connect = “Driver={SQL Native Client};Server=UB;Database=ABC;Uid=sa;Pwd=nessuna;”

TD.SourceTableName = XTabOrig

Db.TableDefs.Append TD

mi viene il dubbio che il problema sia il DAO
con queste connessioni è obbligatorio usare ADO?

l'unica stringa che funziona è "ODBC;DATABASE=ABC;DSN=ABC;UID=SA;PWD=nessuna"
ma ho il problema che ogni volta che accedo alla tabella ne devo scollegare e ricollegare altrimenti mi chiede sempre l'autenticazione
c'è modo di evitarla?!?!

Vi prego aiutatemi!!!!! Grazie
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