2009-05-29 1 views
6

Jak mogę dołączyć bazę danych bez pliku LDF w SQL Server?Jak załączyć bazę danych bez pliku LDF?

+1

Trzeba tylko dodać, że można uzyskać niespójną bazę danych. O wiele lepiej jest dołączyć go do oryginalnego LDF. Zobacz https://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/15/632398.aspx –

Odpowiedz

8

Możesz użyć sp_attach_single_file_db, aby załączyć bazę danych, w której brakuje jej pliku dziennika.

+0

Daje ten błąd: Nie można otworzyć nowej bazy danych "SharedCS". CREATE DATABASE zostało przerwane. Błąd aktywacji urządzenia. Fizyczna nazwa pliku "d: \ Program Files \ Microsoft SQL Server \ MSSQL \ data \ dummy_Log.LDF" może być niepoprawna. – Ricardo

+0

Nie próbuj dołączać fałszywego dziennika. Czy umieścisz polecenie sp_attach_single_file_db, które używasz? –

+1

Działa to tylko wtedy, gdy plik dziennika można utworzyć od nowa w miejscu, w którym znajduje się .mdf. – Joshua

1

Możesz "po prostu to zrobić" to spowoduje ostrzeżenie, że nie może znaleźć pliku .ldf, ale nadal będzie dołączać db.

+0

Daje błąd i baza danych nie jest dołączona. – Ricardo

3

Możesz spróbować, co jest opublikowane here przez Mohammeda. Zasadniczo, co używa komendy DBCC REBUILD_LOG. Będzie działać w zależności od wersji twojego serwera.

Oto kroki (bez szczegółów):

  1. zmiany istniejącej nazwy pliku .mdf do .mdf_old
  2. Utwórz nową bazę danych z tego samego pliku .mdf i .ldf jako starego.
  3. Zatrzymaj serwer sql
  4. Rename pliki .mdf i ldf nowego db do .mdf_old i .ldf_old
  5. Rename .mdf_old do .mdf
  6. Uruchom SQL Server
  7. Powinieneś zobaczyć w db tryb podejrzeń
  8. Zmień kontekst bazy danych na Główny i zezwól na aktualizację tabel systemowych.
  9. Ustaw bazę danych w trybie awaryjnym (odzyskiwanie boczne).
  10. Zatrzymaj i zrestartuj serwer SQL.
  11. Przebuduj dziennik.
  12. Ustaw bazę danych w trybie pojedynczego użytkownika i uruchom komendę DBCC CHECKDB, aby sprawdzić poprawność spójności fizycznej.
  13. Wyłącz aktualizacje do tabel systemowych.
+1

Jak zrobić kroki od 8 do 13? –

1

Jeśli napotkasz problemy, sprawdź, czy plik mdf nie jest przeznaczony tylko do odczytu.

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

Próbowałem i zadziałało ... Mam nadzieję, że to pomaga.

3

Spróbuj tej czynności przez SQL Server Management Studio

  1. Otwartych SSMS i popełnił prawym przyciskiem myszy na bazach danych.
  2. Wybierz opcję Dołącz
  3. Następnie kliknij przycisk Dodaj, aby załączyć plik MDF.
  4. Wybierz plik z listy, a następnie kliknij przycisk OK
  5. Teraz ekran pokazuje plik MDF i LDF plik (nie znaleziono)
  6. wybrać LDF Plik i kliknij opcję Usuń.
  7. Po usunięciu pliku LDF kliknij OK.
  8. Plik MDF dołączony pomyślnie na liście baz danych.
+0

To nie działa dla mnie. Czy możesz zaproponować inne rozwiązanie? –

+0

tutaj jest świetny artykuł o [jak dołączyć mdf bez ldf] (http: //www.sqlserverlogexplorer.com/how-to-attach-mdf-file-without-ldf-file /) –

3

Spróbuj dołączyć, dodając plik MDF do okna dialogowego Dołącz bazy danych. Zauważysz, że okno dialogowe zgłosi brakujący plik LDF.Wykonaj kroki, jak pokazano na rysunku:

enter image description here

+1

W SQL Server 2012 to nie zadziała. Próbowałem. –

+0

To działa dla mnie na 2012 express – Juan

1

Oto Fragmenty kodu do programaticaly tworzyć .ldf plików

Poniżej 3 Metody.

Metoda -1

W moim przypadku mam bazę danych w folderze danych.

można uzyskać pełną ścieżkę dostępu do bazy danych poprzez kliknięcie prawym przyciskiem myszy, a następnie przechodząc do właściwości następnie można skopiować pełną ścieżkę dostępu do bazy danych

jak w moim przypadku ścieżka jest następująca.

C: Program Files \ \ Microsoft SQL Server \ MSSQL11.DRIBBLEE \ MSSQL \ DATA

Teraz tutaj jest pierwsza metoda stosując procedurę możliwy (sp_attach_single_file_db) i przekazując jej argumenty (nazwa bazy danych i fizycznej path)

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 

Wykonaj kod po wykonaniu kodu przejdź do folderu bazy danych, w którym znajduje się plik .ldf utworzony tam.

Jednak otrzymasz następujący komunikat w

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. 

Teraz można dołączyć bazy danych i po podłączeniu bazy danych kliknij prawym przyciskiem myszy na nazwę serwera w Eksploratorze obiektów i odświeżyć.

Metoda-2

Jeśli baza danych posiada jeden lub więcej plików dziennika brakuje można użyć następujących

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 

Metoda-3

Jeśli baza danych ma tylko jeden dziennik Plik można pominąć, można użyć tego

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

Więcej można przeczytać w KSIĄŻKI Online, aby uzyskać więcej informacji.