Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

Просто используйте инструкцию CREATE DATABASE

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();
}

Ответ 2

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

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

  • Двигатель MS Sql LocalDb
  • MS Sql Server Management Studio

Шаги:

  • Откройте командную строку
  • Запустите SqlLocalDb info, чтобы отобразить текущие установленные экземпляры LocalDb. Там должно быть не менее v11.0 для Sql Server 2012/Visual Studio 2012 или MSSQLLocalDB для Sql Server 2014/Visual Studio 2015
  • Откройте Sql Server Management Studio или покажите диалог Connect, если он уже запущен.
  • Использовать имя сервера (localdb)\v11.0 или (localdb)\MSSQLLocalDB, в зависимости от того, что вас интересует. Выберите "Аутентификация Windows"
  • Создайте новый запрос
  • Вставьте следующий шаблон, адаптировав свой путь и имена по мере необходимости:

    CREATE DATABASE __YourDbName__ ON (
      NAME='__YourDbName__', 
      FILENAME='YourDrive:\Your\path\to\data\files\__YourDbName__.mdf')
    
  • Запустить запрос

  • Обновить список объектов в базе данных

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

НТН

Ответ 3

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

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

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

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

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

Ответ 4

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

LocalDB и SQLCmd

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

SQLCmd можно загрузить с помощью пакета SQLServer Feature Pack, ищите SQLCmdlnUtility.msi. Вот ссылка для версии 2012 года.

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

script

:: 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 Server\120\Tools\Binn
SET sqlCmdDir=C:\Program Files\Microsoft SQL Server\120\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

Надеюсь, это поможет!