Код VS2010 Первый MVC3 SQL по умолчанию Формат имени Logfile.ldf игнорируется, создается второй файл logfile_log.ldf
Используя вначале код VS2010 и SQL Server 2008r2 с веб-приложением MVC3, SetInitializer создает ожидаемую базу данных в случае отсутствия или изменения модели.
Созданная БД имеет формат имени файла database.mdf и **logfile database.ldf (можно ли изменить этот формат по умолчанию "name.ldf" на "name_log.ldf"?).
При открытии базы данных с помощью обозревателя серверов VS2010 (двойной щелчок по db в обозревателе решений) VS2010 создает новый второй файл журнала в формате database_log.ldf.
Теперь я могу просматривать базу данных в проводнике серверов VS2010, но больше не могу отлаживать, dropcreateonmodelchange или иным образом использовать базу данных.
При попытке отладки отображается следующее сообщение: {"Один или несколько файлов не соответствуют первичному файлу базы данных. Если вы пытаетесь присоединить базу данных, повторите операцию с правильными файлами. Если это существующая база данных, файл может быть поврежден и должен быть восстановлен из резервной копии.\r\n Не удается открыть базу данных \"база данных \", запрошенную при входе в систему. Ошибка входа.\r\nLogin не удалось для пользователя 'My-PC\Me'.\r\nLog файл 'C:\Users\Me\project\App_Data\database.ldf' не соответствует первичному файлу. Он может быть из другой базы данных или журнал был перестроен ранее."} ... это достаточно справедливо, так как Проект ожидает, что текущий файл журнала будет "database.ldf".
Файлы / имена ASPNETDB.MDF и aspnetdb_log.ldf также создаются и не имеют проблемы с именем файла журнала по умолчанию, поэтому проблема не распространяется на ASPNETDB.
Можно ли изменить имя файла журнала по умолчанию для SetInitializer, чтобы создать имя файла журнала в формате "database_log.ldf" вместо "database.ldf"? Я безуспешно гуглил и посмотрел все настройки и опции, которые я мог найти в VS2010. Формат хранится в файле конфигурации где-то, что может быть отредактировано вручную?
3 ответа
Чтобы продолжить использовать базу данных в VS2010, я удалил файл журнала database.ldf и переименовал новый файл database_log.ldf в исходное имя database.ldf. Это не элегантно и не правильно, но работает на развитие.
Это не устраняет неправильное поведение codefirst, создающего одну версию файла журнала, а обозреватель сервера создает второй файл журнала с другим именем на разных этапах процесса разработки в одной и той же среде VS2010.
У меня точно такая же проблема с использованием VS2010 Express и SServer 2012 Express. Я пытаюсь проработать книгу Джулии Лерман по программированию Entity Framework 2-е издание.
Нет ли лучшего решения, чем это - переименование лог файлов? Я пытался переименовать файлы, но Windows скажет мне, что файл используется, даже когда я выключаю VS и SSMS. Поиск в БД в Process Explorer сообщает мне, что файл используется SServer.
Я обнаружил, что все, что мне нужно сделать, это попытаться создать строку подключения с помощью мастера подключения к БД, и БД в SServer создаст "дополнительный" файл журнала, и я получу то же сообщение, которое вы видите.
Это ошибка в VS2010Ex? Доступны ли патчи? Как мы предотвращаем повреждение базы данных VS2010?
Вот каталог после создания БД, но перед тем, как что-нибудь попробовать из VS:
E:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SAMPLES\MSSQL\DATA>dir programmingefdb2*
Volume in drive E is JET20110708-1
Volume Serial Number is EA22-1F7C
Directory of E:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SAMPLES\MSSQL\DATA
08/09/2013 11:39 AM 10,485,760 PROGRAMMINGEFDB2_Data.mdf
08/09/2013 11:39 AM 1,310,720 PROGRAMMINGEFDB2_Log.ldf
2 File(s) 11,796,480 bytes
0 Dir(s) 250,238,443,520 bytes free
Вот каталог после установления соединения в проекте VS, но даже не пытаясь запустить код обновления (и не копируя БД в проект):
E:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SAMPLES\MSSQL\DATA>dir programmingefdb2*
Volume in drive E is JET20110708-1
Volume Serial Number is EA22-1F7C
Directory of E:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SAMPLES\MSSQL\DATA
08/09/2013 11:51 AM 10,485,760 PROGRAMMINGEFDB2_Data.mdf
08/09/2013 11:51 AM 516,096 PROGRAMMINGEFDB2_Data_log.ldf
08/09/2013 11:39 AM 1,310,720 PROGRAMMINGEFDB2_Log.ldf
3 File(s) 12,312,576 bytes
0 Dir(s) 250,237,927,424 bytes free
Всем, кто читает эту ветку и особенно автору, я нашел решение на форуме MS SQL Server. Вот ответ: