【问题标题】:Error when creating sql database创建sql数据库时出错
【发布时间】:2014-11-26 11:46:48
【问题描述】:

我手动删除了 sql 数据库文件(myDB.mdf 和 myDB_log.ldf) 当我想创建具有相同名称的数据库 (myDB) 时,我收到以下错误消息。

System.Data.SqlClient.SqlException (0x80131904): 数据库 'myDB' 已经存在。选择一个不同的数据库名称。

我的代码:

String str;
SqlConnection Conn = new SqlConnection("Server=.\\SQLEXPRESS;Integrated security=true;User Instance=True;database=master");
str = "CREATE DATABASE myDB " + 
      "ON PRIMARY " + "( NAME = N'myDB', FILENAME = N'" + Application.StartupPath + "\\myDB.mdf' , SIZE = 5120KB , FILEGROWTH = 1024KB )" + 
      "LOG ON" + "( NAME = N'myDB_log', FILENAME = N'" + Application.StartupPath + "\\myDB_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)";
SqlCommand Command = new SqlCommand(str, Conn);

如何通过 c# 脚本解决这个问题?

【问题讨论】:

  • 删除文件不会删除服务器中数据库的详细信息,需要发出DROP DATABASE ...声明
  • 你不应该只通过删除数据和日志文件来删除 SQL 数据库,你应该使用DROP DATABASE,然后这会将它从 sys.databases 中删除。
  • 物理数据库不存在但逻辑名称存在,我认为

标签: c# sql-server-2012-express


【解决方案1】:

您不应直接删除数据库文件,因为它们在 SQL Server 的主数据库中被引用。如果您可以恢复文件,请执行此操作,然后从 SQL Server Management Studio 中删除数据库,否则您将需要手动删除主数据库表中的数据库条目!

【讨论】:

  • 我通过 shift+delete 删除了数据库文件,现在我想创建与已删除数据库同名的数据库。如何在 Visual Studio 中通过脚本 c# 修复
  • 你可以运行 DROP DATABASE myDB;作为 SQL 查询,但我不知道如果文件丢失会发生什么。
  • 我的数据库不在 sql server management studio 的数据库列表中。我在 c# 中创建了数据库并通过“Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\myDB.mdf;Integrated Security=True;User Instance=True”附加它
  • 您应该仍然可以看到它,但您可能需要在 SQL Server Management Studio 连接对话框中选择不同的实例来连接。不记得确切的语法,但可能连接到(本地)/SQLEXPRESS
【解决方案2】:

您可以尝试使用来解决问题

EXEC sp_detach_db 'dbName', 'true';

上面所说的 sp_detach 分离数据库,skipchecks 设置为 true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多