Σφάλμα επαναφοράς βάσης δεδομένων SQL Server: το καθορισμένο cast δεν είναι έγκυρο. (SqlManagerUI)

Χρησιμοποιώ τον SQL Server 2008 R2 Standard (έκδοση 10.50.1600.1) για τον δικτυακό τόπο παραγωγής μου και SQL Server Express edition with Advanced Services (v10.50.1600.1) για το localhost μου ως βάση δεδομένων.

Λίγες μέρες πριν, ο SQL Server μου κατέρρευσε και έπρεπε να εγκαταστήσω μια νέα έκδοση 2008 R2 Express στο localhost μου. Δούλεψε μια χαρά όταν αποκατέστησα κάποιες παλαιότερες εκδόσεις που προέρχονται από την έκδοση Express, αλλά όταν προσπαθώ να επαναφέρω τη βάση δεδομένων από το αρχείο .bak που προέρχεται από το διακομιστή παραγωγής, εμφανίζεται το ακόλουθο σφάλμα:

Error: Specified cast is not valid. (SqlManagerUI)

και όταν προσπαθώ να επαναφέρω τη βάση δεδομένων χρησιμοποιώντας την εντολή

Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:\Publications.bak'
WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'

Δημιουργεί ένα διαφορετικό σφάλμα

Msg 3154, Επίπεδο 16, Κατάσταση 4, Γραμμή 1 Το σετ αντιγράφων ασφαλείας περιέχει αντίγραφο ασφαλείας μιας βάσης δεδομένων διαφορετικής από την υπάρχουσα βάση δεδομένων 'Publications'.
Msg 3013, Επίπεδο 16, Κατάσταση 1, Γραμμή 1 Η επαναφορά βάσης δεδομένων τερματίζεται ανώμαλα.

Έχω διασταυρώσει τις εκδόσεις. Όλες μου φαίνονται να ταιριάζουν, όπως φαίνεται στην παρακάτω εικόνα

Προηγουμένως κατάφερα να επαναφέρω μια βάση δεδομένων από την τυπική έκδοση στην έκδοση express, αλλά τώρα αποτυγχάνει. Διέγραψα τη βάση δεδομένων και προσπάθησα να την αναδημιουργήσω. Και αυτό αποτυγχάνει επίσης.

Δεν είμαι σίγουρος τι κάνω λάθος. Θα εκτιμούσα τη βοήθεια σε αυτό το θέμα όσον αφορά

Το πρόβλημα επιλύθηκε καθώς φαίνεται ότι το αρχείο .bak ήταν κατεστραμμένο. Όταν το δοκίμασα με ένα διαφορετικό αρχείο λειτούργησε.

Θα μπορούσε να οφείλεται στην επαναφορά του αρχείου αντιγράφων ασφαλείας της έκδοσης SQL Server 2012 σε SQL Server 2008 R2 ή ακόμα λιγότερο.

Σχόλια (5)
Λύση

Το γραφικό περιβάλλον μπορεί να είναι ευμετάβλητο μερικές φορές. Το σφάλμα που πήρατε όταν χρησιμοποιήσατε την T-SQL οφείλεται στο γεγονός ότι προσπαθείτε να αντικαταστήσετε μια υπάρχουσα βάση δεδομένων, αλλά δεν καθορίσατε να αντικαταστήσετε/αντικαταστήσετε την υπάρχουσα βάση δεδομένων. Τα ακόλουθα μπορεί να λειτουργήσουν:

Use Master
Go
RESTORE DATABASE Publications
  FROM DISK = 'C:\Publications_backup_2012_10_15_010004_5648316.bak'
  WITH 
    MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
    MOVE 'Publications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
, REPLACE -- Add REPLACE to specify the existing database which should be overwritten.
Σχόλια (6)

Τελικά το σφάλμα εξαφανίστηκε με μια επαναφορά. Μετακόμισα στην SQL2012 από απογοήτευση, αλλά υποθέτω ότι αυτό θα λειτουργούσε πιθανώς και στην 2008R2. Έπρεπε να χρησιμοποιήσω τα λογικά ονόματα:

RESTORE FILELISTONLY
FROM DISK = ‘location of your.bak file’

Και από εκεί έτρεξα μια δήλωση επαναφοράς με MOVE χρησιμοποιώντας λογικά ονόματα.

RESTORE DATABASE database1
FROM DISK = '\\database path\database.bak'
WITH
MOVE 'File_Data' TO 'E:\location\database.mdf',
MOVE 'File_DOCS' TO 'E:\location\database_1.ndf',
MOVE 'file' TO 'E:\location\database_2.ndf',
MOVE 'file' TO 'E:\location\database_3.ndf',
MOVE 'file_Log' TO 'E:\location\database.ldf'

Όταν ολοκληρώθηκε η επαναφορά, σχεδόν έκλαψα από χαρά.

Καλή τύχη!

Σχόλια (0)