2012-02-03 2 views
10

У меня есть ошибка ниже добавление .mdf файла (базы данных SQL Server) в Visual Studio Project 2010Как добавить файл базы данных SQL Server (.mdf) в Visual Studio без установки SQL Server Express Edition?

подключений к файлам базы данных SQL Server (.mdf) требуется SQL Server 2005 Express или SQL Server 2008 Express, в быть установлена ​​и запущена на локальный компьютер

Я не хочу, чтобы установить SQL Server Express (2005/2008), потому что я уже установлена ​​ SQL Server 2005 Enterprise Edition

Я использую Visual Studio 2010 Ultimate

+0

Этот вопрос был задан ранее, см http://stackoverflow.com/questions/4650183/problem-with-creating-mdf-file- from-visual-studio-2010 – rfcdejong

+1

* Прикрепить файл '.mdf' * доступен только в ** EXPRESS ** выпусках SQL Server - все остальные (веб-, стандартные, предприятия) делают ** NOT ** поддержите эту опцию. Если у вас полная версия SQL Server, вам нужно создать базу данных на сервере, а затем подключиться к ней с помощью строки подключения к серверу –

+0

@marc_s. Это ответ !!! Я пытаюсь понять, почему мой лицензионный verson SQL Server * удивлен * Visual Studio и требует SQL Express ... поэтому для меня решение - подключиться через 'conn String' ... Спасибо pro. – bonCodigo

ответ

10

Это действительно раздражает. В основном, в Machine.config для версии фреймворка, против которой вы работаете, есть запись для LocalSqlServer.

На моей машине, для 4-й версии:

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ Machine.config

<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> 

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

(Аналогично для других версий рамок, которые я изменил)

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

Не забудьте создать резервную копию файлов machine.config перед их редактированием!

С учетом сказанного также нет причин, по которым вы не можете добавить базу данных в сам сервер Sql (если у вас есть mdf), а затем подключиться к нему из Visual Studio через View -> Server Explorer -> Data Connections (Щелкните правой кнопкой мыши -> Добавить соединение) - вы пробовали это?

+0

Прежде всего спасибо за ваш ответ. Не пытайтесь восстановить или прикрепить файл mdf, если я запустил свое приложение на другом ПК, разработанном на моем ПК. Если вы загрузите образец кода с веб-сайта, то для некоторых людей это раздражает настройку приложения (означает восстановление db или прикрепление файла mdf и настройка строки подключения и т. д.) – Ali

+0

Все зависит от вас: вы можете утверждать, что эти файлы MDF зависят от вашего проекта и, как и любая зависимость, вам нужно каким-то образом включить их. Удачи! – dash

1

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

  1. Установка SQL Express 2008 R2
  2. В Visual Studio 2010 перейти к Tools -> Options
  3. Выберите Database Tools -> Data Connections и обновить Sql Server Instance Name (blank for default) с именем экземпляра базы данных.
  4. Затем перейдите к услугам, нажав ⊞Win + R и services.msc
  5. Выберите SQL Server (<instance name of express edition>), щелкните правой кнопкой мыши и выберите Properties
  6. Затем в окне свойств службы идут на Log On вкладку и выберите Local System account

После этих шагов я смог добавить файл .mdf в визуальную студию 2010 года.

Также возможно иметь возможность сделать это без установки Sql server express, только начиная со второго шага, но я не пробовал.

0

вы можете использовать код, чтобы добавить, что если не существует

string curFile = @"C:\Dev\Test_data.mdf"; 
     if (!File.Exists(curFile)) 
     { 
      SqlConnection connection = new SqlConnection(@"server=(localdb)\v11.0"); 
      using (connection) 
      { 
       connection.Open(); 

       string sql = string.Format(@" 
            CREATE DATABASE 
             [Test] 
            ON PRIMARY (
             NAME=Test_data, 
             FILENAME = '{0}\Test_data.mdf' 
            ) 
            LOG ON (
             NAME=Test_log, 
             FILENAME = '{0}\Test_log.ldf' 
            )", 
        @"C:\Dev" 
       ); 

       SqlCommand command = new SqlCommand(sql, connection); 
       command.ExecuteNonQuery(); 
      } 
     } 
Смежные вопросы