数据库'[DatabaseName]'已存在。选择其他数据库名称

时间:2016-07-15 10:32:54

标签: asp.net-core entity-framework-core sql-server-2016

我正在关注this guide,说明使用Entity Framework核心的代码优先方法。迁移功能正常,直到某些时候我删除了我的.mdf文件。从那时起,执行Update-Database(以应用我的迁移)会引发以下错误: Database 'DatabaseName' already exists. Choose a different database name.

这个数据库到底在哪里?如何永久删除它?

根据this的答案,我需要从Sql Server分离我的数据库,但我现在不知道该怎么做。在Sql Server Management工作室中,如果我执行sp_detach_db DatabaseName,则会抛出错误The database 'DatabaseName' does not exist. Supply a valid database name.

提前致谢。

更新 如果我在SQL Server Management Studio中附加了数据库,并且执行database already exists命令,我发现我还可以重现此Update-Database错误。关闭管理工作室后,迁移将应用,不会出现此错误。对我来说很困惑。

7 个答案:

答案 0 :(得分:6)

请查看SQL Server对象资源管理器(Visual Studio - > View - > SQL Server对象资源管理器)。如果它包含'DatabaseName'数据库,请尝试删除它。

答案 1 :(得分:2)

似乎LocalDB实例仍在后台运行。在控制台中执行以下命令以停止和删除实例。

sqllocaldb stop
sqllocaldb delete

Update-Database命令现在应该没有问题。

答案 2 :(得分:0)

它可能是本地数据库。尝试连接到本地数据库

(LocalDb)\MSSQLLocalDB

看看数据库是否位于那里。您可能需要从SSMS中删除它

答案 3 :(得分:0)

尝试修改' xxxxx-20170604092712'的数字代码在 Web.config 文件中,

然后'更新 - 数据库'再次。这对我有用。

答案 4 :(得分:0)

如果使用SQL创建数据库(意味着DB已存在),请将行DROP DATABASE [databaseName]放在文件开头 databaseName.sql

这将删除整个数据库及其定义(模式),现在您可以从创建新数据库开始。

答案 5 :(得分:0)

另一种猜测..如果您恢复了数据库,那么您的用户登录将不再工作,因为孤儿。尝试删除用户并重新创建它。如果您的迁移无法访问数据库,您将收到相同的错误。

答案 6 :(得分:0)

我将我的数据库恢复到另一台服务器,为了解决这个问题,我必须从安全下的数据库中删除以前的用户并重新创建他们