Jak mogę dołączyć bazę danych bez pliku LDF w SQL Server?Jak załączyć bazę danych bez pliku LDF?
Odpowiedz
Możesz użyć sp_attach_single_file_db, aby załączyć bazę danych, w której brakuje jej pliku dziennika.
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
Nie próbuj dołączać fałszywego dziennika. Czy umieścisz polecenie sp_attach_single_file_db, które używasz? –
Działa to tylko wtedy, gdy plik dziennika można utworzyć od nowa w miejscu, w którym znajduje się .mdf. – Joshua
Możesz "po prostu to zrobić" to spowoduje ostrzeżenie, że nie może znaleźć pliku .ldf, ale nadal będzie dołączać db.
Daje błąd i baza danych nie jest dołączona. – Ricardo
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):
- zmiany istniejącej nazwy pliku .mdf do .mdf_old
- Utwórz nową bazę danych z tego samego pliku .mdf i .ldf jako starego.
- Zatrzymaj serwer sql
- Rename pliki .mdf i ldf nowego db do .mdf_old i .ldf_old
- Rename .mdf_old do .mdf
- Uruchom SQL Server
- Powinieneś zobaczyć w db tryb podejrzeń
- Zmień kontekst bazy danych na Główny i zezwól na aktualizację tabel systemowych.
- Ustaw bazę danych w trybie awaryjnym (odzyskiwanie boczne).
- Zatrzymaj i zrestartuj serwer SQL.
- Przebuduj dziennik.
- Ustaw bazę danych w trybie pojedynczego użytkownika i uruchom komendę DBCC CHECKDB, aby sprawdzić poprawność spójności fizycznej.
- Wyłącz aktualizacje do tabel systemowych.
Jak zrobić kroki od 8 do 13? –
Jeśli napotkasz problemy, sprawdź, czy plik mdf nie jest przeznaczony tylko do odczytu.
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.
Spróbuj tej czynności przez SQL Server Management Studio
- Otwartych SSMS i popełnił prawym przyciskiem myszy na bazach danych.
- Wybierz opcję Dołącz
- Następnie kliknij przycisk Dodaj, aby załączyć plik MDF.
- Wybierz plik z listy, a następnie kliknij przycisk OK
- Teraz ekran pokazuje plik MDF i LDF plik (nie znaleziono)
- wybrać LDF Plik i kliknij opcję Usuń.
- Po usunięciu pliku LDF kliknij OK.
- Plik MDF dołączony pomyślnie na liście baz danych.
To nie działa dla mnie. Czy możesz zaproponować inne rozwiązanie? –
tutaj jest świetny artykuł o [jak dołączyć mdf bez ldf] (http: //www.sqlserverlogexplorer.com/how-to-attach-mdf-file-without-ldf-file /) –
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:
W SQL Server 2012 to nie zadziała. Próbowałem. –
To działa dla mnie na 2012 express – Juan
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.
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 –