Добавить файл *.mdf в проект C#

Я использую Visual Studio 2005. Я создаю проект, а не веб-проект, просто приложение Windows.

Я помню, что файл базы данных Access можно добавить в проект. Мне не нужно подключение к серверу, данные можно получить. И я хочу сделать то же самое с файлом базы данных SQL.

Я сделал следующие шаги:

  1. Щелкните правой кнопкой мыши проект.
  2. Выберите «Добавить существующий элемент».
  3. Найдите файл *.mdf.
  4. Появится мастер настройки источника данных и отобразится это сообщение.

    Произошла ошибка при извлечении информации из базы данных: Не удалось сгенерировать пользовательский экземпляр SQL Server из-за сбоя при запуске процесса для пользовательского экземпляра. Соединение будет закрыто.

Мне нужна помощь, чтобы добавить файл mdf в мой проект.


person Gia Duong Duc Minh    schedule 28.04.2011    source источник
comment
Присоедините его к экземпляру SQL Server и используйте оттуда.   -  person marc_s    schedule 28.04.2011
comment
Что сказал @marc_s. Вы не можете просто прочитать данные из файла MDF без SQL Server.   -  person Dan J    schedule 28.04.2011


Ответы (4)


Начнем с того, что файл MDF может быть прочитан только экземпляром SQL Server. Если вы развертываете MDF, то ваше приложение должно либо подключиться к SQL Server, предоставленному вашим конечным пользователем во время установки, либо оно должно развернуть свой собственный экземпляр, в последнем случае — экземпляр SQL Server Express Edition. См. раздел Как установить SQL Server Express. В Visual Studio 2008 вы можете добавить обязательное условие в свой MSI-файл установки приложения, см. "Установка" загрузчика SQL Server 2008 Express ClickOnce для Visual Studio 2008 SP1.

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

Но более серьезной проблемой является ваш план по развертыванию двоичных файлов (MDF) вместо сценариев для развертывания базы данных. Это обречено на провал. Как только вы запланируете выпуск версии 1.1 вашего приложения, вы столкнетесь с нетривиальной проблемой, как заменить пользовательский MDF (который теперь содержит данные, добавленные пользователем) вашим новым MDF. Вот почему гораздо лучше всегда развертывать скрипты обновления и забыть о МДФ в вашем проекте.

person Remus Rusanu    schedule 28.04.2011
comment
Как насчет файла .sdf? Будут ли проблемы с версией? (Я спрашиваю об автономном настольном программном приложении pos.) - person bonCodigo; 10.10.2014
comment
@bonCodigo: не задавайте новый вопрос в комментариях. Задайте новый вопрос. - person Remus Rusanu; 10.10.2014
comment
Это новое правило в SO? Я задаю вопрос, связанный с контекстом этого поста и вашим ответом. - person bonCodigo; 10.10.2014
comment
Этот ответ связан с вопросом, где Я предложил использовать LocalDB. Возможно, его можно было бы обновить, чтобы отразить новый сценарий. :-) - person Steve; 02.12.2019

Вы можете читать из файла Access (*.mdb) в своем приложении без каких-либо других требований, поскольку ядро ​​Jet, используемое Access, включено в состав Windows, в который он встроен. Сервер Sql не входит в состав Windows, поэтому вы не может использовать файл *.mdf в вашем приложении, если не установлен Sql Server и у вас нет для него соответствующих разрешений.

С вашим приложением можно распространять либо Sql Server Express Edition, либо Sql Server Compact Edition (рекомендуется). Другим вариантом является SqlLite, который имеет полностью управляемый механизм базы данных.

person Joel Coehoorn    schedule 28.04.2011

.MDF - это БД сервера sql, а не MS Access. Доступ MS - .MDB. Вы не можете прочитать .MDF отдельно. Также необходим файл журнала (.LDF). Если вы прикрепите его к своему локальному экземпляру, он создаст для вас новый. Затем вы можете подключиться к этой БД.

person M.R.    schedule 28.04.2011

Чтобы решить проблему развертывания (обновленная версия вашего файла .mdf и кода), вы можете иметь в своем приложении утилиту, которая может создавать файл .xls для каждой таблицы (резервное копирование базы данных), которую вы использовали в своем приложении. Теперь вы можете легко импортировать этот файл .xls в SQL Server и создать новую версию файла .mdf и прикрепить тот же файл в последнем коде. Теперь новая версия вашего приложения готова к развертыванию..!

person Ankush Madankar    schedule 04.07.2013