sintomo:

Quando si tenta di allegare un database .MDF in SQL Server, viene visualizzato il seguente messaggio di errore:

Impossibile recuperare i dati per questa richiesta. (Microsoft.SqlServer.Management.Sdk.Sfc)

Si è verificata un'eccezione durante l'esecuzione di un'istruzione o un batch Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

xxx.mdf non è un file di database primario. (Microsoft SQL Server, Errore: 5171)

dove 'xxx.mdf è il nome del file MDF da allegare.

Screenshot del messaggio di errore:

Screenshot dell'errore "File di database non primario"

Spiegazione precisa:

I dati nel file MDF sono memorizzati come pagine, ogni pagina è 8KB. La prima pagina è chiamata pagina di intestazione del file, che contiene il file most informazioni importanti sull'intero file, come la firma del file, la dimensione del file, la compatibilità, ecc. Le pagine rimanenti contengono anche le informazioni importanti, comprese le informazioni sull'allocazione della pagina e i dati effettivi.

Se la pagina di intestazione del file MDF o altre importanti pagine di gestione sono danneggiate o corrotte e non possono essere riconosciute da Microsoft SQL Server, poi SQL Server penserà che l'intero file non sia un file di database primario valido e segnalerà questo errore.

Puoi usare il nostro prodotto DataNumen SQL Recovery per recuperare i dati dal file MDF corrotto e risolvere questo errore.

File di esempio:

Esempio di file MDF corrotti che causeranno l'errore:

SQL Server versione File MDF corrotto File MDF riparato da DataNumen SQL Recovery
SQL Server 2005 Errore1_1.mdf Errore1_1_fixed.mdf
SQL Server 2008 R2 Errore1_2.mdf Errore1_2_fixed.mdf
SQL Server 2012 Errore1_3.mdf Errore1_3_fixed.mdf
SQL Server 2014 Errore1_4.mdf Errore1_4_fixed.mdf