none
Problema di connessione al DataBase dopo cambio OS RRS feed

  • Domanda

  • Come l'erba cattiva che non muore mai sono ritornato dopo una serie di vicissitudini che si riassumono con:

    Mancata connessione a MSDN per problemi con server MS, e ripristinato dopo due mesi.

    Crash del computer dovuto all'alimentatore con perdita di dati e MatherBoard, con conseguente cambio del tutto compreso il sistema operativo.

    Dopo aver ripristinato il tutto con aggiornamento (tra l'altro) a Win 7 - 64 bit pensavo di poter continuare a lavorare.

    Ho reinstallato VS 10, SQL Server Management e ho recuperato il DataBase, ma in nessun caso (ne con il programma sviluppato, ne con SQL Management) riesco a stabilire la connessione il database. Sono diversi giorni che mi ci stò sbattendo per capire cosa succede e poter così proseguire con lo sviluppo, ma non ne vengo a capo. Potete darmi qualche consiglio?

    Grazie Matylda

    lunedì 1 aprile 2013 15:01

Risposte

  • salve,

    a questo punto direi di aver compreso che SQL Compact non e' mai interessato... ed in questo senso, installando o revisionando l'installazione di SQL Server come indicato, potresti eventualmente disinstallare tutto cio' che riguarda SQL Compact... sempre che tu non lo usi diversamente... personalmente devo ammettere di averlo completamente rimosso... :)

    tornando al problema, la connessione che stai facendo si basa sulla tecnologia definita User Instance (http://msdn.microsoft.com/en-us/library/bb264564(v=sql.90).aspx,  http://msdn.microsoft.com/it-it/library/ms254504.aspx) a mio parere fortunatamente oramai deprecata :)... ha ovviamente dei punti di forza, tipo un utilizzo alla vecchia moda dei file Mdb di Access o di SQLite, ma a me solitamente non interessa (alla pari di LocalDB http://technet.microsoft.com/it-it/library/hh510202.aspx per SQL Express 2012) in quanto il supporto multiutente (nel senso di piu' utenti su macchine diverse) e' limitato/non supportato... detto cio', ogni istanza di SQL Server (a prescindere dal tipo) imposta un lock fisico restrittivo su ogni file di database da essa aperto... se non riesci a "copiare" il file via NTFS o, come nel caso in esame, ad aprire il db via una User Instance, molto probabilmente l'istanza di origine (sarebbe a dire l'istanza di SQL Express generica) mantiene il lock in quanto ha il file registrato al suo interno...

    quindi, prima di tutto, scegli che tipologia di connessione/attivita' desideri effettuare, cioe' se utilizzare una UserInstance oppure l'istanza tradizionale, perche' da questa scelta si aprono scenari di sicurezza non trascurabili e sicuramente diversi... (questo e' in effetti uno degli altri motivi per il quale concordo sul deprecamento delle User Instances, purtroppo pero' reintrodotti "dalla finestra" con LocalDB)... avarai quindi compreso il mio personale non apprezzamento di questa modalita' di utilizzo di SQL Server->User Instances :)

    saluti


    http://www.hotelsole.com/asql/index.php - DbaMgr2k - DbaMgr and further SQL Tools http://www.hotelsole.com/

    • Contrassegnato come risposta Matylda martedì 16 aprile 2013 14:47
    sabato 13 aprile 2013 15:00
    Moderatore

Tutte le risposte

  • Ciao, potresti descrivere esattamente il problema che riscontri in fase di connessione? Dove è situata l'istanza di SQL Server?
    lunedì 1 aprile 2013 16:00
    Moderatore
  • Ti ringrazio per l'intervento, ma credo che ti risponderò in un secondo momento. Colgo l'occasione per segnalare una anomalia nella gestione del traffico dei messaggi, ti/vi prego di guardare attentamente lo screen shot allegato e le noterete subito. Anche la volta scorsa iniziò con qualcosa di simile e poi si verificò il black out.

    non capisco. anche questo è un mistero. PERCHE' CAMBIA LE LINGUE??????


    lunedì 1 aprile 2013 16:57
  • A completamento della precedente! Non capivo chi mi aveva risposto.

    Grazie


    lunedì 1 aprile 2013 17:25
  • Si, sono tutti bug noti della piattaforma, già segnalati a chi gestisce il sistema ed attualmente in via di risoluzione.

    Per ulteriori informazioni ti consiglio di leggere questa discussione (dove è presente anche il link al forum inglese per la segnalazione di nuovi bug):

    http://social.technet.microsoft.com/Forums/it-IT/benvenutiofftopicit/thread/281ef6be-7f6e-4a49-8df4-0cc22ea763ed

    lunedì 1 aprile 2013 22:31
    Moderatore
  • Ti ringrazio per l'informazione. Mi sono spaventato perchè la prima volta che mi è successo sono rimasto taglito fuori dal forum per circa due mesi e la paura era, ed è, che questo succeda ancora.

    Torniamo al problema di collegamento.

    Il problema si presenta in due modi differenti.

    Da codice, quando il una form viene soddisfatta dapo un certo tempo e questa viene presentata vuota come se il DB al quale si è collegato fosse vuoto. La stringa di connessione non è mai stata modificata.

    Da SQL Server Management, cercando di connettermi al DB la risposta la puoi vedere nell'allegato screen shot.

    Non riesco a comprendere dove stò sbsgliando e dove sono le differenze rispetto a prima quando lavoravo coc Win XP a 32 bit, ma non credo sia questa la causa.

    Resto a tua disposizione

    Grazie matylda

    martedì 2 aprile 2013 07:17
  • Qual è la versione di SQL Server Compact? Quel messaggio di errore in Management Studio è normale se utilizzi la versione 4.


    martedì 2 aprile 2013 13:19
    Moderatore
  • Non sò quale versione stò utilizzando, ti allego le informazioni che ricavo dal ? di SQL Server Management

    spero possa essere utile.

    Non capisco, mi fa entrare e mi fa scegliere il file di database (mati01db.mdf) e poi non lo riconosce.

    Grazie per l'aiuto

    martedì 2 aprile 2013 14:31
  • No, mi riferisco alla versione di SQL di origine del file MDF. Te lo fa selezionare perché tutti i database hanno estensione MDF, ma all'interno il formato del file è differente. Se non sei a conoscenza di questa informazione prova a vedere se può esserti di aiuto questa discussione: http://social.msdn.microsoft.com/Forums/en-US/sqlsetupandupgrade/thread/3de5b574-0751-44a2-b69f-fa0c20378359/
    In alternativa: http://calyansql.blogspot.it/2012/06/dbcc-checkprimaryfile-attach-detach-mdf.html

    NB: In questi modi puoi anche verificare se il file MDF è corrotto.

    martedì 2 aprile 2013 15:31
    Moderatore
  • salve Fabrizio,

    chiedo una conferma.... nel Server Data Type relativo al dialogo di connessione con SSMS, Matylda ha indicato "SQL Server Compact"... probabilmente mi sono perso qualche cosa, ma a me non risulta che il Compact Engine possa leggere/utilizzare database generati dalle versioni "tradizionali" di SQL  Server (estensione standard di file ".Mdf") e mi parrebbe che l'eccezione riportata, "... File di database SQL Server Compact non valido ... " sia indicativa in tal senso... mi risultava anche che l'estensione di default dei database Compact fosse ".Sdf" e che ovviamente la struttura on disk dei file stessi non sia "intercambiabile"... ora, non conosco assolutamente il Compact Engine, ma direi "a naso" che per quanto riguarda SSMS bisogni cambiare il provider/server data type... ti risulta diversamente?

    saluti


    http://www.hotelsole.com/asql/index.php - DbaMgr2k - DbaMgr and further SQL Tools http://www.hotelsole.com/

    martedì 2 aprile 2013 16:56
    Moderatore
  • Grazie per gli interventi. In effetti il Db è stato generato con SQL express 2008 R2 e nella situazione precedente (con XP 32 bit e SQL Sever Mamagement) tutto funzionava correttament. Il fatto che io sia passato da 32 a 64 bit, a quanto mi risulta, non comporta preblemi, ne consegue che molto probabilmente si tratta della struttura dati tra Express e Compact. Nella mia ignoranza non saprvo di questa differenza strutturale e comunque pensavo che non influenzasse la gestione del Db in quanto di un unico provider (Microsoft). Detto questo, se così fosse, cosa potrei fare?! è possibile cambiare la struttura o SQLSM?!

    grazie matylda

    mercoledì 3 aprile 2013 08:02
  • salve Fabrizio,

    chiedo una conferma.... nel Server Data Type relativo al dialogo di connessione con SSMS, Matylda ha indicato "SQL Server Compact"... probabilmente mi sono perso qualche cosa, ma a me non risulta che il Compact Engine possa leggere/utilizzare database generati dalle versioni "tradizionali" di SQL  Server (estensione standard di file ".Mdf") e mi parrebbe che l'eccezione riportata, "... File di database SQL Server Compact non valido ... " sia indicativa in tal senso... mi risultava anche che l'estensione di default dei database Compact fosse ".Sdf" e che ovviamente la struttura on disk dei file stessi non sia "intercambiabile"... ora, non conosco assolutamente il Compact Engine, ma direi "a naso" che per quanto riguarda SSMS bisogni cambiare il provider/server data type... ti risulta diversamente?

    saluti


    http://www.hotelsole.com/asql/index.php - DbaMgr2k - DbaMgr and further SQL Tools http://www.hotelsole.com/

    Si, forse non mi ero spiegato correttamente. Tramite l'analisi del file MDF volevo cercare di capire proprio il tipo di struttura contenuta nel file, per cercare di fare chiarezza sulla problematica e su quello che stava provando a fare l'utente. Il fatto che diceva in passato di non avere problemi mi aveva fatto venire dei dubbi sulla tipologia del file MDF (ma sembra che alla fine sia proprio quello che sembrava, ovvero un database tradizionale di SQL Server).

    Da quello che mi risulta SQL Server 2008 R2 Management Studio può aprire file di SQL Server Compact 3.5 http://msdn.microsoft.com/it-it/library/ms174173(v=sql.105).aspx , comunque ti fa selezionare comunque anche file MDF perché è il formato unico dei database SQL Server, quindi teoricamente (ma non ho mai provato) dovrebbe essere possibile aprire file di SQL Server Compact con estensione MDF (basta che all'interno la struttura del database sia quella giusta). Ovviamente con questo non intendo assolutamente dire che la struttura sia intercambiabile, stavo solo cercando di capire la logica di quello che stava cercando di fare, quindi avevo ipotizzato un database SDF rinominato come MDF.

    mercoledì 3 aprile 2013 09:13
    Moderatore
  • salve Fabrizio,

    chiedo una conferma.... nel Server Data Type relativo al dialogo di connessione con SSMS, Matylda ha indicato "SQL Server Compact"... probabilmente mi sono perso qualche cosa, ma a me non risulta che il Compact Engine possa leggere/utilizzare database generati dalle versioni "tradizionali" di SQL  Server (estensione standard di file ".Mdf") e mi parrebbe che l'eccezione riportata, "... File di database SQL Server Compact non valido ... " sia indicativa in tal senso... mi risultava anche che l'estensione di default dei database Compact fosse ".Sdf" e che ovviamente la struttura on disk dei file stessi non sia "intercambiabile"... ora, non conosco assolutamente il Compact Engine, ma direi "a naso" che per quanto riguarda SSMS bisogni cambiare il provider/server data type... ti risulta diversamente?

    saluti


    http://www.hotelsole.com/asql/index.php - DbaMgr2k - DbaMgr and further SQL Tools http://www.hotelsole.com/

    Si, forse non mi ero spiegato correttamente. Tramite l'analisi del file MDF volevo cercare di capire proprio il tipo di struttura contenuta nel file, per cercare di fare chiarezza sulla problematica e su quello che stava provando a fare l'utente. Il fatto che diceva in passato di non avere problemi mi aveva fatto venire dei dubbi sulla tipologia del file MDF (ma sembra che alla fine sia proprio quello che sembrava, ovvero un database tradizionale di SQL Server).

    Da quello che mi risulta SQL Server 2008 R2 Management Studio può aprire file di SQL Server Compact 3.5 http://msdn.microsoft.com/it-it/library/ms174173(v=sql.105).aspx , comunque ti fa selezionare comunque anche file MDF perché è il formato unico dei database SQL Server, quindi teoricamente (ma non ho mai provato) dovrebbe essere possibile aprire file di SQL Server Compact con estensione MDF (basta che all'interno la struttura del database sia quella giusta). Ovviamente con questo non intendo assolutamente dire che la struttura sia intercambiabile, stavo solo cercando di capire la logica di quello che stava cercando di fare, quindi avevo ipotizzato un database SDF rinominato come MDF.

    Salve, da quanto ho potuto capire dovrei, in teoria, poter aprire e utilizzare il database sia da codice che da SQLSM, cosa che non riesco a fare. Come detto ho generato e gestito modificando, creando e cancellando tabelle utilizzando SQL Express 2008 R2 + SQLSM e non mai rinominato li mio file cambiandolo da da SDF a MDF anche perchè non saprei come fare per cambiare l'estensione.

    Quello che stò cercando di fare è semplicemente accedere al mio database sia via codice che attraverso SQL Server Management, ovviamente senza riuscirci e non capendo perchè

    Grazie per qualsiasi contributo

    matylda

    mercoledì 3 aprile 2013 15:49
  • Visto che hai un database classico di SQL Server 2008 R2 Express (e non ti trovi quindi nel caso che avevo ipotizzato) non capisco come poteva funzionare in precedenza in questo modo...sicuramente non potevi connetterti utilizzando SQL Server Compact e specificando il file di database in quel modo.

    Ricominciamo quindi da zero, dovresti installare la versione completa di SQL Server 2008 R2 Express (sul tuo computer o su un altro da utilizzare come server), importare il database ( http://msdn.microsoft.com/it-it/library/ms165673.aspx ) e poi provare ad eseguire la connessione all'istanza da Management Studio utilizzando "Motore database" o "Database engine". Una volta verificata la connessione puoi utilizzare il database per la connessione mediante altre applicazioni.



    mercoledì 3 aprile 2013 16:47
    Moderatore
  • salve,

    allora cerco di ricapitolare per mia comprensione, visto che l'eta' avanza...

    il db e' un database SQL Server tradizionale ( generato con SQL Server Express) e non un database SQL Server Compact Edition...

    se questo e' vero, al di la' del fatto che SQL Server Management Studio possa gestire entrambi i database, a mio parere, nel Server Data Type di connessione di SSMS va impostato "Database Engine" e NON "SQL Server Compact"...

    detto cio', relativamente alla connessione da codice, potresti indicarne la connection string? 

    saluti


    http://www.hotelsole.com/asql/index.php - DbaMgr2k - DbaMgr and further SQL Tools http://www.hotelsole.com/


    mercoledì 3 aprile 2013 17:33
    Moderatore
  • Si, probabilmente ha già anche il database engine installato ma per sicurezza ho preferito riscrivere la procedura completa, non si sa mai....comunque il fatto di cambiare Server Data Type mi ero dimenticato di specificarlo nella procedura (ora lo aggiungo), ma a questo punto mi sembrava ovvio visto che non è un database di SQL Server Compact....





    mercoledì 3 aprile 2013 19:53
    Moderatore
  • Grazie per i suggerimenti, ma non essendomi chiaro - visto la mia scarsa conoscenza - ho tentato la seguente strada:

    Trattandosi di un Db di sviluppo e avendo copia dei dati in più fogli EXCEL ho pensato di ricostruire il database, così ho creato un nuovo Db - Mati01DbNew - utilizzando SQLSMS, ricreando le strutture e popolando le tabelli con quanto contenuto nei fogli EXCEL.

    Conseguentemente ho aperto un nuovo progetto in Visual Studio cercando di collegarmi al nuovo Db ottenendo la risposta visibile nello snapshot allegato.

    da notare che la stessa risposta la ottengo anche se cerco di spostare il Db su un altro disco o una altra directory.

    Anche questo, per me, è un mistero.

    Venedo al tuo suggerimento, ovvero ripartire da zero installando SQL Server 2008 R2 Express, ti sarei grato se potessi indicarmi cosa posso e/o debbo rimuovere dalle mie installazioni delle quali ti allego uno stralcio ottenuto dal pannello di controllo.

    Ringrazio anticipatamente per l'aiuto. Vorrei continuare con lo sviluppo

    Cordialmente matylda


    • Modificato Matylda mercoledì 10 aprile 2013 19:26 reinvio
    mercoledì 10 aprile 2013 15:54
  • salve,

    a questo punto direi di aver compreso che SQL Compact non e' mai interessato... ed in questo senso, installando o revisionando l'installazione di SQL Server come indicato, potresti eventualmente disinstallare tutto cio' che riguarda SQL Compact... sempre che tu non lo usi diversamente... personalmente devo ammettere di averlo completamente rimosso... :)

    tornando al problema, la connessione che stai facendo si basa sulla tecnologia definita User Instance (http://msdn.microsoft.com/en-us/library/bb264564(v=sql.90).aspx,  http://msdn.microsoft.com/it-it/library/ms254504.aspx) a mio parere fortunatamente oramai deprecata :)... ha ovviamente dei punti di forza, tipo un utilizzo alla vecchia moda dei file Mdb di Access o di SQLite, ma a me solitamente non interessa (alla pari di LocalDB http://technet.microsoft.com/it-it/library/hh510202.aspx per SQL Express 2012) in quanto il supporto multiutente (nel senso di piu' utenti su macchine diverse) e' limitato/non supportato... detto cio', ogni istanza di SQL Server (a prescindere dal tipo) imposta un lock fisico restrittivo su ogni file di database da essa aperto... se non riesci a "copiare" il file via NTFS o, come nel caso in esame, ad aprire il db via una User Instance, molto probabilmente l'istanza di origine (sarebbe a dire l'istanza di SQL Express generica) mantiene il lock in quanto ha il file registrato al suo interno...

    quindi, prima di tutto, scegli che tipologia di connessione/attivita' desideri effettuare, cioe' se utilizzare una UserInstance oppure l'istanza tradizionale, perche' da questa scelta si aprono scenari di sicurezza non trascurabili e sicuramente diversi... (questo e' in effetti uno degli altri motivi per il quale concordo sul deprecamento delle User Instances, purtroppo pero' reintrodotti "dalla finestra" con LocalDB)... avarai quindi compreso il mio personale non apprezzamento di questa modalita' di utilizzo di SQL Server->User Instances :)

    saluti


    http://www.hotelsole.com/asql/index.php - DbaMgr2k - DbaMgr and further SQL Tools http://www.hotelsole.com/

    • Contrassegnato come risposta Matylda martedì 16 aprile 2013 14:47
    sabato 13 aprile 2013 15:00
    Moderatore