我正在设置一些单元测试,以测试使用数据库完成的工作。我想使用localdb v11,但是首先我需要创建数据库。我该怎么做?
简单地连接到sql management studio中的(localdb)v11
,将我连接到[我假设]在C:\Users\George\
中的数据库。如何指定一个新的?
代码使用手动ADO.Net,而不是实体框架,据我所知,我不能依靠它来简单地创建数据库。
只需使用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();
}
我知道,这是一个老问题,但是我发现以下方法仍然很相关且快速。这是完整的步骤,但实际上只有最后一部分才是真正相关的:
先决条件:
步骤:
SqlLocalDb info
以列出当前安装的LocalDb实例。 Sql Server 2012 / Visual Studio 2012至少应为v11.0
或Sql Server 2014 / Visual Studio 2015至少应为MSSQLLocalDB
(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”。
还有另一个选项,如here所述,但它需要安装SQL Server数据工具。 Visual Studio 2012的指令版本也为available。
由于还提到了SQL Server Management Studio,因此只需连接到LocalDb实例,然后右键单击数据库,然后单击创建(标准方法)。它或多或少是一个普通的SQL Server实例,所有标准操作都将照常运行。
显然,创建数据库也可以从应用程序代码完成,但是这需要设置适当的数据库权限。取决于您的环境,可能不是一个好主意。
[如果您正在(像我一样)寻找在代码之外执行此操作的方法,则可能要考虑使用.bat脚本来执行此操作。我将其保存为解决方案中的.txt文件,可以在需要再次设置开发环境时使用。
此脚本假定已安装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
希望这会有所帮助!
****** htrwhy **** gher ** strong text ****