42

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

只需(localdb)v11在 sql management studio 中连接即可将我连接到(我假设)所在的数据库C:\Users\George\。如何指定一个新的?

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

4

4 回答 4

53

只需使用 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();
}
于 2013-04-06T17:04:24.863 回答
32

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

先决条件:

  1. MS Sql LocalDb 引擎
  2. MS Sql 服务器管理工​​作室

脚步:

  1. 打开命令提示符
  2. 运行SqlLocalDb info以列出当前安装的 LocalDb 实例。至少应该有v11.0Sql Server 2012/Visual Studio 2012 或MSSQLLocalDBSql Server 2014/Visual Studio 2015
  3. 打开 Sql Server Management Studio,或显示连接对话框(如果已运行)
  4. 使用 Server name(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和指定路径的文件。

高温高压

于 2016-05-05T11:30:37.870 回答
8

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

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

这里所述,还有另一个选项,但它需要安装 SQL Server Data Tools。还提供了适用于 Visual Studio 2012 的说明版本。

由于您还提到了 SQL Server Management Studio,您可以简单地连接到 LocalDb 实例并右键单击 Databases,然后单击 Create,这是标准方式。它或多或少是一个常规的 SQL Server 实例,所有标准操作都将照常运行。

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

于 2013-11-26T21:14:50.887 回答
6

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

LocalDB 和 SQLCmd

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

SQLCmd 可以从 SQLServer Feature Pack 以相同的方式下载,查找 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

希望这可以帮助!

于 2015-11-01T15:13:52.283 回答