天天看点

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

title: sqlserver · 最佳实践 · 如何将sql server 2012降级到2008 r2

使用sqlserver 2012的特性在sql 2008 r2不支持,比如新的分页方式

此迁移操作手册适用于mssql2012到mssql2008r2的迁移

迁移使用微软提供的脚本生成和导入导出工具

需要在本地将mssql2012迁移完成,并且应用改造完成测试通过方可上rds

迁移到mssql2008r2 rds通过备份还原的方式进行

安装2008 r2的数据库实例

这个很简单,安装数据库实例应该很横轻松

在新建的2008 r2上创建数据库

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

为数据库创建用户并分配角色等权限信息

主要是将原来的login和用户创建到新的实例,例如:需要注意的是2012的hash密码和2008 r2的hash密码已经不太一样了。需要原先的密码或者重置密码

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

2012 上查看数据库用户的及角色:

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

将这些角色和权限复制到2008 r2上,可以通过ssms ui或者脚本执行

在2012上禁止更新任何对象的结构

不能在表,视图,用户函数,存储过程上进行任何修改动作

在2012上生成架构,表,视图,用户函数,存储过程,作业等脚本

选择数据库

右键点击“任务”,再点击“生成脚本”

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

设置脚本编写选项

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

高级属性选择脚本的属性

方框内的需要特别注意,这里外键一定不要选true

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

选择对象

根据自己的数据库情况选择哪些需要导入过去

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

生成脚本到文件或者到查询窗口

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

生成job脚本

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

在2008 r2执行生成的脚本

将刚才生成的脚本在2008 r2上执行并且保证完全成功。如果有错误,需要查明原因并且手动创建上去,可能出现的错误有:

表依赖某些对象不存在

函数,存储过程引用对象不存在,找出不存在的对象创建上

如果对象不全需要查明原因

比较对象是否一致

主要检查表、视图、用户自定义函数、存储过程,如果有其他类型,请调整type参数

用户停止业务,包括由job产生的业务

让用户停止所有业务,同时停止sql agent

disable用户的登录,进一步保证业务不再使用

disable登录,禁止用户登录数据库

通过数据库导入导出工具将2012所有数据导入到2008 r2中

开始 ->所有程序 ->microsoft sql server 2012 ->导入和导出数据

操作请按照下列图所示:

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

这里请不要选择视图,只选择表就好

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

验证数据库正确性

请count一下数据量的大小,并进行对比。同时可以验证数据的准确性

为数据库的表创建外键关系

生成外键的方法: 设置脚本编写选项高级:红色框内为true,其他都为false

SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2
SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2

生成脚本,去掉表结构,只剩下外键关系的脚本,然后在mssql 2008 r2上运行就好了。

用户更改连接字符串后进行业务测试

开启原来的实例的login

启动原来的实例的sql agent

用户连接字符串修改到原来的访问地址

如果迁移失败将进行回滚

如果表有主外键关系需要先解除外键关系,最后再创建,按照上述步骤就好了

数据库的排序规则要保持一致

如果有表有时间戳列,表需要单独拿出来处理,时间戳列是不需要导入的