2009-05-29 17 views
6

Come posso collegare un database senza un file LDF in SQL Server?Come allegare un database senza un file LDF?

+1

Basta aggiungere che si può ottenere un database incoerente facendo questo. È molto meglio collegarlo con l'LDF originale. Vedere https://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/15/632398.aspx –

risposta

8

È possibile utilizzare sp_attach_single_file_db per collegare un database in cui manca il suo file di registro.

+0

Si dà questo errore: Impossibile aprire il nuovo database 'SharedCS'. CREATE DATABASE è stato interrotto. Errore di attivazione del dispositivo. Il nome del file fisico 'd: \ Programmi \ Microsoft SQL Server \ MSSQL \ data \ dummy_Log.LDF' potrebbe non essere corretto. – Ricardo

+0

Non provare ad allegare un ceppo fittizio. Puoi pubblicare il comando sp_attach_single_file_db che stai utilizzando? –

+1

Questo funziona solo se il file di registro può essere creato di nuovo dove il .mdf dice che lo è. – Joshua

1

Si può "solo farlo", ma si avverte che non è stato possibile trovare il file .ldf, ma continuerà a collegare il db.

+0

Segnala un errore e il database non è collegato. – Ricardo

3

Puoi provare cosa viene pubblicato here da MohammedU. Fondamentalmente, cosa usa il comando DBCC REBUILD_LOG. Funzionerà a seconda della versione del tuo server.

Ecco i passaggi (senza dettagli):

  1. rinominare file mdf esistente per .mdf_old
  2. Creare un nuovo database con lo stesso .mdf e il file LDF come vecchio.
  3. Arrestare il server sql
  4. Rinomina mdf e ldf file del nuovo db per .mdf_old e .ldf_old
  5. Rinomina .mdf_old per Mdf
  6. Inizio sql server
  7. Si dovrebbe vedere db in modalità sospetto
  8. Modificare il contesto del database su Principale e consentire aggiornamenti alle tabelle di sistema
  9. Impostare il database in modalità Emergenza (ripristino bypass).
  10. Arrestare e riavviare il server SQL.
  11. Ricostruisci il registro.
  12. Impostare il database in modalità utente singolo ed eseguire DBCC CHECKDB per convalidare la coerenza fisica.
  13. Disattiva gli aggiornamenti alle tabelle di sistema.
+1

Come si eseguono i passaggi da 8 a 13? –

1

In caso di problemi, verificare che il file mdf non sia di sola lettura.

0
EXEC sp_attach_single_file_db @dbname = 'DBNAME',@physname = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\DBNAME_Data.mdf'; 

Ho provato e ha funzionato ... Speriamo che questo aiuti.

3

provare questo passi attraverso SQL Server Management Studio

  1. Aperte SSMS e ha fatto un click destro su basi di dati.
  2. Seleziona Allega opzione
  3. Quindi fare clic su aggiungi per allegare file MDF.
  4. Selezionare il file dall'elenco e fare clic su Ok
  5. Ora lo schermo mostra file MDF e LDF file (Non trovato)
  6. scegliere il file LDF e fare clic su opzione Rimuovi.
  7. Dopo aver rimosso il file LDF, fare clic su OK.
  8. Il file MDF è stato inserito correttamente nell'elenco dei database.
+0

Questo non funziona per me. Puoi suggerire un'altra soluzione? –

+0

ecco un ottimo articolo su [come allegare mdf senza ldf] (http: //www.sqlserverlogexplorer.com/how-to-attach-mdf-file-senza-ldf-file /) –

3

Provare ad allegarlo aggiungendo il file MDF alla finestra di dialogo Allega database. Noterai che la finestra di dialogo riporterà il file LDF mancante.Seguire la procedura come mostrato in figura:

enter image description here

+1

In SQL Server 2012 non funzionerà. Provai. –

+0

Funziona per me su 2012 Express – Juan

1

Qui ci sono frammenti di codice per creare file programaticaly

ldf seguito sono 3 metodi.

Metodo -1

Nel mio caso ho la mia base di dati nella cartella DATA.

È possibile ottenere il percorso completo al database facendo clic destro e poi andare alle proprietà allora si può copiare il percorso completo al database

come nel mio cammino caso è il seguente.

C: \ Programmi \ Microsoft SQL Server \ MSSQL11.DRIBBLEE \ MSSQL \ DATA

Ora qui è Primo metodo utilizzando procedura di memorizzazione (sp_attach_single_file_db) e passando argomenti (nome del database e percorso fisico)

USE [master] 
GO 

EXECUTE sp_attach_single_file_db 
@dbname='AdventureWorksDW_2012', 
@physname=N'C:\ProgramFiles\MicrosoftSQLServer\MSSQL11.DRIBBLEE\MSSQL\DATA\AdventureWorksDW2012_Data.mdf' 

GO 

eseguire il codice dopo l'esecuzione del codice passare alla cartella del database in cui risiede vedrete file .ldf creato laggiù.

Tuttavia otterrete seguente messaggio nella tua

The physical file name "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorksDW2012_log.ldf" may be incorrect. 
New log file 'C:\Program Files\Microsoft SQL Server\MSSQL11.DRIBBLEE\MSSQL\DATA\AdventureWorksDW_2012_log.ldf' was created. 

Ora è possibile collegare il database e dopo il collegamento del database fare clic destro sul nome del server in Esplora oggetti e aggiornare.

Metodo-2

se il database ha uno o più file di registro mancanti È possibile utilizzare seguente

CREATE DATABASE db_namehere ON 
(
    FILENAME=N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\db_namehere.mdf') 

FOR ATTACH_REBUILD_LOG 
GO 

Metodo-3

Se database è solo un registro file missig puoi usare questo

CREATE DATABASE db_name ON 
(FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\TestDb.mdf') 
FOR ATTACH 
GO 

Inoltre puoi leggere in LIBRI online per ottenere maggiori informazioni.

Problemi correlati