PDA

View Full Version : [SQL Server] Accedere a db su un'altra macchina


DickValentine
29-10-2008, 10:38
Salve a tutti,
Sto sviluppando un'applicazione con Visual Studio 2008 in C# che interagisce con un server che gira su SQL Server. Finora ho lavorato con il db che gira sulla mia stessa macchina, ma vorrei provare a farlo girare su un'altro pc collegato in rete. Ho provato a copiare il file che contiene il db in una cartella condivisa in rete e ho cambiato la stringa di connessione con l'indirizzo del db sull'altro pc ma quest'approccio non funziona. Ammetto che il tentativo è stato piuttosto niubbo, sapreste suggerirmi un modo più professionale per risolvere il problema?:p

vizzz
29-10-2008, 13:20
Salve a tutti,
Sto sviluppando un'applicazione con Visual Studio 2008 in C# che interagisce con un server che gira su SQL Server. Finora ho lavorato con il db che gira sulla mia stessa macchina, ma vorrei provare a farlo girare su un'altro pc collegato in rete. Ho provato a copiare il file che contiene il db in una cartella condivisa in rete e ho cambiato la stringa di connessione con l'indirizzo del db sull'altro pc ma quest'approccio non funziona. Ammetto che il tentativo è stato piuttosto niubbo, sapreste suggerirmi un modo più professionale per risolvere il problema?:p

mhhh bhe...devi installare sql server sull'altro pc.
poi crei un dump del db e lo replichi dall'altra parte.

DickValentine
29-10-2008, 13:30
mhhh bhe...devi installare sql server sull'altro pc.
poi crei un dump del db e lo replichi dall'altra parte.

sql server sull'altro pc c'è. Suggerimenti sul dump del db? Come lo creo? In che directory lo copio? Come lo faccio 'vedere' al server? Per me il nodo principale è la connection string nel programma client... Il server SQL va configurato per essere visibile agli altri pc?

Einstein
29-10-2008, 14:20
Un database SQL server non è formato da un unico file, ma:

1. un datafile con estensione .mdf (master data file)
2. eventuali datafiles aggiuntivi con estensione .ndf
3. un file di transaction log con estensione .ldf

se vuoi portare un database SQL Server da una macchina ad un'altra puoi:

1. eseguire il detach del database dalla macchina "origine", copiare tutti i datafiles che compongono il database sulla macchina "destinazione" e eseguire l'attach
2. Fare un full backup del database sulla macchina "origine", copiare il file di backup sulla macchina "destinazione" ed eseguire un restore.

In entrambi i casi i datafiles non vanno mai messi in uno share di rete o in un drive mappato (a meno che non si tratti di dispositivi NAS o SAN).
Ricorda anche che i logins dovranno essere presenti su entrambi i server, se vuoi mantenere i permessi assegnati agli oggetti del db.

DickValentine
29-10-2008, 14:47
Credo di essere riuscito a copiare il db su un altro pc e anche a farlo 'girare'. Il problema è che entrambe le macchine non riescono a interagire con i server sql che girano sull'altra macchina. Forse il server non è configurato per essere condiviso. Qualche suggerimento? :help:

Einstein
29-10-2008, 15:04
Se usi SQL Server 2005, esegui il tool "Surface Area Configuration" che trovi nel menù Start e verifica che il server possa accettare connessioni remote.
Se invece usi SQL Server 2008, apri Management Studio, vai nelle proprietà del server, e alla voce "Connections" abilita "Allow remote connections to this server".

DickValentine
30-10-2008, 18:13
Se usi SQL Server 2005, esegui il tool "Surface Area Configuration" che trovi nel menù Start e verifica che il server possa accettare connessioni remote.
Se invece usi SQL Server 2008, apri Management Studio, vai nelle proprietà del server, e alla voce "Connections" abilita "Allow remote connections to this server".

Ho attivato le connessioni remote, ma pare che non riesca a connettermi da un altro pc:
"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: Provider TCP, error: 0 - Impossibile stabilire la connessione. Rifiuto persistente del computer di destinazione.)"

La connection string che sto utilizzando è questa:
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;

Comincio a pensare che sia questione di permessi di accesso al server...qualcuno ha idea di come debba configurarli?:help:

cionci
30-10-2008, 20:41
Hai aperto la porta di SQL Server sul firewall integrato in Windows ? L'utente che usi nella connection string ha la possibilità di connettersi anche da remoto ?

DickValentine
30-10-2008, 21:23
Hai aperto la porta di SQL Server sul firewall integrato in Windows ?

mmm no, mi diresti come fare a controllare? e cmq se ho il firewall disattivato dovrebbe passare tutto no?

L'utente che usi nella connection string ha la possibilità di connettersi anche da remoto ?

Come faccio a sapere questa cosa? E eventualmente come faccio a dare il permesso all'utente? Scusa la niubbagine, ma è la prima volta che uso un DB in una applicazione:stordita:

cionci
30-10-2008, 21:29
mmm no, mi diresti come fare a controllare? e cmq se ho il firewall disattivato dovrebbe passare tutto no?
Se è disattivato passa tutto.
Come faccio a sapere questa cosa? E eventualmente come faccio a dare il permesso all'utente? Scusa la niubbagine, ma è la prima volta che uso un DB in una applicazione:stordita:
Purtroppo non sono aggiornato con SQL Server :( Non ti posso aiutare.

Einstein
31-10-2008, 09:49
Usi la versione Express di SQL Server su entrambe le macchine?

DickValentine
31-10-2008, 21:59
Usi la versione Express di SQL Server su entrambe le macchine?

Su entrambe c'era SQL Server 2005, ma quando ho installato VS2008 Express mi pare che abbia aggiornato anche SQL Server:stordita:

Cmq ho aperto la porta 1433 ma non è servito a nulla, proverò a disattivare tutto il firewall...

Einstein
04-11-2008, 08:31
Se la macchina remota ha SQL Server Express, verifica che il servizio SQL Browser sia attivo, e sulla connection string devi specificare il nome della named instance (di default <nomepc>\SQLExpress) e non l'indirizzo IP.
Verifica anche che almeno il protocollo TCP/IP sia abilitato per SQL Server (di default è abilitato solo il protocollo Shared Memory).