Foxtable(狐表)用户栏目专家坐堂 → [求助]求助,使用drop database语句删除数据库后,并没有删除服务器上的数据库mdf文件及日志文件,导致在重建同名数据库时出错,如何删除数据库同时同步删除mdf及日志文件,请老师们指教?


  共有4707人关注过本帖树形打印复制链接

主题:[求助]求助,使用drop database语句删除数据库后,并没有删除服务器上的数据库mdf文件及日志文件,导致在重建同名数据库时出错,如何删除数据库同时同步删除mdf及日志文件,请老师们指教?

帅哥哟,离线,有人找我吗?
百灵
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:743 积分:7804 威望:0 精华:0 注册:2015/3/3 14:34:00
[求助]求助,使用drop database语句删除数据库后,并没有删除服务器上的数据库mdf文件及日志文件,导致在重建同名数据库时出错,如何删除数据库同时同步删除mdf及日志文件,请老师们指教?  发帖心情 Post By:2018/8/19 10:15:00 [显示全部帖子]

求助,使用drop database语句删除数据库后,并没有删除服务器上的数据库mdf文件及日志文件,导致在重建同名数据库时出错,如何删除数据库同时同步删除mdf及日志文件,请老师们指教?

 回到顶部
帅哥哟,离线,有人找我吗?
百灵
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:743 积分:7804 威望:0 精华:0 注册:2015/3/3 14:34:00
  发帖心情 Post By:2018/8/19 10:48:00 [显示全部帖子]

DeleteFile只能删除本机文件,无法远程删除服务器文件,考虑到项目用到动态创建数据库的问题,才用到这个,能不能通过SQL语句删除?

 回到顶部
帅哥哟,离线,有人找我吗?
百灵
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:743 积分:7804 威望:0 精华:0 注册:2015/3/3 14:34:00
  发帖心情 Post By:2018/8/19 11:39:00 [显示全部帖子]

我是在断开数据库的状态下删除数据库,这样就不会同步删除物理文件及日志,是吗?但是不断开数据库的情况,删除数据库会报错,也不会删除。删除数据库还有其他方法吗?我还原数据库也必须先断开数据库才能成功。

 回到顶部
帅哥哟,离线,有人找我吗?
百灵
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:743 积分:7804 威望:0 精华:0 注册:2015/3/3 14:34:00
  发帖心情 Post By:2018/8/19 11:52:00 [显示全部帖子]

是断开要删除的数据库,重联master数据库的情况下的才能删除当前数据库。

 回到顶部
帅哥哟,离线,有人找我吗?
百灵
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:743 积分:7804 威望:0 精华:0 注册:2015/3/3 14:34:00
  发帖心情 Post By:2018/8/19 11:56:00 [显示全部帖子]

是在联接maSter数据库的情况下,删除或还原其他已脱机的数据库的,这个思路是对的吧

 回到顶部
帅哥哟,离线,有人找我吗?
百灵
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:743 积分:7804 威望:0 精华:0 注册:2015/3/3 14:34:00
  发帖心情 Post By:2018/8/19 12:01:00 [显示全部帖子]

我是按这个删除和还原数据库,已成功,但mdf及日志文件不能删除掉

 回到顶部
帅哥哟,离线,有人找我吗?
百灵
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:743 积分:7804 威望:0 精华:0 注册:2015/3/3 14:34:00
  发帖心情 Post By:2018/8/19 16:44:00 [显示全部帖子]

有点蓝,感谢你的耐心指导,已解决,在脱开数据库时,先前用“cmd.CommandText = "ALTER DATABASE [" & dr("数据库名称") & "] SET OFFLINE With ROLLBACK IMMEDIATE"无法删除物理文件及日志文件,改为这种模式就可以了”cmd.CommandText = "ALTER DATABASE [" & dr("数据库名称") & "] SET SINGLE_USER With ROLLBACK IMMEDIATE"。
[此贴子已经被作者于2018/8/19 16:43:55编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
百灵
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:743 积分:7804 威望:0 精华:0 注册:2015/3/3 14:34:00
  发帖心情 Post By:2018/8/19 16:51:00 [显示全部帖子]

https://www.cnblogs.com/JiangLe/p/4036629.html

,这个链接标记一下,对于SQL Server 数据库状态有详细说明


 回到顶部
帅哥哟,离线,有人找我吗?
百灵
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:743 积分:7804 威望:0 精华:0 注册:2015/3/3 14:34:00
  发帖心情 Post By:2018/8/19 17:04:00 [显示全部帖子]

把删除数据库的代码分享给大家,在设置系统多账套管理时会用到:

if dr("服务器类型") = "SQL服务器" then
         
            Dim str As String = Connections("当前数据源名称").ConnectionString.replace(";Initial Catalog=" & dr("数据库名称") & ";Data Source=",";Initial Catalog=master;Data Source=")
            If Connections.Contains("临时") Then
                Connections.Delete("临时")
            End If
            Connections.add("临时",str)
            
            '----断开数据库时无法删除物理文件mdf及日志文件,应使用master,并改为单用户模式,再删除数据库
            Dim cmd0 As New SQLCommand
            cmd0.C           
            cmd0.CommandText = "ALTER DATABASE [" & dr("数据库名称") & "] SET SINGLE_USER With ROLLBACK IMMEDIATE"
            cmd0.ExecuteNonQuery
            
            '----删除数据库
            Dim cmd As New SQLCommand
            cmd.C
            cmd.CommandText = "drop DATABASE " & dr("数据库名称")
            cmd.ExecuteNonQuery
end if


 回到顶部