【发布时间】:2017-02-27 23:06:02
【问题描述】:
我已经使用下面的连接字符串使用代码优先方法和实体框架创建了一个简单的上下文。一切顺利,在运行测试方法后,我发现自己有一个 .mdf 和 .ldf 文件。
"data source=.\SQLEXPRESS;Integrated Security=SSPI;database=testdb;AttachDBFilename=Q:\Temp\testdb.mdf;User Instance=true"
出于某种原因,我希望删除此数据库。我尝试在 SSMS 中查找数据库,但找不到。它没有在我的数据库中注册。现在我觉得我有 3 个选择:
在 SSMS 中附加数据库,然后将其删除
-
通过搜索
.MDF文件连接到VS2015 Server Explorer中的数据库,然后从VS中删除数据库。通过服务器资源管理器添加数据库
按下可在 SQL Server 对象资源管理器中浏览
出现在我可以按删除的服务器对象资源管理器中
只需删除
.mdf和.ldf文件
这三种方法都删除了.mdf 和.ldf 文件。
但是:当我再次启动上下文时,我希望它会再次从头开始创建文件。但是我收到以下错误:
初始化数据库时发生异常。有关详细信息,请参阅 InnerException。
基础提供程序在打开时失败。
无法打开登录请求的数据库“testdb”。登录失败。
用户“DESKTOP-XXXXXXX\XXXXX”登录失败。
我觉得我已经删除了对该数据库的所有引用。我找不到任何其他参考资料。然而不知何故,它似乎有一个,因为它正在尝试登录而不是创建一个新数据库。
问题:有人知道如何解决这个问题吗?如何正确删除数据库+引用?
更新:
在删除文件之前的测试期间,在 VS 打开连接中,我看到以下连接字符串。
Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=Q:\Temp\testdb.mdf;Integrated Security=True;Connect Timeout=30
但是,在 VS2015 中探索我的 Localdb 时,没有列出任何数据库。
【问题讨论】:
-
您现在列出了 2 个不同的连接字符串。你用的是哪一个? .\SQLEXPRESS 还是 localdb?
-
我正在使用 .\SQLEXPRESS 进行初始化。当使用与数据库的实际连接时,我注意到连接字符串是 localdb。
-
在选项 2 中,当您说连接到数据库并删除它时,您是在连接到 .\SQLEXPRESS 并删除数据库吗?
-
我添加了选项 2 的屏幕截图。我认为它通过 (localdb)\MSSQLLocalDB
-
用户 'DESKTOP-XXXXXXX\XXXXX' 是 SQL 服务器上 dbcreator 服务器角色或 sysadmin 服务器角色的成员吗?如果您手动创建一个空数据库并授予用户 'DESKTOP-XXXXXXX\XXXXX' DB_Owner 数据库角色的成员资格,会发生什么情况?
标签: c# entity-framework sql-server-express