标题:求助?SQLDMO 恢复数据库时出错!
只看楼主
xinyu22
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2010-11-5
结帖率:55.56%
已结贴  问题点数:20 回复次数:5 
求助?SQLDMO 恢复数据库时出错!
求助?本人在做 SQLDMO 恢复数据库时出错!报以下错误:
[Microsoft][ODBC SQL Server Driver][SQL Server]无法重写文件 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\aaaa_Data.MDF'。数据库 'aaaa' 正在使用该文件。 [Microsoft][ODBC SQL Server Driver][SQL Server]文件 'aaaa_Data' 无法还原为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\aaaa_Data.MDF'。请使用 WITH MOVE 选项来标识该文件的有效位置。 [Microsoft][ODBC SQL Server Driver][SQL Server]无法重写文件 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\aaaa_Log.LDF'。数据库 'aaaa' 正在使用该文件。 [Microsoft][ODBC SQL Server Driver][SQL Server]文件 'aaaa_Log' 无法还原为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\aaaa_Log.LDF'。请使用 WITH MOVE 选项来标识该文件的有效位置。 [Microsoft][ODBC SQL Server Driver][SQL Server]RESTORE DATABASE 操作异常终止。


整个程序代码如下:
Imports System.Data
Imports System.Data.SqlClient
‘备份数据库
Public Class Form1
    Private Sub btnServer1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnServer1.Click
        Dim backup As New SQLDMO.Backup
        Dim sqlserver As New SQLDMO.SQLServer
        Try
            sqlserver.LoginSecure = False
            sqlserver.Connect(".", "sa", "")
            backup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database
            backup.Database = "aaaa"   '数据库名称
            backup.Files = "c:\databak.bak"
            backup.BackupSetName = "aaaa_bak"
            backup.BackupSetDescription = "数据库备份"
            backup.Initialize = True
            backup.SQLBackup(sqlserver)
        Catch ex As Exception
            Throw ex
        Finally
            sqlserver.DisConnect()
        End Try
    End Sub
’恢复数据库
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim restore As New SQLDMO.Restore
        Dim sqlserver As New SQLDMO.SQLServer
        Try
            sqlserver.LoginSecure = False
            sqlserver.Connect(".", "sa", "")
            restore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database
            restore.Database = "aaaa_bak"
            restore.Files = "c:\databak.bak"
            restore.FileNumber = 1
            restore.ReplaceDatabase = True  '操作将覆盖原有同名数据库
            restore.SQLRestore(sqlserver)
            MsgBox("恢复成功!", MsgBoxStyle.OkOnly)
        Catch ex As Exception
            Throw ex
        Finally
            sqlserver.DisConnect()
        End Try
    End Sub
End Class
搜索更多相关主题的帖子: 数据库 SQLDMO 
2010-11-05 15:31
c1_wangyf
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:7
帖 子:665
专家分:2832
注 册:2010-5-24
得分:10 
哈哈,这是的程序吧?!对的语法不是很熟悉!

如果你备份成功的话,建议检查一下restore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database的语法,当然也不一定是这里的问题!!

仅供参考
2010-11-05 20:46
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2545
专家分:9359
注 册:2007-11-3
得分:10 
遇到过这种情况 极有可能是数据库正在使用中 所以不允许恢复

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2010-11-06 08:33
xinyu22
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2010-11-5
得分:0 
程序中已经使用 restore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database ,应该怎么检查啊!能不能详细一点。先谢谢了!
2010-11-11 16:58
xinyu22
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2010-11-5
得分:0 
对了,又想起一件事来,出现这种问题是不是需要杀掉进程,什么的啊!     
2010-11-11 17:00
c1_wangyf
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:7
帖 子:665
专家分:2832
注 册:2010-5-24
得分:0 
我的意思是在MSDN中查找一下看看restore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database 的语法什么的有没有不合逻辑的地方?!!

另外3楼说的也很有道理,看看你的数据库是不是正在使用哦!!
2010-11-12 12:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-325079-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018967 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved