Connessione da EXCEL a SQLExpress da computer remoto dentro lan

martedì 09 giugno 2009 - 11.11

jfk Profilo | Newbie

Ciao a tutti. Ho un computer windows XP dal quale lavoro. Vi gira SQLEXPRESS
2005. Un piccolo server web e delle pagine che prendono dati da tale DB.

Via web tutto funziona in maniera ottimale.
Adesso viene il problema:

Devo far accedere via EXCEL utenti al mio DB. Ho fatto l'attachment del DB
mediante MS SQL Server Managemente Studio Express.

Ho fatto Tasto destro sull'instanza SQLEXPRESS-> Protezione ed ho impostato:
Autenticazione di SQL Server e di Windows.

Ho creato un utente (adminz) gli ho dato da "autorizzazioni" tutti i
permessi possibili.
Ho riavviato l'instanza (per sicurezza).

Adesso (DAL MIO PC) apro excel e faccio: connetti a SQL Server metto
ip117\SQLEXPRESS nome utente adminz pass xxyyxx85 do invio e tac, mi
visualizza le tabelle. Da taskManager SQLSERVER gira come servizio di rete!

Se vado in un altro computer, apro excel, e compio le stesse azioni mi dà
errore..
(ip117 è il mio nome computer, ma ho provato anche con l'ip no ncambia)

Che cosa sbaglio??

Sono nelle vostre mani spero mi possiate aiutare!

JFK.

lbenaglia Profilo | Guru

>Devo far accedere via EXCEL utenti al mio DB. Ho fatto l'attachment
>del DB
>mediante MS SQL Server Managemente Studio Express.

Ciao jfk,

Ma il db non era già collegato all'istanza, altrimenti come faceva la web app ad accedervi?

>Ho fatto Tasto destro sull'instanza SQLEXPRESS-> Protezione
>ed ho impostato:
>Autenticazione di SQL Server e di Windows.
>
>Ho creato un utente (adminz) gli ho dato da "autorizzazioni"
>tutti i
>permessi possibili.
Questo è male. Se qualcuno ti buca il sito o il server sarà in grado di farti danni incalcolabili.
Bisogna SEMPRE assegnare le permission minime necessarie a raggiungere un certo scopo.

>Ho riavviato l'instanza (per sicurezza).
Non era necessario.

>Adesso (DAL MIO PC) apro excel e faccio: connetti a SQL Server
>metto
>ip117\SQLEXPRESS nome utente adminz pass xxyyxx85 do invio e
>tac, mi
>visualizza le tabelle. Da taskManager SQLSERVER gira come servizio
>di rete!
>
>Se vado in un altro computer, apro excel, e compio le stesse
>azioni mi dà
>errore..
Quale?

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

jfk Profilo | Newbie

Instanza: si la era ovviamente era per far capire che l'avevo fatto :)
Auth: si lo so, volevo togliermi in fase di test il problema delle autorizzazioni, quando vedo che funziona metto solo i permessi giusti
Riavvio: lo so, hai presente quando uno non sà più dove battere la testa? :P

L'errore è il seguente:

[DBNETLIB][ConnectionOpen (Connect()).]Server SQL inesistente o accesso negato.

Il server e l'instanza sono corretti, in locale mi entra..

Grazie di tutto comunque Lorenzo.

jfk Profilo | Newbie

Secondo me è un problema di raggiungibilità... Il firewall è disattivato sul mio pc. Però se vado su un'altra postazione e faccio telnet mioip 1433 non mi si connette.
Addirittura nemmeno se faccio dalla mia macchina telnet localhost 1433 mi và...

Devo abilitare qualcosa?

lbenaglia Profilo | Guru

>Secondo me è un problema di raggiungibilità... Il firewall è
>disattivato sul mio pc. Però se vado su un'altra postazione e
>faccio telnet mioip 1433 non mi si connette.
>Addirittura nemmeno se faccio dalla mia macchina telnet localhost
>1433 mi và...

Se non hai indicato alla istanza denominata di utilizzare la porta statica 1433 quasi sicuramente stai utilizzando una porta dinamica.
Però prima hai scritto che dal tuo PC riesci ad autenticarti all'istanza remota, quindi lato server la configurazione è corretta.

Verifica sul client che ti sta dando problemi se hai abilitato il protocollo TCP/IP tramite la Client Network Utility (cliconfg.exe) che puoi lanciare da una shell DOS.

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

jfk Profilo | Newbie

Ciao Lorenzo, la porta è sicuramente quella anche perchè ho seguito un tuo vecchissimo post:

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

La cosa è sempre piu strana: dalla mia postazione (ossia dove è installato SQLEXPRESS) se faccio: telnet 192.168.2.79 1433 mi dà

Connessione a 192.168.2.79...Impossibile aprire una connessione con l'host.
Sulla porta 1433: Connessione non riuscita.

Poi ho provato a fare:
netstat -no , ma non vedo la porta 1433 LISTENING (cioè non vedo proprio la 1433)
Ho fatto cliconfg.exe sulla mia macchina (che è anche server) e ho abilitato TCP/IP ma continua a non andare.
Sono sicuro che SQL giri altrimenti non vedo come possa funziona la parte web (anche da altri pc).

Non capisco hai qualche suggerimento?...

lbenaglia Profilo | Guru

>Ciao Lorenzo, la porta è sicuramente quella anche perchè ho seguito
>un tuo vecchissimo post:
>
>http://www.dotnethell.it/forum/messages.aspx?ThreadID=10971
OK

>La cosa è sempre piu strana: dalla mia postazione (ossia dove
>è installato SQLEXPRESS)
Questo non si era capito. Pensavo che SQL Server risiedesse su un server diverso "dal tuo".

se faccio: telnet 192.168.2.79 1433
>mi dà
>
>Connessione a 192.168.2.79...Impossibile aprire una connessione
>con l'host.
>Sulla porta 1433: Connessione non riuscita.
Che IP è?

>Poi ho provato a fare:
>netstat -no , ma non vedo la porta 1433 LISTENING (cioè non vedo
>proprio la 1433)
Allora significa che SQL Server non sta ascoltando su quella porta.

>Ho fatto cliconfg.exe sulla mia macchina (che è anche server)
Che significa "che è anche server"?
Puoi gentilmente riassumere i PC in gioco e dove risiede SQL Server? Non ci sto capendo più niente...

>Sono sicuro che SQL giri altrimenti non vedo come possa funziona
>la parte web (anche da altri pc).
Dov'è installata la web app? Sullo stesso PC che ospita SQL Server o su una macchina remota?

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

jfk Profilo | Newbie

Allora Lorenzo ti aggiorno e ti chiarisco (e scusami se non lo sono stato):

Il pc dal quale ti scrivo, lavoro è un xp con ip 192.168.2.79 il cui hostname è IP117 che ha sopra sqlexpress e webapp (iis).

Su questo pc si deve connettere una collega dalla sua postazione (siamo in dominio win2003) mediante excel.

Nel frattempo, con un bel riavvio, ho risolto il problema delle porte. Adesso la 1433 è li in ascolto e se faccio telnet 192.168.2.79 1433
Oppure telnet ip117 1433 da qualsiasi postazione entro che è un piacere. (nel senso che mi dà schermata nera ma nella socket sono entrato)

Adesso:
Sulla mia postazione apro excel: importa dati - SQL Server come nome server mett: IP117\sqlexpress come nome utente metto adminz come password metto xxyyzz premo su connetti e puf mi appaiono le tabelle.

Se dalla postazione del collega (excel2002) faccio la stessa musica mi dà errore. L'errore di prima.
Il che è strano perchè adesso il server è effettivamente raggiungibile...

jfk Profilo | Newbie

Ma infatti ora che ci penso.. come fà excel a sapere su quale porta inoltrare le richieste?
Esiste qualcosa tipo un proxy legato all'instanza sql?

tipo tutto quello che và : ip117\sqlexpress metti su 1433 e cosi via

altrimenti faccio un prerouting sulla macchina locale.. ma qualcosa deve esistere di pre fatto... adesso cerco

lbenaglia Profilo | Guru

>Sulla mia postazione apro excel: importa dati - SQL Server come
>nome server mett: IP117\sqlexpress come nome utente metto adminz
>come password metto xxyyzz premo su connetti e puf mi appaiono
>le tabelle.
In locali utilizzi il protocollo shared memory.
Il tuo collega invece dovrà utilizzare TCP/IP.

Rileggi con molta attenzione il post che hai linkato, rieseguendo passo passo tutti i passaggi.

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

jfk Profilo | Newbie

Ciao Lorenzo. Ho trovato la soluzione mentre mangiavo un panino qualche minuto fà :)

Ho abilitato il servizio: SQL Server Browser. Adesso, tutto funziona bene (anche se ancora devo testare a fondo questo servizio).
In locale mi funzionava appunto perchè utilizzavo la shared memory.

Grazie del contributo e complimenti per il link di prima :)

Jack

lbenaglia Profilo | Guru

>Ciao Lorenzo. Ho trovato la soluzione mentre mangiavo un panino
>qualche minuto fà :)
>
>Ho abilitato il servizio: SQL Server Browser. Adesso, tutto funziona
>bene (anche se ancora devo testare a fondo questo servizio).
Se hai dovuto abilitare il SQL Server Browser significa che NON hai impostato una porta statica per l'istanza denominata, quindi al riavvio del servizio ti potrà essere sganciata una porta differente. Questo non è un problema se il firewall del server è configurato con una eccezione sul servizio SQL Server, diversamente se hai definito una eccezione sulla porta TCP è probabile che ti saranno inibite le connessioni dai client.

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

jfk Profilo | Newbie

Guarda Lorenzo, ho allegato uno zip contenente l'immagine della mia conf. tcp-ip.
Vedi se ho tralasciato qualcosa :)

Grazie di tutto!
Davvero.

jfk Profilo | Newbie

Ah, ps. spero di non aver infranto qualche regola del forum se ho aggiunto un allegato. Alcuni forum non lo permettono :)

lbenaglia Profilo | Guru

>Guarda Lorenzo, ho allegato uno zip contenente l'immagine della
>mia conf. tcp-ip.
>Vedi se ho tralasciato qualcosa :)
No è a posto.
A questo punto mi viene il dubbio che nella connection string vai ancora a specificare il nome dell'istanza (SQLEXPRESS).
Impostando una porta statica (tra cui proprio quella di default), lato client è sufficiente specificare il nome netbios, di dominio o l'IP del server remoto, SENZA il nome dell'istanza. In questo modo non è necessario avviare il servizio SQL Server Browser.

>Grazie di tutto!
Prego.

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

jfk Profilo | Newbie

Adesso tutto è ok a livello di raggiungibilità, anche senza impostare l'instanza!
C'è una cosa che però non riesco a capire, magari ne sai qualcosa in più di me (anche se magari non è il tuo campo)

Questa sintassi:

Set cn = CreateObject("ADODB.Connection")

With cn
.CursorLocation = 1
.Open "Provider=SQLNCLI;" & _
"Server=IP117;" & _
"Database=CEG;" & _
"Trusted_Connection=yes;"
End With

Nel mio excel 2007 funziona in quello della mia collega dice impossibile trovare il provider...
Da cosa può dipendere?

lbenaglia Profilo | Guru

>Da cosa può dipendere?
Ti ho risposto su it.sql.
In futuro non aprire lo stesso thread in mille posti diversi.

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

jfk Profilo | Newbie

Grazie di tutto!
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