zoukankan      html  css  js  c++  java
  • Sql Express数据备份和还原

    参考文章:在SQL Server Express版本中没有代理功能如何自动备份数据库

    首先用以下脚本,生成可以自动备份数据库的存储过程:

    USE [master] 
    GO 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO  
     
    CREATE PROCEDURE [dbo].[sp_BackupDatabases]  
                @databaseName sysname = null,   --数据库名称            
                @backupLocation nvarchar(200)   --备份位置
    AS  
          SET NOCOUNT ON;            
          DECLARE @DBs TABLE
          (
                ID int IDENTITY PRIMARY KEY,
                DBNAME nvarchar(500)
          )           
          --用一个表来存放找到的所有数据库名
          INSERT INTO @DBs (DBNAME)
          SELECT Name FROM master.sys.databases
          where state=0 AND name=@DatabaseName OR @DatabaseName IS NULL ORDER BY Name
               
          -- 过滤掉不需要备份的数据库(自定不需要备份的数据库名称填入括号内)
          DELETE @DBs where DBNAME IN ('master','model','msdb','tempdb')         
                
          DECLARE @BackupFile varchar(100)    --备份文件名称
          DECLARE @DBNAME varchar(300)        --数据库名称
          DECLARE @sqlCommand NVARCHAR(1000)  --命令名称
          DECLARE @dateTime NVARCHAR(20)      --日期时间
          DECLARE @Loop int                   --循环备份所找到的数据库                       
                
          SELECT @Loop = min(ID) FROM @DBs   --从第1个开始备份
     
          WHILE @Loop IS NOT NULL   --有数据库要备份时进行操作
          BEGIN 
          --获得得数据库ID
          SET @DBNAME = '['+(SELECT DBNAME FROM @DBs WHERE ID = @Loop)+']'
     
          --设置当前日期和时间,格式为年月日
          SET @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),112),'/','')
     
          --设置备份文件名称,例如: D:SQLBakdbname_FULL_20171121.BAK
          SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_FULL_'+ @dateTime+ '.BAK'      
          
          --按类型执行备份操作 
          SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NOSKIP, NOFORMAT'
         
          --开始执行备份命令
          EXEC(@sqlCommand)
     
          --备份下一个数据库
          SELECT @Loop = min(ID) FROM @DBs where ID>@Loop
     
    END

    第二步执行存储过程,实现备份文件生成:

    EXEC master.dbo.sp_BackupDatabases @databaseName='myTest_Db', @backupLocation='D:	estAutoDBBack'

    一个参数是要备份的数据库名称,第二个参数是:要存放备份文件的文件夹,提前在服务器上建好文件夹。

    第三步把生成好的数据库备份文件,复制到目标文件夹中,然后在SQL Manager Studio中进行还原。

    本文基本没有什么原创内容,只是按照参考文章实验了一下。实验结果可以实现。

  • 相关阅读:
    近来几个有用的网站
    军事视频网站
    美军武器命名
    区块链的五个关键要素
    处理多媒体的两个重要工具
    Python re模块将字符串分割为列表
    Python 自动刷新网页
    selenium:chromedriver与chrome版本的对应关系
    怎么批量删除QQ空间说说?
    ssm获取数据库名称
  • 原文地址:https://www.cnblogs.com/Tpf386/p/9629542.html
Copyright © 2011-2022 走看看