三步10分钟搞定数据库版本的降迁 (将后台数据库SQL2008R2降为SQL2005版本)
三步10分钟搞定数据库版本的降迁 (将SQL2008R2降为SQL2005版本)
转载原文,并注明出处!虽无多少技术含量,毕竟是作者心血原创,希望理解。
转自 http://blog.csdn.net/claro/article/details/6449824
前思后想仍觉得实战数据库版本的降迁 一文中的方式不仅老土而且低效,故有了下文三步搞定数据库从MSSQL2008R2 高版本降迁至SQL2005低版本。 整个过程如果思路清晰,数据量小,不过就是10分钟的事,效率提高很多。
我们这里仍然用上一篇的案例,即Discuz!NT 3.6.519 RC的后台数据库,这里需要利用一个免费的数据库对象同步工具,实际上整个操作过程中,这一步是最耗时低效,检查发现用OpenDBDiff和SQL-DBDiff可以高效解决这个问题。
首先,MSSQL2008R2有源数据库dnt2_db ,需要转到MSSQL2005目标数据库dnt2_dbNew中。
第一步 在低版本数据库中新建目标库。
案例中SQL2005新建数据库T-SQL:
----/****** Object: Database [dnt2_dbNew] ******/
CREATE DATABASE [dnt2_dbNew] ON PRIMARY
( NAME = N'dnt2_db', FILENAME = N'D:/Program Files/bbs/bbs3.6/dnt2_db .mdf' , SIZE = 15552KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'dnt2_db _log', FILENAME = N'D:/Program Files/bbs/bbs3.6/dnt2_db _log.ldf' , SIZE = 530112KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'dnt2_dbNew', @new_cmptlevel=90
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [dnt2_dbNew].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [dnt2_dbNew] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [dnt2_dbNew] SET ANSI_NULLS OFF
GO
ALTER DATABASE [dnt2_dbNew] SET ANSI_PADDING OFF
GO
ALTER DATABASE [dnt2_dbNew] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [dnt2_dbNew] SET ARITHABORT OFF
GO
ALTER DATABASE [dnt2_dbNew] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [dnt2_dbNew] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [dnt2_dbNew] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [dnt2_dbNew] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [dnt2_dbNew] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [dnt2_dbNew] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [dnt2_dbNew] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [dnt2_dbNew] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [dnt2_dbNew] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [dnt2_dbNew] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [dnt2_dbNew] SET DISABLE_BROKER
GO
ALTER DATABASE [dnt2_dbNew] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [dnt2_dbNew] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [dnt2_dbNew] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [dnt2_dbNew] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [dnt2_dbNew] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [dnt2_dbNew] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [dnt2_dbNew] SET READ_WRITE
GO
ALTER DATABASE [dnt2_dbNew] SET RECOVERY FULL
GO
ALTER DATABASE [dnt2_dbNew] SET MULTI_USER
GO
ALTER DATABASE [dnt2_dbNew] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [dnt2_dbNew] SET DB_CHAINING OFF
GO
第二步 将高版本的表数据全部导入低版本数据库中。
案例中SQL2008R2的表数据,这里重新说明操作步骤,如下图所示:
图1
连接SQL2005目标数据库,并操作导入数据选项
图2
选择数据源
图3
选择目标服务器
图4
复制选项设定
图5
选择源表。这里全选,而不做对目标表的设定。原因在上一篇文章的{注1}部分已说明。
图6
数据导入完毕
第三步 将高版本的数据库对象同步到低版本数据库中。
打开OpenDBDiff或SQL-DBDiff,这里使用OpendbDiff,如下图
图7 打开OpenDBDiff,并选择源和目标库
图8 比较不同数据库的对象,并生成Alter的T-SQL语句。相比上一篇文章里需要手动修改Create为Alter语句,效率明显提高。
{注:有时当数据库中已存在部分对象时,我们需要注意Open DBDiff在给出Alter针对约束或者Create针对存储过程语句时,会有点问题,可能会需要手动的微调}
此时,我们点击右侧的剪贴板来copy语句,不建议用另存为的方式,否则可能会出现图9中的因字符集问题,当然目前我还不确定是OpenDBDiff本身造成的还是我OS的问题。
将贴出的T-SQL语句在SQL2005的目标库dnt2_dbNew中执行。
图9 中文另存为时发生字符集乱码的问题
到此,三大步搞定数据库降迁!呵呵,说我骗人,这怎么可能就三步呢。-_-!
执行完毕后,再用OpenDBDiff检查两库的对象差异,最后如图10所示,都OK。
图10 最后检查OK
转载原文,并注明出处!虽无多少技术含量,毕竟是作者心血原创,希望理解。
——>总结:优秀的DBA一定要有第三方工具,这句话不是我说的。不过OpenDBDiff只能同步对象是个缺憾!
Posted by: select left('claro',2) @12:56:33
lable: SQL
转载于:https://blog.51cto.com/landy2000n/1288218
相关文章:

jdbc链接数据库
JDBC简介 JDBC全称为:Java Data Base Connectivity (java数据库连接),可以为多种数据库提供填统一的访问。JDBC是sun开发的一套数据库访问编程接口,是一种SQL级的API。它是由java语言编写完成,所以具有很好的跨平台特性…

Google Protocol Buffers介绍
Google Protocol Buffers(简称Protobuf),是Google的一个开源项目,它是一种结构化数据存储格式,是Google公司内部的混合语言数据标准,是一个用来序列化(将对象的状态信息转换为可以存储或传输的形式的过程)结…

打造 AI Beings,和微信合作…第七代微软小冰的成长之路
8月15日, “第七代微软小冰”年度发布会在北京举行。本次发布会上,微软(亚洲)互联网工程院带来了微软小冰在 Dual AI 领域的新进展,全新升级的部分核心技术,最新的人工智能创造成果,以及更多的合作与产品落地。其中&am…
感知机介绍及实现
感知机(perceptron)由Rosenblatt于1957年提出,是神经网络与支持向量机的基础。感知机是最早被设计并被实现的人工神经网络。感知机是一种非常特殊的神经网络,它在人工神经网络的发展史上有着非常重要的地位,尽管它的能力非常有限,…

不甘心只做输入工具,搜狗输入法上线AI助手,提供智能服务
8月19日搜狗输入法上线了新功能——智能汪仔,在输入法中引入了AI助手,这是搜狗输入法继今年5月推出“语音变声功能”后又一个AI落地产品。 有了智能汪仔AI助手的加持后,搜狗输入法能够在不同的聊天场景,提供丰富多样的表达方式从…
可构造样式表 - 通过javascript来生成css的新方式
可构造样式表是一种使用Shadow DOM进行创建和分发可重用样式的新方法。 使用Javascript来创建样式表是可能的。然而,这个过程在历史上一直是使用document.createElement(style)来创建<style>元素,然后通过访问其sheet属性来获得一个基础的CSSStyle…

模板方法模式与策略模式的区别
2019独角兽企业重金招聘Python工程师标准>>> 模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 策略模式:定义一个…

简单明了,一文入门视觉SLAM
作者 | 黄浴转载自知乎【导读】SLAM是“Simultaneous Localization And Mapping”的缩写,可译为同步定位与建图。最早,SLAM 主要用在机器人领域,是为了在没有任何先验知识的情况下,根据传感器数据实时构建周围环境地图,…
大主子表关联的性能优化方法
【摘要】主子表是数据库最常见的关联关系之一,最典型的包括合同和合同条款、订单和订单明细、保险保单和保单明细、银行账户和账户流水、电商用户和订单、电信账户和计费清单或流量详单。当主子表的数据量较大时,关联计算的性能将急剧降低,在…

Windows7上配置Python Protobuf 操作步骤
1、 按照http://blog.csdn.net/fengbingchun/article/details/8183468 中步骤,首先安装Python 2.7.10; 2、 按照http://blog.csdn.net/fengbingchun/article/details/47905907 中步骤,配置、编译Protobuf; 3、 将(2)中生成的pr…

鲜为人知的静态、命令式编程语言——Nimrod
Nimrod是一个新型的静态类型、命令式编程语言,支持过程式、函数式、面向对象和泛型编程风格而保持简单和高效。Nimrod从Lisp继承来的一个特殊特性抽象语法树(AST)作为语言规范的一部分,可以用作创建领域特定语言的强大宏系统。它还…

机器学习进阶-图像形态学操作-腐蚀操作 1.cv2.erode(进行腐蚀操作)
1.cv2.erode(src, kernel, iteration) 参数说明:src表示的是输入图片,kernel表示的是方框的大小,iteration表示迭代的次数 腐蚀操作原理:存在一个kernel,比如(3, 3),在图像中不断的平移,在这个9…

无需成对示例、无监督训练,CycleGAN生成图像简直不要太简单
作者 | Jason Brownlee译者 | Freesia,Rachel编辑 | 夕颜出品 | AI科技大本营(ID: rgznai100)【导读】图像到图像的转换技术一般需要大量的成对数据,然而要收集这些数据异常耗时耗力。因此本文主要介绍了无需成对示例便能实现图…

Git使用常见问题解决方法汇总
1. 在Ubuntu下使用$ git clone时出现server certificate verification failed. CAfile:/etc/ssl/certs/ca-certificates.crt CRLfile: none 解决方法:在执行$ git clone 之前,在终端输入: export GIT_SSL_NO_VERIFY1 2. 在Windows上更新了…

服务器监控常用命令
在网站性能优化中,我们经常要检查服务器的各种指标,以便快速找到害群之马。大多情况下,我们会使用cacti、nagois或者zabbix之类的监控软件,但是这类软件安装起来比较麻烦,在一个小型服务器,我们想尽快找到问…
Ubuntu下内存泄露检测工具Valgrind的使用
在VS中可以用VLD检测是否有内存泄露,可以参考http://blog.csdn.net/fengbingchun/article/details/44195959,下面介绍下Ubuntu中内存泄露检测工具Valgrind的使用。Valgrind目前最新版本是3.11.0, 可以从http://www.valgrind.org/ 通过下载源码…

数据为王的时代,如何用图谱挖掘商业数据背后的宝藏?
这是一个商业时代,一个数据为王的时代,也是一个 AI 迎来黄金发展期的时代。据史料记载,商业在商朝已初具规模。斗转星移,时光流转,到 2019 年,商业形式已发生翻天覆地的变化,但是商业的本质——…

旋转卡壳——模板(对踵点)
这东西学了我大概两天吧。。其实不应该学这么久的,但是这两天有点小困,然后学习时间被削了很多\(QwQ\) 说几个坑点。 - 对于题目不保证有凸包的情况,要选用左下角的点,而非单纯的最下边的点构造凸包。 - 对于凸包中只有\(1/2\)个点…

SNMP 协议 OID的使用
为什么80%的码农都做不了架构师?>>> SNMP 协议 OID的使用 SNMP(Simple Network Management Protocol简单网络管理)协议 是现在网络管理系统(NMS)监控网络设备状态的协议,是现在网管事实上的标准…

颜色空间YUV简介
YUV概念:YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL,Phase Alternation Line),是PAL和SECAM模拟彩色电视制式采用的颜色空间。其中的Y、U、V几个字母不是英文单词的组合词,Y代表亮度,其实Y就是图像的灰度值…

基于RNN的NLP机器翻译深度学习课程 | 附实战代码
作者 | 小宋是呢来源 | CSDN博客深度学习用的有一年多了,最近开始NLP自然处理方面的研发。刚好趁着这个机会写一系列 NLP 机器翻译深度学习实战课程。本系列课程将从原理讲解与数据处理深入到如何动手实践与应用部署,将包括以下内容:…

trash-cli设置Linux 回收站
trash-cli 设置 Linux 回收站 trash-cli是一个使用 python 开发的软件包,包含 trash-put、restore-trash、trash-list、trash-empty、trash-rm等命令,我们可以通过这条命令,将文件移动到回收站,或者还原删除了的文件。 trash-cli的…

磁盘有时也不可靠
实验服务器的磁盘是最近买的,当卖家问我要普通的还是高级的, 我选择了普通,现在追悔莫及。今天的分析更加详细。首先发现每次实验,出错的文件都不一样,所以应该不是临界条件的问题。下表总结了出错的位置,原…

从原理到落地,七大维度详解矩阵分解推荐算法
作者 | gongyouliu编辑丨Zandy来源 | 大数据与人工智能 ( ID: ai-big-data)导语:作者在《协同过滤推荐算法》这篇文章中介绍了 user-based 和 item-based 协同过滤算法,这类协同过滤算法是基于邻域的算法(也称为基于内存的协同过…

libyuv库的使用
libyuv是Google开源的实现各种YUV与RGB之间相互转换、旋转、缩放的库。它是跨平台的,可在Windows、Linux、Mac、Android等操作系统,x86、x64、arm架构上进行编译运行,支持SSE、AVX、NEON等SIMD指令加速。下面说一下libyuv在Windows7VS2013 x6…

封装 vue 组件的过程记录
在我们使用vue的开发过程中总会遇到这样的场景,封装自己的业务组件。 封装页面组件前要考虑几个问题:1、该业务组件的使用场景 2、在什么条件下展示一些什么数据,数据类型是什么样的,及长度颜色等 3、如果是通用的内容,…
Service的基本组成
Service与Activity的最大区别就是一有界面,一个没有界面。 如果某些程序操作很消耗时间,那么可以将这些程序定义在Service之中,这样就可以完成程序的后台运行, 其实Service就是一个没有界面的Activity,执行跨进程访问也…
BP神经网络公式推导及实现(MNIST)
BP神经网络的基础介绍见:http://blog.csdn.net/fengbingchun/article/details/50274471,这里主要以公式推导为主。BP神经网络又称为误差反向传播网络,其结构如下图。这种网络实质是一种前向无反馈网络,具有结构清晰、易实现、计算…
AI应用落地哪家强?CSDN AI Top 30+案例评选等你来秀!
人工智能历经百年发展,如今迎来发展的黄金时期。目前,AI 技术已涵盖自然语言处理、模式识别、图像识别、数据挖掘、机器学习等领域的研究,在汽车、金融、教育、医疗、安防、零售、家居、文娱、工业等行业获得了令人印象深刻的成果。 在各行业…
安利Mastodon:属于未来的社交网络
我为Mastodon开发了一款安卓客户端,v1.0版本已经发布,欢迎下载使用 源码在这里:https://github.com/shuiRong/Gakki ??? 正文 Mastodon(长毛象)是什么? 是一个免费开源、去中心化、分布式的微博客社交网络,是微博、…