Как вручную создать файл mdf для localdb для использования?

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

просто подключив к (localdb)v11 в SQL management studio подключает меня к базе данных, которая (я предполагаю) находится в C:UsersGeorge. Как указать новый?

код использует руководство ADO.Net, не Entity Framework, насколько я знаю, я не могу полагаться на него, чтобы просто создать базу данных.

4 ответов


просто используйте CREATE DATABASE statement

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:\Users\George"
    );

    SqlCommand command = new SqlCommand(sql, connection);
    command.ExecuteNonQuery();
}

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

предпосылки:

  1. MS Sql LocalDb engine
  2. MS Sql Server Management Studio

действия:

  1. открыть командную строку
  2. выполнить SqlLocalDb info список установленных экземпляров LocalDb. Должно быть хотя бы v11.0 для Sql Сервер 2012 и Visual Studio 2012 или MSSQLLocalDB для Sql Server 2014 / Visual Studio 2015
  3. откройте SQL Server Management Studio или покажите диалоговое окно подключения, если уже запущено
  4. использовать имя сервера (localdb)\v11.0 или (localdb)\MSSQLLocalDB, в зависимости от того, что вас интересует. Выберите Проверка Подлинности Windows
  5. создать новый запрос
  6. вставьте следующий шаблон, адаптируя свой путь и имена по мере необходимости:

    CREATE DATABASE __YourDbName__ ON (
      NAME='__YourDbName__', 
      FILENAME='YourDrive:\Your\path\to\data\files\__YourDbName__.mdf')
    
  7. выполнить запрос

  8. обновить список баз данных обозревателя объектов

в Обозревателе объектов теперь вы должны увидеть вновь созданную БД, в то время как в Проводнике Windows Теперь вы должны увидеть вновь созданный .mdf и .ldf файлы по указанному пути.

HTH


Не уверен, что вы подразумеваете под "вручную". Я добавлю параметр с помощью Visual Studio 2013 и LocalDb:

Откройте проводник сервера, щелкните правой кнопкой мыши на соединениях данных, выберите Создать новую базу данных SQL Server. Для "имени сервера" используйте " (LocalDB)\v11.0".

есть еще один вариант, как описано здесь но для этого требуется установка SQL Server Data Tools. Версия инструкций для Visual Studio 2012 также скачать.

с вы также упоминаете SQL Server Management Studio, вы можете просто подключиться к экземпляру LocalDb и щелкнуть правой кнопкой мыши по базам данных, а затем создать стандартный способ. Это более или менее обычный экземпляр SQL Server, и все стандартные операции будут работать как обычно.

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


Если вы ищете (как я) способ сделать это вне вашего кода, Вы можете рассмотреть возможность использования a .bat скрипт для этого. Я держу его в решение .txt файл, который я могу использовать, когда мне нужно снова настройки среды разработки.

LocalDB и SQLCmd

этот скрипт предполагает, что LocalDB установлен. Я не смог найти четкую информацию об этом, но, похоже, его можно установить с visual studio 2012 и 2015, Если вы используете entity framework. Если это не так, вы можете установить его из автономного установщика или со страницы загрузки SQL Server express ( вы можете выбрать его в качестве загрузки вы хотите. Подробнее здесь:Как установить localdb отдельно?

SQLCmd можно загрузить таким же образом из пакета функций SQLServer, найдите SQLCmdlnUtility.компания MSI. Вот это ссылке для версии 2012.

вам может потребоваться изменить путь LocalDbDir и sqlcmddir, если у вас нет та же версия, что и у меня.

скрипт

:: Script to Create Local DB Instance and a database

::echo setting variables - Default Server is v11 but it may be useful to evolve in a server instance of your own...
SET localdDbDir=C:\Program Files\Microsoft SQL Server0\Tools\Binn
SET sqlCmdDir=C:\Program Files\Microsoft SQL Server0\Tools\Binn
SET SRV_NAME=your-dev-srv
SET DB_NAME=your-dev-db
SET DB_PATH=C:\CurDev\Temp

echo Creates the localDB server instance
pushd "%localdDbDir%"
:: uncomment those lines if you want to delete existing content
::SqlLocalDb stop %SRV_NAME%
::SqlLocalDb delete %SRV_NAME%
SqlLocalDb create %SRV_NAME%
SqlLocalDb start %SRV_NAME%
popd

echo Create the database intance
pushd "%sqlCmdDir%"
sqlcmd -S "(localdb)\%SRV_NAME%" -Q "CREATE DATABASE [%DB_NAME%] ON PRIMARY ( NAME=[%DB_NAME%_data], FILENAME = '%DB_PATH%\%DB_NAME%_data.mdf') LOG ON (NAME=[%DB_NAME%_log], FILENAME = '%DB_PATH%\%DB_NAME%_log.ldf');"
popd
echo completed

надеюсь, что это помогает!