MSSql Server 剔除某些表进行备份

  脚本用途:

    客户因财务软件在内网,还有另一个财务系统在外网,这两个系统之间,定期需要数据同步,这个同步需要客户手动去执行。

    财务软件中有使用附件功能,附件比较大,一个账套可达10G以上,传输时间较长。

    外网的系统不需要附件,故剔除这些附件后再进行数据库备份

  脚本内容:

  --若库存在,则删除库重新创建

  if 'G90012019' in (select name from master..sysdatabases)
    drop database G90012019

  create database G90012019

  --xtype='U'表示所有用户表 'S'表示所有系统表
  if 'tablename' in (select name from sysobjects Where xtype='U')
    drop table tablename

  SELECT IDENTITY(int,1,1) as id,'select * into G90012019..'+name+' from '+name as yj
    into tablename FROM SysObjects Where XType='U' and name <>'z_fjdata' ORDER BY Name

  declare @i int,@max int,@SQLYJ varchar(512)
  set @i =1
  set @max=(select MAX(id) from tablename)

  --循环执行select into语句
  while @i<=@max
    begin
      set @SQLYJ=(select yj from tablename where @i=id)
      exec(@SQLYJ)
      set @i=@i+1
    end

  --init是覆盖之前的备份集 notinit是追加之前的备份集
  BACKUP DATABASE PUBDATA TO DISK = N'\\192.168.2.120\服务器共享文件夹\测试数据\PUBDATA_backup.bak'
    WITH NOFORMAT,INIT,NAME = N'G90012019-剔除附件库 备份', SKIP, NOREWIND, NOUNLOAD
  GO

  BACKUP DATABASE G90012019 TO DISK = N'\\192.168.2.120\服务器共享文件夹\测试数据\G90012019_backup.bak'
    WITH NOFORMAT,INIT,NAME = N'G90012019-剔除附件库 备份', SKIP, NOREWIND, NOUNLOAD
  GO

猜你喜欢

转载自www.cnblogs.com/HelloAxi/p/12179800.html
今日推荐