不懂事的小男孩

数据库备份通用脚本

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'

 

posted on 2016-12-08 10:02  不懂事的小男孩  阅读(353)  评论(0编辑  收藏  举报