Как прикрепить базу данных без файла LDF? - PullRequest
7 голосов
/ 29 мая 2009

Как я могу прикрепить базу данных без файла LDF в SQL Server?

Ответы [ 8 ]

8 голосов
/ 29 мая 2009

Вы можете использовать sp_attach_single_file_db , чтобы прикрепить базу данных, в которой отсутствует файл журнала.

3 голосов
/ 12 августа 2014

Вот фрагменты кода для программного создания файлов .ldf

Ниже приведены 3 метода.

Метод -1

В моем случае у меня есть база данных в папке DATA.

Вы можете получить полный путь к вашей базе данных, щелкнув правой кнопкой мыши и затем перейдя в свойства тогда вы можете скопировать полный путь к вашей базе данных

Как в моем случае путь выглядит следующим образом.

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

Теперь вот первый метод, использующий процедуру хранилища (sp_attach_single_file_db) и передающий ей аргументы (имя базы данных и физический путь)

 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

выполнить код, который вы после выполнения кода перейдите в папку базы данных, где он находится, вы увидите файл .ldf, созданный там.

Однако вы получите следующее сообщение в вашем

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.

Теперь вы можете присоединить вашу базу данных и после Присоединения базы данных щелкните правой кнопкой мыши на имени вашего сервера в Обозревателе объектов и обновите.

Способ-2

ЕСЛИ в вашей базе данных отсутствует один или несколько файлов журнала, вы можете использовать следующие

 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

Метод-3

Если в вашей базе данных есть только одна ошибка в файле журнала, вы можете использовать эту

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

Далее вы можете прочитать в КНИГАХ онлайн, чтобы получить больше информации.

3 голосов
/ 21 июня 2014

Попробуйте прикрепить его, добавив файл MDF в диалоговое окно «Прикрепить базы данных». Вы заметите, что диалоговое окно сообщит об отсутствующем файле LDF. Выполните действия, показанные на картинке:

enter image description here

3 голосов
/ 25 апреля 2014

Попробуйте выполнить следующие действия в SQL Server Management Studio

  1. Откройте SSMS и щелкните правой кнопкой мыши базы данных.
  2. Выберите опцию Присоединить
  3. Затем нажмите кнопку Добавить, чтобы прикрепить файл MDF.
  4. Выберите файл из списка и нажмите Ok
  5. Теперь на экране отображается файл MDF и файл LDF (не найден)
  6. Выберите файл LDF и нажмите «Удалить».
  7. После удаления файла LDF нажмите ОК.
  8. Файл MDF успешно добавлен в список баз данных.
3 голосов
/ 29 мая 2009

Вы можете попробовать то, что опубликовано здесь от MohammedU. В основном то, что он использует команду DBCC REBUILD_LOG. Это будет работать в зависимости от версии вашего сервера.

Вот шаги (без подробностей):

  1. Переименуйте существующий файл .mdf в .mdf_old
  2. Создайте новую базу данных с тем же файлом .mdf и .ldf, что и старый.
  3. Остановите сервер sql
  4. Переименуйте файлы .mdf и .ldf новой базы данных в .mdf_old и .ldf_old
  5. Переименовать .mdf_old в .mdf
  6. Запустить sql сервер
  7. Вы должны увидеть БД в подозрительном режиме
  8. Изменить контекст базы данных на Master и разрешить обновление системных таблиц
  9. Установить базу данных в аварийный режим (обходное восстановление).
  10. Остановите и перезапустите сервер SQL.
  11. Перестройте журнал.
  12. Установите базу данных в однопользовательском режиме и запустите DBCC CHECKDB для проверки физической согласованности.
  13. Отключить обновления системных таблиц.
1 голос
/ 14 февраля 2014
EXEC sp_attach_single_file_db @dbname = 'DBNAME',@physname = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\DBNAME_Data.mdf';

Я пытался, и это сработало ... Надеюсь, это поможет.

1 голос
/ 11 августа 2009

Если у вас возникли проблемы, убедитесь, что mdf-файл не только для чтения.

1 голос
/ 29 мая 2009

Вы можете "просто сделать это", он выдаст предупреждение о том, что не может найти .ldf, но все равно прикрепит БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...