none
Riottenere dati da mdf RRS feed

  • Domanda

  • Salve a causa di un problema sull' hd e successiva reinstallazione dell'os abbiamo ricaricato una copia del file mdf ed ldf di un db contenente i dati di un applicativo per la gestione dei clienti. L'operazione però non ha sortito alcun effetto in quanto non riusciamo a "vedere" i dati relativi alle tabelle. C'è modo di far vedere ad una nuova installazione di SQL un db che girava su altra macchina?

    grazie anticipatamente

    martedì 26 novembre 2013 20:23

Risposte

  • La versione 539 dei datafiles è quella di SQL Server 2000.

    • SQL Server 7.0 databases have version number 515
    • SQL Server 2000 databases have version number 539
    • SQL Server 2005 databases have version number 611/612
    • SQL Server 2008 databases have version number 655

    e non è possibile fare l'attach diretto di un database SQL Server 2000 in SQL Server 2012, ma sei obbligato a passare prima da una versione "intermedia" (almeno SQL Server 2005).

    Potresti installare SQL Server 2008 R2 Express e fare l'attach in quell'istanza; questo porterà i tuoi datafiles alla versione 655. A questo punto, puoi fare il detach da SQL 2008 e poi l'attach alla tua istanza SQL 2012.

    HTH


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org


    • Modificato Alberto Dallagiacoma giovedì 28 novembre 2013 22:04
    • Proposto come risposta GastoneCanali giovedì 28 novembre 2013 23:05
    • Contrassegnato come risposta GoG_ venerdì 29 novembre 2013 10:41
    giovedì 28 novembre 2013 22:03

Tutte le risposte

  • La nuova installazione di SQL è di una versione inferiore a quella installata nell'os reinstallato? SQL ha dato qualche errore nella attach del file mdf ?? L'utente con cui leggete i dati possiede i permessi necessari ?
    martedì 26 novembre 2013 22:13
  • Prima rispondi a Giangypoi sono curioso, come hai fatto a ricaricarlo?


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere

    martedì 26 novembre 2013 22:37
  • Onestamente non saprei se la versione è più aggiornata o meno dato che non so che versione era il vecchio SQL , credo che comunque quella di ora o sia la stessa o sia più aggiornata. Il fatto è che l'applicativo su base SQL l'ho trovato già qua anni fa e siccome tutto viene fatto da front-end non me ne sono mai preoccupato. Per quanto riguarda l'attach non saprei dirti nel senso che ho semplicemente rimesso il file sotto c:\microsoft sql\data e null'altro. Per i permessi , idem, non credo possano essere gli stessi perchè questa è una nuova installazione e personalmente (ma credo anche gli altri qui in azienda) non ho i dati dell'utente sa dato che appunto non l'ho realizzata io e non me ne sono mai occupato.

    Se comunque ho capito bene come prima cosa dovrei fare un attach e poi dirvi che tipo di errore mi da , esatto? Mi documento su Attach dato che non ho mai usato sql e provo.

    Se avete altre idee ditemele pure , grazie!

    mercoledì 27 novembre 2013 08:59
  • Non conoscendo la versione con cui era stato creato il db , ho appena scaricato ed installato

    Sql Server 2012 express ed sql managemente studio, provo a fare un attach e vi dico che errore mi da

    mercoledì 27 novembre 2013 10:48
  • Ciao,

    Se il problema sull'hdd non ha compromesso l'integrità dei files, puoi fare l'attach del database sulla nuova istanza seguendo la procedura descritta qui:

    http://technet.microsoft.com/en-us/library/ms190209.aspx

    Se l'attach viene fatto su una versione più recente di SQL Server rispetto a quella di origine, i datafiles saranno aggiornati in automatico dopo l'attach.

    HTH,


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org



    mercoledì 27 novembre 2013 13:31
  • Ecco l'errore nel tentativo di fare un attach

    TITOLO: Microsoft SQL Server Management Studio
    ------------------------------

    Impossibile eseguire Collega database per Server 'testsrv\SQLEXPRESS'.  (Microsoft.SqlServer.Smo)

    Per visualizzare le informazioni della Guida, fare clic qui: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=11.0.2100.60+((SQL11_RTM).120210-1846+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Collega+database+Server&LinkId=20476

    ------------------------------
    ULTERIORI INFORMAZIONI:

    Eccezione durante l'esecuzione di un'istruzione o un batch Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

    ------------------------------

    Impossibile aggiornare il database 'CSPDB_0010010877I0' perché è di una versione non rilasciata (539) non supportata dalla versione di SQL Server in uso. Impossibile aprire un database incompatibile con questa versione di sqlservr.exe. Ricreare il database.
    Impossibile aprire il nuovo database 'CSPDB_0010010877I0'. L'istruzione CREATE DATABASE è stata interrotta. (Microsoft SQL Server, errore: 950)

    Per visualizzare le informazioni della Guida, fare clic qui: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=950&LinkId=20476

    ------------------------------
    PULSANTI:

    OK
    ------------------------------

    Io ho reinstallato la versione 2012 di sql server express

    giovedì 28 novembre 2013 16:59
  • La versione 539 dei datafiles è quella di SQL Server 2000.

    • SQL Server 7.0 databases have version number 515
    • SQL Server 2000 databases have version number 539
    • SQL Server 2005 databases have version number 611/612
    • SQL Server 2008 databases have version number 655

    e non è possibile fare l'attach diretto di un database SQL Server 2000 in SQL Server 2012, ma sei obbligato a passare prima da una versione "intermedia" (almeno SQL Server 2005).

    Potresti installare SQL Server 2008 R2 Express e fare l'attach in quell'istanza; questo porterà i tuoi datafiles alla versione 655. A questo punto, puoi fare il detach da SQL 2008 e poi l'attach alla tua istanza SQL 2012.

    HTH


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org


    • Modificato Alberto Dallagiacoma giovedì 28 novembre 2013 22:04
    • Proposto come risposta GastoneCanali giovedì 28 novembre 2013 23:05
    • Contrassegnato come risposta GoG_ venerdì 29 novembre 2013 10:41
    giovedì 28 novembre 2013 22:03
  • Ma dovrei sempre avere le credenziali del vecchio db no? se dici che non servono mi procuro un 2005/2008 express e faccio la prova
    venerdì 29 novembre 2013 09:39
  • La versione 539 dei datafiles è quella di SQL Server 2000.

    • SQL Server 7.0 databases have version number 515
    • SQL Server 2000 databases have version number 539
    • SQL Server 2005 databases have version number 611/612
    • SQL Server 2008 databases have version number 655

    e non è possibile fare l'attach diretto di un database SQL Server 2000 in SQL Server 2012, ma sei obbligato a passare prima da una versione "intermedia" (almeno SQL Server 2005).

    Potresti installare SQL Server 2008 R2 Express e fare l'attach in quell'istanza; questo porterà i tuoi datafiles alla versione 655. A questo punto, puoi fare il detach da SQL 2008 e poi l'attach alla tua istanza SQL 2012.

    HTH


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org


    Grazie mille , messo il 2008 fatto un attach ed ora va. Una sola curiosità , ma per vedere i db di sql server non servono le credenziali? come mai riesco a vedere tutto?

    Grazie ancora.

    venerdì 29 novembre 2013 10:42
  • Usando un account amministrativo (durante il setup puoi specificare quali sono gli utenti sysadmin dell'istanza), puoi fare attach e accedere al database senza particolari problemi.

    Se poi vuoi anche ripristinare i logins dell'istanza originale, puoi usare questo script specifico per migrare i login da SQL Server 2000 a versioni successive:

    http://support.microsoft.com/kb/246133/en-us

    Ovviamente, devi avere accesso all'istanza di origine.

    HTH


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org

    venerdì 29 novembre 2013 10:43
  • Dipende con quale utente fai login all'istanza e quali ruoli/permessi ha quel login. Se usi un utente che ha ruolo di sysadmin sull'istanza, con quell'utente puoi fare qualsiasi cosa, sia sull'istanza che sui vari database.
    Se non ricordo male, fino ad una certa versione di SQL Server, gli utenti appartenenti al gruppo Administrators di Windows erano automaticamente sysadmin.


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org

    venerdì 29 novembre 2013 10:54
  • Io avevo capito che ogni mdf era cifrato e che su quell'mdf poteva accedere solo chi aveva permessi su sql sul quale girava.. per cui prendendo un mdf da altro pc non c'era modo di farlo andare.. Praticamente se qualcuno accede al pc e si fa una copia , si installa un sql server con permessi admin vede tutto . Confermate?

    Grazie

    venerdì 29 novembre 2013 11:22
  • Sì, vero, a meno che tu non cifri il contenuto del db in un qualche modo, anche usando le funzionalità native di SQL Server:

    http://technet.microsoft.com/en-us/library/bb510663.aspx

    In ogni caso, considerando un database critico per la sicurezza, se un utente qualsiasi può:

    1. Accedere al database server.
    2. Avere le credenziali di un account che possa fare detach o backup dei database.
    3. Possa eventualmente accedere al dispositivo usato per i backup.

    Il problema di sicurezza c'è molto prima di arrivare a SQL Server. :-)

    http://technet.microsoft.com/en-us/library/bb283235.aspx

    HTH


    Alberto Dallagiacoma
    My Italian Blog: http://blogs.ugidotnet.org/alby
    Twitter: http://twitter.com/albertodall
    DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org


    sabato 30 novembre 2013 18:36
  • Ok grazie!! la mia domanda sorgeva perchè tempo fa ebbi un problema simile con Lotus e li non riuscii a risolvere.

    Grazie ancora per le risposte

    lunedì 2 dicembre 2013 18:00