Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come allegare MDF senza file di registro?

Per la tua situazione iniziale, sembra che tu abbia provato qualcosa del genere (o qualunque cosa la GUI ti prepari quando esegui le finestre di dialogo):

CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH;

Tuttavia, questo metodo richiede sia un mdf file e un ldf file. In caso contrario, viene visualizzato un messaggio di errore simile a:

Ora, c'è un modo per procedere anche se hai solo il mdf file. Supponendo che tu abbia un mdf file che è stato correttamente staccato da SQL Server, dovresti essere in grado di allegare il mdf file senza un file di registro utilizzando la seguente sintassi:

CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH_REBUILD_LOG;

Tuttavia, sembra che nel tuo caso il file non sia stato scollegato correttamente da SQL Server:

Ci sono diverse possibili spiegazioni, comprese quelle menzionate nel messaggio di errore. Forse è stato recuperato da qualche SAN shadow non valido, o staccato durante la sola lettura, o ripristinato dopo che SQL Server o il sistema sottostante si sono arrestati in modo anomalo, o danneggiato durante la copia/download, o chissà cos'altro.

Dovrai tornare al supporto di Yaf, o al supporto del suo fornitore di servizi, per vedere se ci sono backup corretti disponibile o, in mancanza, copie alternative del mdf file. Tieni inoltre presente che nessuno di noi sa davvero cosa sia Yaf o ha un modo per verificare di quale Yaf stai parlando.

Altrimenti, sembra che tu sia sfortunato, dato che questo particolare mdf il file non è valido e quindi non ti porterà molto lontano.

Questo è esattamente il motivo per cui gli approcci di scollegamento / collegamento e/o copia di file a livello di O/S non sono metodi molto utili di backup (o migrazione, se è per questo) per SQL Server. È necessario un piano di backup/ripristino adeguato, il che significa eseguire backup completi/diff/log adeguati alla propria tolleranza alla perdita di dati. E staccare un database è quasi sempre un'idea scadente - quando succede qualcosa a mdf file durante o dopo lo scollegamento, ora hai ZERO copie del tuo database.