MSSqlServer 数据库降级及数据转移
--MSSqlServer数据库降级及数据转移
--MS SQL SERVER高版本数据库(Database_A)恢复数据到低版本数据库(Database_B)中
--1、数据库结构对象(包含表、视图、函数、存储过程等)导出:高版本MS SQL SERVER中,Database_A -- 任务 -- 生成脚本 -- 执行 -- 保存为 DBObject_Create.sql;
--2、修改DBObject_Create.sql中数据库名称(避免重名,用查找替换方式)、数据文件保存路径(按Database_B的路径);
--3、低版本MS SQL SERVER中,执行DBObject_Create.sql,创建与Database_A数据库相同的表、视图、存储过程、函数等对象;
--4、将Database_B中表的外键置为“不检查约束”:
SET XACT_ABORT ON
BEGIN TRAN
DECLARE @SQL VARCHAR(99)
DECLARE CUR_FK CURSOR LOCAL FOR
SELECT 'ALTER TABLE '+ OBJECT_NAME(FKEYID) + ' NOCHECK CONSTRAINT ALL ' FROM SYSREFERENCES
OPEN CUR_FK
FETCH CUR_FK INTO @SQL
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC(@SQL)
FETCH CUR_FK INTO @SQL
END
CLOSE CUR_FK
DEALLOCATE CUR_FK;
--执行完毕后关闭窗口,提示提交数据
--5、禁用Database_B中表的触发器:
SET XACT_ABORT ON
BEGIN TRAN
DECLARE @SQL VARCHAR(99)
DECLARE CUR_TRI CURSOR LOCAL FOR
SELECT 'ALTER TABLE '+ OBJECT_NAME(FKEYID) + ' DISABLE TRIGGER ALL ' FROM SYSREFERENCES
OPEN CUR_TRI
FETCH CUR_TRI INTO @SQL
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC(@SQL)
FETCH CUR_TRI INTO @SQL
END
CLOSE CUR_TRI
DEALLOCATE CUR_TRI;
--执行完毕后关闭窗口,提示提交数据
--6、数据导入:低版本MS SQL SERVER中,Database_B -- 任务 -- 导入数据 -- 源数据库(Database_A)-- 目标数据库(Database_B)-- 执行;
--或者在高版本数据库上执行:导出数据
--导入对象中不要选择视图(系统会提示视图对象已存在)
--7、将Database_B中表的外键置为“检查约束”:
SET XACT_ABORT ON
BEGIN TRAN
DECLARE @SQL VARCHAR(99)
DECLARE CUR_FK CURSOR LOCAL FOR
SELECT 'ALTER TABLE '+ OBJECT_NAME(FKEYID) + ' CHECK CONSTRAINT ALL ' FROM SYSREFERENCES
OPEN CUR_FK
FETCH CUR_FK INTO @SQL
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC(@SQL)
FETCH CUR_FK INTO @SQL
END
CLOSE CUR_FK
DEALLOCATE CUR_FK;
--执行完毕后关闭窗口,提示提交数据
--8、启用Database_B中表的触发器:
SET XACT_ABORT ON
BEGIN TRAN
DECLARE @SQL VARCHAR(99)
DECLARE CUR_TRI CURSOR LOCAL FOR
SELECT 'ALTER TABLE '+ OBJECT_NAME(FKEYID) + ' ENABLE TRIGGER ALL ' FROM SYSREFERENCES
OPEN CUR_TRI
FETCH CUR_TRI INTO @SQL
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC(@SQL)
FETCH CUR_TRI INTO @SQL
END
CLOSE CUR_TRI
DEALLOCATE CUR_TRI;
--执行完毕后关闭窗口,提示提交数据
--9、数据库比较:Database_A Vs Database_B
转自:上海-戴优辰
出处:http://www.cnblogs.com/maanshancss/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。所有源码遵循Apache协议,使用必须添加 from maanshancss