zoukankan      html  css  js  c++  java
  • 数据库备份通用脚本

    1.创建一个新库;
    2.从旧库中导出生成表,视图,存储过程;(GpsExpiredData,GpsReceRealTime两张表不还原)
    3.在新创建库中输入创建脚本;
    4.数据迁移;
    (迁移时注意:GpsExpiredData,GpsReceRealTime,GpsReceRealTime_buff1,GpsReceRealTime_buff2,
    GpsOutEquipmentHistory_buff,GpsOutEquipmentHistory,report_开头的;不要导出数据);

    5.新数据库备份分离脱机----->copy

    /****** 对象: StoredProcedure [dbo].[Proc_InsertData] 脚本日期: 12/13/2011 10:46:45 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO


    CREATE PROCEDURE [dbo].[Proc_InsertData](
    @tbname varchar(50) ----目标数据库
    ,@sourcetbname varchar(200)) ----源数据库
    AS
    BEGIN

    declare @Str varchar(max) , @sql varchar(max)
    SELECT @Str=REPLACE(REPLACE(
    (SELECT c.name
    FROM sys.columns c JOIN sys.objects o ON (c.object_id = o.object_id)
    WHERE o.name=@tbname FOR XML PATH('')
    ),'<name>','['),'</name>','],')
    set @Str= LEFT(@str,LEN(@str)-1) ---获取表字段字符串

    declare @mark int
    Select @mark=OBJECTPROPERTY(OBJECT_ID(@tbname),'TableHasIdentity') ---判断是否含有标志列
    if @mark = 1
    set @sql= --'TRUNCATE TABLE '+ @tbname
    ' SET IDENTITY_INSERT '+ @tbname + ' ON '
    +' INSERT '+@tbname+'('+@Str+') SELECT '+@Str +' FROM '+ @sourcetbname
    +' SET IDENTITY_INSERT '+ @tbname + ' OFF '
    else
    set @sql = --'TRUNCATE TABLE '+ @tbname
    ' INSERT '+@tbname+'('+@Str+') SELECT '+@Str +' FROM '+ @sourcetbname

    print @sql
    exec(@sql) ----执行插入数据操作
    END
    GO

    -------------------------------------------------------------------------

    /****** 对象: StoredProcedure [dbo].[Proc_ImportDataFromDB] 脚本日期: 12/13/2011 10:45:53 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    --在目标数据库中执行
    CREATE PROCEDURE [dbo].[Proc_ImportDataFromDB] @DBName VARCHAR(40) --源数据库名称
    AS
    BEGIN
    DECLARE @tbname VARCHAR(40) ,@sql VARCHAR(max)

    DECLARE t_cursor CURSOR FOR
    SELECT name FROM sysobjects WHERE TYPE = 'U ' ORDER BY name

    OPEN t_cursor

    FETCH NEXT FROM t_cursor INTO @tbname

    WHILE @@FETCH_STATUS=0
    BEGIN
    IF (@tbname NOT IN ('Elec_CurrentPosInfo'
    ,'')) -- 相关轨迹数据或临时数据表,不进行导入
    BEGIN
    SET @sql= ' PROC_InsertData '''+ @tbname + ''' , '''+@DBName+'.dbo.' + @tbname +''''
    PRINT @sql
    EXEC(@sql)
    END
    FETCH NEXT FROM t_cursor INTO @tbname
    END

    CLOSE t_cursor
    DEALLOCATE t_cursor
    END

    -----------------------------

    exec [Proc_ImportDataFromDB] '--DB'

  • 相关阅读:
    JS判断输入是否为整数和数字的正则表达式
    c#字符串转换为日期,支持任意字符串
    清除sql server 登录的时候记住的账户
    关于sql 的convert 格式设置
    ArcObjects SDK(AE)10.1在vs2012安装的方法
    解决ArcGIS Engine AE 读取shapefile中文属性乱码的一条偏方
    skyline TerraBuilder 制作MPT方法与技巧(2)
    skyline TerraBuilder 制作MPT方法与技巧(1)
    Makefile之文件搜索
    Makefile学习之通配符和自动变量($@、$<、$^)
  • 原文地址:https://www.cnblogs.com/daizhipeng/p/6143797.html
Copyright © 2011-2022 走看看