none
accedere a db da client RRS feed

  • Domanda

  • Ciao a tutti,

    ho un problema con un accesso da parte di un client (W7) verso un server (WS2008R2).

    Ho configurato una LAN in questo modo:

    - un server con WS2008 con installato SQLServer2008 e configurato tutto per accessi remoti

    - installato piccolo applicativo in C# sui 4 client che punta al Db sul server

    Dai client riesco ad accedere alle cartelle sul server, perché ho creato un gruppo e dato autorizzazioni.

    E da un client, quello con cui ho cominciato a testare l'applicativo in c#, funziona tutto ok, faccio le mie estrazioni e vedo i dati.

    Invece dagli altri client no, l'applicativo non raggiunge il Db.

    Non riesco a capire che prove fare, visto che i 4 client sono in AD e infatti entro nelle cartelle

    e il db, invece, è raggiungibile solo da un client e gli altri no. La conn string è identica.

    Suggerimenti?

    grazie

    mille

    venerdì 13 dicembre 2013 06:24

Risposte

  • Risolto!

    C'era una relazione su sqlserver in produzione che si chiamava in modo diverso da quella che avevo sul DB in sviluppo.

    Da un client accedevo perché probabilmente non usavo quel tipo di estrazione di dati.

    Ora che tutte le relazioni sono corrette tutti i pc accedono.

    L'errore è nato perché si è messo mano al DB in sviluppo e nonostante si sia ricreata la relazione tra due tabelle, sqlserver l'ha rinominata in modo diverso.

    Io vedevo reale la relazione sia su sviluppo che in produzione, ma non si chiamava nello stesso modo e quindi EF non accedeva.

    Grazie lo stesso per aiuto

    saluti

    • Contrassegnato come risposta duppino sabato 8 febbraio 2014 11:18
    sabato 8 febbraio 2014 11:18

Tutte le risposte

  • l'istanza di SQL Server è configurata per accettare l'autenticazione integrata di Windows o l'autenticazione SQL o entrambe ?

    nella connection string usi l'autenticazione integrata o delle credenziali ad-hoc ?


    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    venerdì 13 dicembre 2013 10:00
    Moderatore
  • Ciao Edoardo,

    come dicevo nel post precedente, da uno dei 4 client funziona benissimo, non ho problemi.

    A titolo informativo l'accesso è mixed....

    Comunque, se accedo con uno dei 4 client, non credo sia problema di accesso sql server..


    invece, la conn string è questa:

        <add name="dbEntities" connectionString="metadata=res://*/Models.Db.csdl|res://*/Models.Db.ssdl|res://*/Models.Db.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=192.168.1.205,1433;Network Library=DBMSSOCN;Initial Catalog=db;User ID=id_utente;Password=pass_utente;MultipleActiveResultSets=True;Application Name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

    Attendo suggerimenti per trovare l'inghippo...

    grazie mille

    saluti



    • Modificato duppino venerdì 13 dicembre 2013 12:41
    venerdì 13 dicembre 2013 12:33
  • E' possibile effettuare dei test per capire il perché?

    grazie

    domenica 15 dicembre 2013 17:12
  • Ciao,

    ok gli altri client hanno una connessione identica, ma sei certo che debbano averla proprio identica? 

    Ad esempio la connection che vedo mi sembra quella creata da VS per un DB First, se la usi ad esempio con Code First avrai dei problemi.

    Magari chiarisci anche cosa intendi per "dagli altri no", perché potrebbe anche non essere un problema di accesso al db, ma un problema di altra natura sul software client.

    Ti consiglio come prima cosa a provare ad accedere dai vari client con Sql management studio (o dal tool "esplora server" di VS stesso), in questo modo saprai se si tratta di un problema sul client (inteso come macchina) o sul software (programma client).

    domenica 15 dicembre 2013 20:29
  • scrivi una connection string più corta come questa

        <add name="LocalSqlServer" connectionString="Data Source=[nome del tuo server sql];Integrated Security=SSPI;Initial Catalog=[nome del tuo database]" providerName="System.Data.SqlClient"/>
    


    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    lunedì 16 dicembre 2013 08:30
    Moderatore
  • scrivi una connection string più corta come questa

        <add name="LocalSqlServer" connectionString="Data Source=[nome del tuo server sql];Integrated Security=SSPI;Initial Catalog=[nome del tuo database]" providerName="System.Data.SqlClient"/>


    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    Ciao Edoardo,

    il problema è che usa una stringa semplice come quella proposta non riuscirà ad utilizzare EF DB (o Model) First, ma potrà utilizzarlo solo con EF Code First. Sempre ammettendo che la deve usare con EF, ma a giudicare dalla stringa che ha postato lui si tratta proprio di EF DB (o Model) First.

    lunedì 16 dicembre 2013 12:33
  • Si infatti.. è la stringa che mi ha prodotto VS2010 in app.config appena ho aggiunto il mio edmx nel progetto.

    Uso C# 4.0, e anche il FW è 4.

    Non oso provare perché credo che non mappi ssdl e msl dell'entità.

    Comunque, quello che mi chiedo è: ma se lo installo su una macchina va. Perché non deve andare se lo installo su un'altra macchina? E' come se esteticamente non gli piacciono i pc :)

    Grazie

    lunedì 16 dicembre 2013 14:41
  • ma nella tua stringa qui

    User ID=id_utente;Password=pass_utente;

    hai un vero utente e una password ?


    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    lunedì 16 dicembre 2013 15:08
    Moderatore
  • Si. è l'utente che ho creato negli accessi di SqlServer.

    L'ho creato in sqlserver e l'ho mappato sul db interessato.

    lunedì 16 dicembre 2013 16:39
  • Hai fatto la prova di collegarti da ogni singola macchina che non va con un client SQL? senza passare per il software che hai scritto, senza EF ecc., solo da client SQL per capire se il problema sta nella macchina o nel software.
    lunedì 16 dicembre 2013 17:06
  • No. Allora appena ho un attimo installo Management Studio e vedo come si comporta. Poi ti dico.

    grazie per adesso

    lunedì 16 dicembre 2013 20:16
  • Fai questi test:

    Disattiva i firewall di tutte le macchine

    Attiva SQL browser sulla macchina server

    se sei in un dominio verifica che tutte le macchine siano trusted.

    Ciao

    Davide


    Davide

    mercoledì 18 dicembre 2013 19:53
  • Non vorrei passare per incompetente, anche perché lavoro su SQL da quasi 10 anni senza problemi con tante connessioni concorrenti, ma che lingua è?

    EF, DB, First? Ci siamo messi a parlare per acronimi pure noi italiani?

    Cos'è una stringa "semplice"?

    e una complessa?

    Ciao


    Davide

    mercoledì 18 dicembre 2013 19:56
  • Non vorrei passare per incompetente, anche perché lavoro su SQL da quasi 10 anni senza problemi con tante connessioni concorrenti, ma che lingua è?

    EF, DB, First? Ci siamo messi a parlare per acronimi pure noi italiani?

    Cos'è una stringa "semplice"?

    e una complessa?

    Ciao


    Davide

    Ciao,

    sulla prima domanda non è chiaro cosa intendi, se è una domanda retorica nel senso che potrei essermi espresso in un italiano a te non gradito, allora mi dispiace. 

    Se invece la domanda era seria, allora immagino che sia da unire con la seconda, la terza, e la quarta. Stiamo parlando di programmazione .NET, in particolare di ADO.NET. EF sta per Entity Framework, DB sta per database, e First non è una parola buttata li a caso, ma bensì parte di un nome di un approccio di EF, ovvero in Model First, con questo si progetta il modello prima (ovvero si crea un file "mappa" della struttura da adottare), e da questo si costruisce il database. Invece in Code First si crea il codice ed in base a questo si crea automaticamente il database.

    Per la quinta domanda, non mi pare che noi italiani non usiamo regolarmente gli acronimi.

    Per stringa semplice intendo una stringa di connessione "pura", ovvero priva della sezione di metadati che EF usa per mappare i dati dal file .edmx.

    Per stringa complessa si potrebbe intendere quella con i metadati.

    venerdì 20 dicembre 2013 15:11
  • Ciao a tutti,

    ho fatto una prova, invece di installare Management Studio.

    Ho creato, per la macchina che mi da problemi, un piccolo applicativo che fa una open, legge e chiude il DB.

    Tutto ok, funziona. La stringa usata è questa:

    Data Source=192.168.1.205,1433;Network Library=DBMSSOCN;Initial Catalog=db;User ID=id_utente;Password=pass_utente;

    Invece, con la stringa che ho messo nel post in alto (il terzo post), non va.

    quindi non è problema di server/autenticazioni, altrimenti non entrerei neanche con la prima stringa.

    E' un problema di app.config, secondo me.

    Bah.. mistero..

    venerdì 17 gennaio 2014 16:36
  • Ciao a tutti,

    ho fatto una prova, invece di installare Management Studio.

    Ho creato, per la macchina che mi da problemi, un piccolo applicativo che fa una open, legge e chiude il DB.

    Tutto ok, funziona. La stringa usata è questa:

    Data Source=192.168.1.205,1433;Network Library=DBMSSOCN;Initial Catalog=db;User ID=id_utente;Password=pass_utente;

    ecco perchè ho suggerito il 16 dicembre una string connection molto più semplice.

    quella che hai postato tu al terzo post è una stringa che va analizzata e soprattutto va valutato se quesi parametri sono effettivamente necessari oppure superflui.

    un consiglio veloce: prova la funzionalità della tua app con la stringa semplice ed eventualmente la integri.


    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    sabato 18 gennaio 2014 18:42
    Moderatore
  • Ciao,

    che il problema stava probabilmente lato software (nel fatto che usi EF Model First) era abbastanza chiaro fin dalla mia prima risposta (quella del 15/12), successivamente confermato poi dai test e da te. Ora il punto è che facendo una connessione diretta nel database giustamente funziona (il problema non sta nella configurazione del database), ma usando Model First con la connessione creata da Visual Studio sei costretto ad usare quella "complessa" che hai mostrato... che io sappia non puoi semplificarla (a meno che non passi a Code First, in quel caso usi la stringa che ti pare), pena : il modello non funzionerà! 

    Ora, appurato che il problema non è di configurazione del database, non rimane che capire perché su altre macchine LO STESSO (almeno così sembra di capire) identico codice non vada...

    Sei certo che si tratti dello stesso codice? stesso setup o comunque modo di "installare" il software? tutto identico?

    domenica 19 gennaio 2014 13:57
  • Risolto!

    C'era una relazione su sqlserver in produzione che si chiamava in modo diverso da quella che avevo sul DB in sviluppo.

    Da un client accedevo perché probabilmente non usavo quel tipo di estrazione di dati.

    Ora che tutte le relazioni sono corrette tutti i pc accedono.

    L'errore è nato perché si è messo mano al DB in sviluppo e nonostante si sia ricreata la relazione tra due tabelle, sqlserver l'ha rinominata in modo diverso.

    Io vedevo reale la relazione sia su sviluppo che in produzione, ma non si chiamava nello stesso modo e quindi EF non accedeva.

    Grazie lo stesso per aiuto

    saluti

    • Contrassegnato come risposta duppino sabato 8 febbraio 2014 11:18
    sabato 8 febbraio 2014 11:18
  • grazie del feedback :)

    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    domenica 9 febbraio 2014 15:05
    Moderatore