Можно ли получить доступ к базе данных .mdf без SQL Server?

Я создал файл .mdf с помощью SQL Server и поместил его в локальный файл. Я запускаю свою программу на компьютере, на котором не установлен SQL Server. А также я использовал классы из пространства имен System.Data.SqlClient (т.е. SqlConnection..)

Я хочу установить какое-то соединение для доступа к файлу .mdf, созданному SQL Server? Является ли это возможным ?


person unbalanced    schedule 28.04.2012    source источник


Ответы (3)


Я не думаю, что возможно взаимодействовать с файлом MDF без использования механизма SQL Server. Вы, скорее всего, установите SQL Server Express (что должно быть вариантом, если вы решите пройти через установку/удаление программ для Visual Studio, или вы можете загрузите его отдельно отсюда — это вариант 2008 R2 с инструментами), прикрепите свою базу данных, а затем подключитесь к этому движку из своей программы.

Во многих онлайн-учебниках предлагается использовать функцию User Instances и AttachDbFileName. Я предлагаю вам не идти по этому пути, так как это часто приводит к путанице: многие пользователи подключаются к одному экземпляру базы данных через Management Studio, к другому экземпляру из своей программы, а затем не понять, почему один не видит обновлений, сделанных другим. Функции User Instances устарели, и я предпочитаю правильно прикреплять базу данных к экземпляру.

В SQL Server 2012 вы можете загрузить новую среду выполнения SqlLocalDb (вам нужен файл SqlLocalDB.MSI x86 или x64 отсюда), что значительно упрощает этот процесс, поскольку — это механизм SQL Server по запросу, не требующий обслуживания. Однако обратите внимание, что ваша база данных будет обновлена ​​до нового формата файлов 11.0, что означает, что вы не сможете отсоединять/подсоединять или выполнять резервное копирование/восстановление до более старой версии (2008, 2008 R2 и т. д.). Я добавил множество методов устранения неполадок для новых пользователей, начиная с SqlLocalDb здесь.

person Aaron Bertrand    schedule 28.04.2012
comment
на самом деле вы говорите установить microsoft.com/en-us/ download/details.aspx?id=23650, который находится в студии управления и имеет размер 240 МБ. Есть ли какое-либо доступное решение, при котором мы не устанавливаем студию управления, а устанавливаем только ее службы или экземпляр, а развертывание просто меньше, чем у этого - person nouman arshad; 08.08.2016

Вы можете попробовать использовать OrcaMDF, проект с открытым исходным кодом.

Что такое ОркаМДФ?

Парсер C# для файлов MDF. Позволяет читать таблицы, метаданные и индексы из файлов MDF без привязки к работающему экземпляру SQL Server.

(это описание взято со страницы проекта).

Блог автора

person Bogdan Sahlean    schedule 28.04.2012

Вам нужен SQL для подключения к MDF. Вы можете преобразовать его в SDF и загрузить компактную версию (бесплатно). http://msdn.microsoft.com/en-us/data/ff687142

person tzerb    schedule 28.04.2012
comment
Обратите внимание, что преобразование в Compact будет работать только в том случае, если ваша база данных не использует какие-либо функции или синтаксис, не поддерживаемые в Compact Edition. Не будет ли Экспресс (тоже бесплатный) более безопасной рекомендацией? Он не такой встроенный, но с гораздо меньшей вероятностью будет проблематичным. - person Aaron Bertrand; 28.04.2012
comment
С Express вам не нужно использовать sqloledb. Я недостаточно хорошо разбираюсь в Compact Edition, чтобы точно знать, чем там отличается взаимодействие, я просто знаю, что формат файла и наборы функций сильно отличаются. - person Aaron Bertrand; 28.04.2012
comment
SQL Express будет работать, если он работает для OP. С SQL Express вы можете подключиться к нему таким же образом. Вам придется использовать новый класс соединения с SQL CE (SqlCeConnection). - person tzerb; 28.04.2012