如何手动创建mdf文件供localdb使用?

问题描述 投票:34回答:5

我正在设置一些单元测试,以测试使用数据库完成的工作。我想使用localdb v11,但是首先我需要创建数据库。我该怎么做?

简单地连接到sql management studio中的(localdb)v11,将我连接到[我假设]在C:\Users\George\中的数据库。如何指定一个新的?

代码使用手动ADO.Net,而不是实体框架,据我所知,我不能依靠它来简单地创建数据库。

.net visual-studio-2012 localdb
5个回答
49
投票

只需使用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();
}

28
投票

我知道,这是一个老问题,但是我发现以下方法仍然很相关且快速。这是完整的步骤,但实际上只有最后一部分才是真正相关的:

先决条件:

  1. MS Sql LocalDb引擎
  2. MS Sql Server管理Studio

步骤:

  1. 打开命令提示符
  2. 运行SqlLocalDb info以列出当前安装的LocalDb实例。 Sql Server 2012 / Visual Studio 2012至少应为v11.0或Sql Server 2014 / Visual Studio 2015至少应为MSSQLLocalDB
  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


9
投票

不确定“手动”是什么意思。我将使用Visual Studio 2013和LocalDb添加一个选项:

打开服务器资源管理器,右键单击数据连接,选择创建新的SQL Server数据库。对于“服务器名称”,使用“((LocalDB)\ v11.0”。

还有另一个选项,如here所述,但它需要安装SQL Server数据工具。 Visual Studio 2012的指令版本也为available

由于还提到了SQL Server Management Studio,因此只需连接到LocalDb实例,然后右键单击数据库,然后单击创建(标准方法)。它或多或少是一个普通的SQL Server实例,所有标准操作都将照常运行。

显然,创建数据库也可以从应用程序代码完成,但是这需要设置适当的数据库权限。取决于您的环境,可能不是一个好主意。


5
投票

[如果您正在(像我一样)寻找在代码之外执行此操作的方法,则可能要考虑使用.bat脚本来执行此操作。我将其保存为解决方案中的.txt文件,可以在需要再次设置开发环境时使用。

LocalDB和SQLCmd

此脚本假定已安装LocalDB。我尚未找到明确的信息,但如果您使用实体框架,则似乎可以将其与Visual Studio 2012和2015一起安装。如果不是这种情况,则可以从独立安装程序或从SQL Server Express下载页面(可以将其选择为所需的下载位置)进行安装。更多详细信息,请单击How to install localdb separately?

可以从SQLServer Feature Pack中以相同的方式下载SQLCmd,查找SQLCmdlnUtility.msi。这是2012年版本的link

如果您与我的版本不同,则可能需要更改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 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

希望这会有所帮助!


0
投票

****** htrwhy **** gher ** strong text ****

© www.soinside.com 2019 - 2024. All rights reserved.