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

xa9qqrwz  于 2023-10-21  发布在  .NET
关注(0)|答案(4)|浏览(135)

我正在设置一些单元测试,用于测试使用数据库完成的工作。我想使用localdb v11,但首先我需要创建数据库。我到底该怎么做
只需连接到SQL Management Studio中的(localdb)v11,就可以将我连接到C:\Users\George\中的数据库(我假设)。如何指定一个新的?
代码使用手动ADO.Net,而不是实体框架,所以据我所知,我不能依靠它来简单地创建数据库。

8xiog9wr

8xiog9wr1#

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

mftmpeh82#

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

  1. Microsoft SQL LocalDb引擎
  2. Microsoft SQL Server Management Studio
    步骤:
    1.打开命令提示符
    1.运行SqlLocalDb info以列出当前安装的LocalDb示例。对于SQL Server 2012/Visual Studio 2012,应至少有v11.0,对于SQL Server 2014/Visual Studio 2015,应至少有MSSQLLocalDB
    1.打开Sql Server Management Studio,如果已在运行,则显示连接对话框
    1.使用服务器名称(localdb)\v11.0(localdb)\MSSQLLocalDB,无论你感兴趣的。选择Windows身份验证
    1.创建新查询
    1.粘贴以下模板,根据需要调整路径和名称:
CREATE DATABASE __YourDbName__ ON (
   NAME='__YourDbName__', 
   FILENAME='YourDrive:\Your\path\to\data\files\__YourDbName__.mdf')

1.运行查询
1.刷新对象资源管理器的数据库列表
在对象资源管理器中,您现在应该看到新创建的DB,而在Windows资源管理器中,您现在应该看到指定路径下新创建的.mdf.ldf文件。

m1m5dgzv

m1m5dgzv3#

我不知道你说的“手动”是什么意思。我将使用Visual Studio 2013和LocalDb添加一个选项:
打开服务器资源管理器,右键单击数据连接,选择新建SQL Server数据库。对于“服务器名称”,请使用“(LocalDB)\v11.0”。
还有另一个选项,如here所述,但它需要安装SQL Server数据工具。Visual Studio 2012的说明版本也是available
由于您还提到了SQL Server Management Studio,因此只需连接到LocalDb示例并右键单击数据库,然后按标准方式单击创建。它或多或少是一个常规的SQL Server示例,所有标准操作都将照常运行。
显然,也可以从应用程序代码中创建数据库,但这需要设置适当的数据库权限。这取决于你的环境,这可能是一个好主意,也可能不是。

9njqaruj

9njqaruj4#

编辑2022:现在我可能更愿意在Docker上使用SQL Server示例,而不是使用localdb。:)

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

LocalDB和SQLCmd

此脚本假定已安装LocalDB。我还没有找到关于它的明确信息,但如果你使用的是实体框架,它似乎可以安装在Visual Studio 2012和2015中。如果不是这种情况,您可以从独立安装程序或从SQL Server Express下载页面安装它(您可以选择它作为您想要的下载)。更多详情请点击此处:How to install localdb separately?
可以从SQLServer功能包中以相同的方式下载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

希望这对你有帮助!

相关问题