Как вручную создать файл 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();
}
Я знаю, старый вопрос, но я нахожу следующий способ все еще актуальным и быстрым. Вот полные шаги, но на самом деле только последняя часть действительно актуальна:
предпосылки:
- MS Sql LocalDb engine
- MS Sql Server Management Studio
действия:
- открыть командную строку
- выполнить
SqlLocalDb info
список установленных экземпляров LocalDb. Должно быть хотя быv11.0
для Sql Сервер 2012 и Visual Studio 2012 илиMSSQLLocalDB
для Sql Server 2014 / Visual Studio 2015 - откройте SQL Server Management Studio или покажите диалоговое окно подключения, если уже запущено
- использовать имя сервера
(localdb)\v11.0
или(localdb)\MSSQLLocalDB
, в зависимости от того, что вас интересует. Выберите Проверка Подлинности Windows - создать новый запрос
-
вставьте следующий шаблон, адаптируя свой путь и имена по мере необходимости:
CREATE DATABASE __YourDbName__ ON ( NAME='__YourDbName__', FILENAME='YourDrive:\Your\path\to\data\files\__YourDbName__.mdf')
выполнить запрос
- обновить список баз данных обозревателя объектов
в Обозревателе объектов теперь вы должны увидеть вновь созданную БД, в то время как в Проводнике 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
надеюсь, что это помогает!