目录
下面先给出正确的代码实现:
 错误代码一:
错误描述:
解决方法:
错误二:
首页 数据库 mysql教程 备份恢复数据库

备份恢复数据库

Jun 07, 2016 pm 03:36 PM
备份 恢复 数据库 系统

每个系统都应该有数据库的备份和还原功能,以防各种情况下的数据库损坏造成不可挽回的损失。这个功能挺简单,但在代码实现过程中也多多少少遇到了些问题,我把错误都总结了出来,供大家参考学习。 下面先给出正确的代码实现: Imports System.Data.SqlClient

         每个系统都应该有数据库的备份和还原功能,以防各种情况下的数据库损坏造成不可挽回的损失。这个功能挺简单,但在代码实现过程中也多多少少遇到了些问题,我把错误都总结了出来,供大家参考学习。

下面先给出正确的代码实现:

Imports System.Data.SqlClient

Public Class Form1

    '备份数据库 
    'BACKUP DATABASE Test TO DISK='' WITH Format   sql语句

    Private Sub btnBackup_Click(sender As Object, e As EventArgs) Handles btnBackup.Click

        Dim conn As SqlConnection
        conn = New SqlConnection("Data Source=.;Initial Catalog=test3;User ID=sa;Password=123456")
        Dim cmd As SqlCommand
        Dim path As String

        '选择备份路径
        FolderBrowserDialog1.ShowDialog()
        path = FolderBrowserDialog1.SelectedPath
        If path = Nothing Then
            MessageBox.Show("文件名不能为空", "系统提示")
            Exit Sub
        End If
        '执行sql命令语句,备份数据库
        cmd = New SqlCommand("BACKUP DATABASE test3 TO DISK='" & path & "\backup' WITH format,BACKUP LOG WITH NORECOVERY", conn)
        conn.Open()
        Try
            cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly, "系统提示")
            Exit Sub
        End Try
        MsgBox("备份成功")
        conn.Close()

    End Sub

    '还原数据库
    Private Sub btnRecovery_Click(sender As Object, e As EventArgs) Handles btnRecovery.Click
        If MsgBox("真的要还原吗?数据会恢复到最近备份的数据!", MsgBoxStyle.YesNo, "系统提示") = MsgBoxResult.Yes Then

            Dim cn As New SqlConnection
            Dim cn1 As New SqlConnection
            Dim mydr As SqlDataReader
            Dim str As String
            Dim tmpConnectionString As String = "Data Source=.;Initial Catalog=test3;User ID=sa;Password=123456;pooling=false"
            Dim all As String

            '获取当前文件名筛选器字符
            Me.OpenFileDialog1.Filter = "所有文件(*.*)|*.*|备份文件(*.bak)|*.bak"
            Me.OpenFileDialog1.ShowDialog()
            all = OpenFileDialog1.FileName
            If all = Nothing Then
                MessageBox.Show("文件名不能为空", "系统提示")
                Exit Sub
            End If
            cn.ConnectionString = tmpConnectionString
            cn1.ConnectionString = tmpConnectionString
            cn.Open()
            cn1.Open()

            '查询与数据库有关的进程
            Dim cm As SqlCommand = New SqlCommand("use master select spid from master..sysprocesses where dbid=db_id('test3')", cn)
            mydr = cm.ExecuteReader()
            Dim cm1 As SqlCommand = New SqlCommand()
            cm1.Connection = cn1
            While (mydr.Read())
                '杀死进程
                str = "kill " & mydr("spid").ToString()
                cm1.CommandText = str
                cm1.CommandType = CommandType.Text
                Application.DoEvents()
                cm1.ExecuteNonQuery()
            End While
            mydr.Close()

            '使要还原的数据库脱机
            cm = New SqlCommand("ALTER DATABASE test3 SET OFFLINE WITH ROLLBACK IMMEDIATE", cn)
            cm.ExecuteNonQuery()

            '恢复备份
            cm = New SqlCommand("RESTORE DATABASE test3 FROM DISK='" & all & "' WITH REPLACE", cn)
            cm.ExecuteNonQuery()

            '使要还原的数据库联机
            cm = New SqlCommand("ALTER DATABASE test3 SET ONLINE WITH ROLLBACK IMMEDIATE", cn)
            cm.ExecuteNonQuery()

            MsgBox("恢复成功,软件自动关闭,请重新启动本系统!")

            '关闭数据库连接
            cn.Close()
            cn1.Close()
            Me.Close()
        Else
            Exit Sub
        End If
    End Sub
End Class

登录后复制

 错误代码一:

select spid from test3..sysprocesses where dbid=db_id('test3')

错误描述:

 备份恢复数据库

解决方法:

在sql语句前添加use master 即

use master select spid from master..sysprocesses where dbid=db_id('test3')

User master表示在master数据库执行该语句,spid指当前用户进程的会话 ID,master是系统数据库,它里面有很多对象,每个对象都有自己的所有者.如果没有指明所有者,系统就默认dbo为对象的所有者.一个对象完整的表达式为:数据库名.所有者.对象, 比如:master.dbo.sysobjects。杀进程前当然要先找出当前该数据库所有的进程了。


错误二:

直接用SQL语句还原数据库。

错误描述:

备份恢复数据库 

解决方法:

方法一:

在还原之前先将该数据库脱机,恢复之后再联机。前后加上两条sql语句即可。 

ALTER DATABASE [datebase] SET OFFLINE WITH ROLLBACK IMMEDIATE

ALTER  DATABASE  [ datebase] SET ONLINE  

方法二:

(该方法采取限制访问数据库的方式,因为实际中我们经常多用户访问,所以符合情况时再考虑这种解决方法吧。)

在还原的时候还有其他进程连在上面,导致无法获得独占造成的,可以使用数据库的单用户模式,设置方式:选中要还原的数据库-->属性-->选项-->限制访问,该值从MULTI_USER修改为SINGLE_USER。

以下是GUI的模式,语句比较简单 

USE MASTER 

GO 

ALTER DATABASEeol_tcgroup SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 

GO 


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

华为干昆 ADS3.0 智驾系统 8 月上市 享界 S9 首发搭载 华为干昆 ADS3.0 智驾系统 8 月上市 享界 S9 首发搭载 Jul 30, 2024 pm 02:17 PM

7月29日,在AITO问界第四十万台新车下线仪式上,华为常务董事、终端BG董事长、智能汽车解决方案BU董事长余承东出席发表演讲并宣布,问界系列车型将于今年8月迎来华为干昆ADS3.0版本的上市,并计划在8月至9月间陆续推送升级。 8月6日即将发布的享界S9将首发华为ADS3.0智能驾驶系统。华为干昆ADS3.0版本在激光雷达的辅助下,将大幅提升智驾能力,具备融合端到端的能力,并采用GOD(通用障碍物识别)/PDP(预测决策规控)全新端到端架构,提供车位到车位智驾领航NCA功能,并升级CAS3.0全

如何在 PHP 中使用 MySQL 备份和还原? 如何在 PHP 中使用 MySQL 备份和还原? Jun 03, 2024 pm 12:19 PM

在PHP中备份和还原MySQL数据库可通过以下步骤实现:备份数据库:使用mysqldump命令转储数据库为SQL文件。还原数据库:使用mysql命令从SQL文件还原数据库。

Go语言如何实现数据库的增删改查操作? Go语言如何实现数据库的增删改查操作? Mar 27, 2024 pm 09:39 PM

Go语言是一种高效、简洁且易于学习的编程语言,因其在并发编程和网络编程方面的优势而备受开发者青睐。在实际开发中,数据库操作是不可或缺的一部分,本文将介绍如何使用Go语言实现数据库的增删改查操作。在Go语言中,我们通常使用第三方库来操作数据库,比如常用的sql包、gorm等。这里以sql包为例介绍如何实现数据库的增删改查操作。假设我们使用的是MySQL数据库。

常用常新!华为Mate60系列升级HarmonyOS 4.2:AI云增强、小艺方言太好用了 常用常新!华为Mate60系列升级HarmonyOS 4.2:AI云增强、小艺方言太好用了 Jun 02, 2024 pm 02:58 PM

4月11日,华为官方首次宣布HarmonyOS4.2百机升级计划,此次共有180余款设备参与升级,品类覆盖手机、平板、手表、耳机、智慧屏等设备。过去一个月,随着HarmonyOS4.2百机升级计划的稳步推进,包括华为Pocket2、华为MateX5系列、nova12系列、华为Pura系列等多款热门机型也已纷纷展开升级适配,这意味着会有更多华为机型用户享受到HarmonyOS带来的常用常新体验。从用户反馈来看,华为Mate60系列机型在升级HarmonyOS4.2之后,体验全方位跃升。尤其是华为M

小红书被删除的评论怎么恢复?被删除的评论有提示吗? 小红书被删除的评论怎么恢复?被删除的评论有提示吗? Mar 27, 2024 am 11:56 AM

小红书作为一款流行的社交电商平台,用户可以在这里分享购物心得、生活点滴等。在使用过程中,有些用户可能会遇到自己发布的评论被删除的情况。那么,小红书被删除的评论怎么恢复呢?一、小红书被删除的评论怎么恢复?如果发现评论被误删,用户可以选择静待小红书官方团队进行恢复。在这种情况下,最好保持耐心等待,因为官方团队可能会在一段时间后自动处理并恢复评论。如果您发现评论被删除,可以考虑重新发布类似内容。但在重新发布时,请确保内容符合小红书的社区准则,以免再次遭到删除。3.联系小红书客服:如果认为自己的评论被误

Hibernate 如何实现多态映射? Hibernate 如何实现多态映射? Apr 17, 2024 pm 12:09 PM

Hibernate多态映射可映射继承类到数据库,提供以下映射类型:joined-subclass:为子类创建单独表,包含父类所有列。table-per-class:为子类创建单独表,仅包含子类特有列。union-subclass:类似joined-subclass,但父类表联合所有子类列。

iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 Jul 18, 2024 am 05:48 AM

苹果公司最新发布的iOS18、iPadOS18以及macOSSequoia系统为Photos应用增添了一项重要功能,旨在帮助用户轻松恢复因各种原因丢失或损坏的照片和视频。这项新功能在Photos应用的"工具"部分引入了一个名为"已恢复"的相册,当用户设备中存在未纳入其照片库的图片或视频时,该相册将自动显示。"已恢复"相册的出现为因数据库损坏、相机应用未正确保存至照片库或第三方应用管理照片库时照片和视频丢失提供了解决方案。用户只需简单几步

华为将在智能穿戴领域推出玄玑感知系统 可根据心率评估用户情绪状态 华为将在智能穿戴领域推出玄玑感知系统 可根据心率评估用户情绪状态 Aug 29, 2024 pm 03:30 PM

近日,华为宣布将于9月推出一款搭载玄玑感知系统的全新智能穿戴新品,预计为华为的最新智能手表。该新品将集成先进的情绪健康监测功能,玄玑感知系统以其六大特性——准确性、全面性、快速性、灵活性、开放性和延展性——为用户提供全方位的健康评估。系统采用超感知模组,优化了多通道光路架构技术,大幅提升了心率、血氧和呼吸率等基础指标的监测精度。此外,玄玑感知系统还拓展了基于心率数据的情绪状态研究,不仅限于生理指标,还能评估用户的情绪状态和压力水平,支持超过60项运动健康指标监测,涵盖心血管、呼吸、神经、内分泌、

See all articles