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

Geo*_*uer 32 .net localdb visual-studio-2012

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

只需连接到(localdb)v11sql management studio就可以将我连接到(我假设)所在的数据库C:\Users\George\.如何指定新的?

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

Sta*_*tan 46

只需使用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();
}
Run Code Online (Sandbox Code Playgroud)

  • 为了完整起见,我需要在运行时计算mdf的路径,因为这是一个单元测试,这是我的方法:`datamart = String.Format(@“ Data Source =(LocalDB)\ v11.0; Integrated Security = True; AttachDbFileName ='{0} \ MockDatamart.mdf'“,Path.Combine(AppDomain.CurrentDomain.BaseDirectory,” assets“));` (2认同)

sup*_*jos 26

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

先决条件:

  1. MS Sql LocalDb引擎
  2. MS Sql Server Management Studio

脚步:

  1. 打开命令提示符
  2. 运行SqlLocalDb info以列出当前安装的LocalDb实例.至少应该有v11.0Sql Server 2012/Visual Studio 2012或MSSQLLocalDBSql 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')
    
    Run Code Online (Sandbox Code Playgroud)
  7. 运行查询

  8. 刷新对象资源管理器数据库列表

在对象资源管理器,你现在应该看到新创建的数据库,而在Windows资源管理器,你现在应该看到新创建.mdf.ldf文件在指定的路径.

HTH


Ale*_*jak 8

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

打开Server Explorer,右键单击Data Connections,选择Create New SQL Server Database.对于"服务器名称",请使用"(LocalDB)\ v11.0".

还有另一个选项,如此处所述,但它需要安装SQL Server数据工具.还提供 Visual Studio 2012的说明版本.

既然您还提到了SQL Server Management Studio,您只需连接到LocalDb实例并右键单击Databases,然后右键单击Create,这是标准方式.它或多或少是常规SQL Server实例,所有标准操作都将照常运行.

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


cod*_*dea 5

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

LocalDB和SQLCmd

此脚本假定已安装LocalDB.我还没有找到关于它的明确信息,但如果您使用的是实体框架,它似乎可以与visual studio 2012和2015一起安装.如果不是这种情况,您可以从独立安装程序或SQL Server Express下载页面安装它(您可以选择它作为您想要的下载.更多详细信息:如何单独安装localdb?

可以从SQLServer Feature Pack以相同的方式下载SQLCmd,查找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 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
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • 感谢乔治的澄清。我之所以最终这样做是因为我在两个Visual Studio安装之间存在差异。这样我就可以开始清洁了。为了找到VS如何为我创建此实例,我付出了很多努力,因此最终获得了此脚本。但是我同意这可能是一个过大的解决方案。此外,即使问题的详细信息没有要求,标题也可能建议您在查找localdb手动创建时会在Google上找到的此类内容。我希望这可以帮助其他人。 (2认同)