`
totoxian
  • 浏览: 1074925 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

数据库迁移:从SQL2005到SQL2008

阅读更多

最近我们网站新增了一台数据库服务器,需要将现有的主要数据库迁移到新服务器上。


现有的这台数据库服务器装的是SQL2005。考虑到SQL2008已经出来很久了,想必已经比较成熟,功能又比2005强,据说2005是个过渡产品,趁现在是台全新的服务器,索性安装SQL 2008,不然以后再升级可能更麻烦。


2008肯定可以兼容2005,问题是,我们除了这台主数据库,还有好几台辅助用的数据库,它们全都是2005,并且要使用主数据库的部分数据。现在主数据库升级为2008,其他的还能正常使用吗?


花了一些时间进行测试,发现2005和2008可以协同使用。除了用2005的SQL Server Management Studio去连2008不行以外,其他并没有什么问题,程序没问题,链接服务器(2005连2008)也没有什么问题。


现在是怎么个迁移法?


我想到的有两种方案:第一是备份数据库,然后在新服务器还原;第二是停掉数据库,直接拷贝数据文件到新服务器,然后在新服务器附加。


因为数据库文件太多太大了,备份还原显然不现实,耗时太长。第二种主要是附加的时候,原先各种数据文件放得很乱,没有什么章法,可能附加的时候要稍为改一下路径。


无论是备份还原还是附加数据库,都有个问题,就是原先的数据库用户怎么办?比如权限、密码等等。我们的权限甚至细分到每个表的每个字段,如果手动重新建一遍,即使没有遗漏也会累死。


用脚本搞定:
1、 脚本一,建立登录名

CREATE LOGIN [ 登录名 ] WITH PASSWORD = N' 密码 ' , DEFAULT_DATABASE = [ 默认数据库 ], DEFAULT_LANGUAGE = [ 简体中文 ], CHECK_EXPIRATION = OFF , CHECK_POLICY = OFF

GO


用SQL Server Management Studio创建的这个脚本,里面的密码加了密,结果跑到目标服务器运行之后,用原先的密码登录根本不行。也不知道怎么处理,所以要手动将脚本这里的密码改成明文。
另外,用SQL Server Management Studio创建的脚本,后面还有一句:

ALTER LOGIN [ 登录名 ] DISABLE


会自动将该登录帐号设为禁用!不知道是何居心!所以这句也要去掉。


2、 脚本二,将数据库用户映射到登录名
主要语句是
EXEC sp_change_users_login 'update_one' , [ 数据库用户名 ],[ 登录名 ];


因为我们数据库用户比较多,所以写了个游标

use [myDb]

go

DECLARE curT CURSOR FOR SELECT Name FROM sysusers WHERE Name LIKE 'myUser%' ;

DECLARE @User VARCHAR ( 50);

OPEN curT ;

FETCH NEXT FROM curT INTO @User ;

WHILE @@FETCH_STATUS = 0

BEGIN

EXEC sp_change_users_login 'update_one' , @User , @User ;

FETCH NEXT FROM curT INTO @User ;

END

CLOSE curT ;

DEALLOCATE curT ;


更新全过程:
1、 机器买回来,装操作系统,装SQL2008
2、 机器送到机房,上架
3、 挑一个良辰吉日,夜半无人,停掉网站,停掉主数据库
4、 拷贝数据库文件到新服务器
5、 在新服务器附加数据库文件
6、 依次运行脚本1、2
7、 开网站,OK


后记
切换成功以后,我陆续在一些辅助数据库服务器上升级SQL2005到SQL2008。第一台,数据量不大,访问很少,升级成功,没什么问题;第二台,因为访问量非常大,结果失败,整个数据库引擎和实例都没有了!提示什么文件或卷标名错误!只好卸载所有的SQL,然后直接装SQL2008,幸好数据库文件还在,没出什么乱子。

另外,将SQL2005升级到SQL2008,数据库是停止工作的,我后来才发现,不是什么在线。

再有就是作业的迁移。从老数据库中生成作业脚本,粘贴到新数据库中运行。有些不成功,提示:


不能将值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs';列不允许有 Null 值。INSERT 失败。


这是因为作业的所有者不同所致。比如,老数据库中作业的所有者,在新数据库中不存在,就会出现这种错误。换成sa一般都可以。

注:安装SQL2008的时候,需要先安装.NET FrameWork 3.5。我们机器全都装了3.5,上面的SQL2005能访问2008,不知道是不是跟这个有关系。

分享到:
评论

相关推荐

    SQLServer2008附加SQLServer2005数据库

    例如,从 SQL Server 2005 升级到 SQL Server 2008 的过程中,如何将原有的 SQL Server 2005 数据库顺利附加到 SQL Server 2008 上就是一个常见的需求。本文将详细介绍如何在 SQL Server 2008 上成功附加 SQL Server...

    SQL2008数据库导入到SQL2005中

    ### SQL2008数据库导入到SQL2005中的方法 #### 背景介绍 随着技术的发展,企业可能需要在不同的SQL Server版本之间迁移数据。本文将详细介绍如何将SQL Server 2008数据库导入到SQL Server 2005环境中。此过程涉及到...

    SQL-Server-2008-数据库还原到SQL-Server-2012.docx

    "数据库迁移:从 SQL Server 2008 到 SQL Server 2012" 作为一名专业的 IT 行业大师,我将详细地解释 SQL Server 2008 数据库迁移到 SQL Server 2012 的过程。 数据库迁移的必要性 随着技术的发展和业务的增长,...

    SQLServer2005迁移至SQLServer2008上面

    SQL Server 2005 到 SQL Server 2008 的数据库迁移方法 随着数据库技术的发展,数据库管理系统也在不断更新迭代,例如从 SQL Server 2005 到 SQL Server 2008。这其中,我们需要将低版本的数据库迁移到高版本上,以...

    Sqlserver数据库迁移

    在"Sqlserver数据库迁移"这个小项目中,我们主要关注的是如何将现有的SQL Server数据库从一个环境迁移到另一个环境,这可能涉及到数据的备份、恢复、复制以及同步等多个环节。以下是一些关于此话题的关键知识点: 1...

    数据库原理与应用教程:基于SQL+Server+2005.rar

    本教程涵盖了从数据库基础到SQL Server 2005高级应用的广泛内容,适合初学者和有一定经验的数据库管理员学习,旨在帮助读者全面掌握数据库原理和SQL Server 2005的实际操作。通过学习,你将能够设计、实现、管理并...

    SQL 2000数据库迁移到SQL 2005.pdf

    根据提供的文件内容,本文主要讲述了从SQL Server 2000数据库迁移到SQL Server 2005数据库的过程以及在迁移过程中需要考虑的规划和步骤。以下是从文件中提炼出的知识点: 1. 数据库版本升级的必要性:由于微软对SQL...

    SQL2008R2安装以及SQL2000数据库迁移

    SQL2008R2安装以及SQL2000数据库迁移

    SQLServer数据库迁移孤立用户的解决方法

    ### SQL Server 数据库迁移孤立用户的解决方法 在进行SQL Server数据库迁移时,经常会遇到一个棘手的问题:迁移完成后,部分用户无法与原有的登录名相对应,导致这些用户成为“孤立用户”。这种情况下,用户虽然...

    从mysql数据库迁移至sqlserver数据库

    本案例中,我们关注的是从MySQL数据库向SQL Server数据库的迁移过程,这涉及到多个关键知识点。 首先,MySQL和SQL Server是两种不同的关系型数据库管理系统(RDBMS),它们之间存在一些语法和数据类型的差异。MySQL...

    SQLSERVER到ORACLE的数据库迁移

    ### SQL Server到Oracle数据库迁移详解 #### 一、引言 随着企业的发展和技术的更新换代,企业常常需要对原有的数据库系统进行迁移或升级。本文将详细介绍如何使用Java语言实现从SQL Server到Oracle数据库的数据...

    数据库迁移工具(My SQL →SQL Server)

    数据库迁移是指将数据从一个数据库系统(如My SQL)转移到另一个数据库系统(如SQL Server),同时保持数据的一致性和完整性。这通常涉及数据抽取、转换和加载(ETL)的过程,以及可能的结构和对象的重新创建。 ...

    DBTransfer - SQL Server数据库迁移免费小工具

    本免费小工具适用于迁移SQLServer数据库(从低版本到高版本,或者从A服务器到B服务器)。只要提前做好配置和准备,不管用户库的数据量有多大,每次迁移需要停止业务的时间都可以控制在5分钟之内(操作熟练的话,2...

    瀚高迁移工具,迁移工具支持源端为Oracle、MySQL、SQL Server、DB2、Kingbase、DM

    迁移工具版本为hgdb-migration-v4.1.4,瀚高数据库迁移工具支持源端为Oracle、MySQL、SQL Server、DB2、KingbaseV7、KingbaseV8、DM7、DM8、HIGHGO数据库,目标端为HIGHGO、PostgreSQL数据库的自动化迁移,为了能更...

    SQLserver2008系统数据库的迁移.doc

    SQL Server 2008 系统数据库的迁移是一个重要的操作,主要目的是优化数据库的存储位置,提升系统性能,以及为一般数据库迁移提供基础。在SQL Server安装后,系统数据库如`master`、`model`、`msdb`和`tempdb`默认...

    数据库原理与SQL Server2005应用教程

    数据库原理与SQL Server 2005应用教程是学习数据库管理和开发的重要参考资料,尤其适合初学者及希望深入了解SQL Server 2005的用户。本教程由一位经验丰富的数据库教授编写,旨在帮助读者掌握数据库的基本概念,理解...

    MySQL数据库迁移sqlServer2008

    MySQL数据库向SQL Server 2008的迁移是一项常见的任务,尤其在企业级应用中,可能因为业务需求、系统升级或数据库性能优化等原因需要进行这种迁移。以下将详细阐述整个迁移过程中的关键步骤、可能遇到的问题及解决...

    从SQL Server 2000向SQL Server 2005迁移数据库.doc

    - **数据一致性验证**:完成数据库迁移后,应立即对数据进行一致性验证,确保所有数据已准确无误地迁移到新环境。 ### 结论 从SQL Server 2000向SQL Server 2005迁移数据库是一个多步骤的过程,涉及数据库结构的...

    oracle数据库导入到SQL server.docx

    "Oracle数据库迁移到SQL Server" 本文将详细讲解如何使用Microsoft SQL Server Migration Assistant for Oracle.exe(微软数据库迁移工具)将Oracle数据库迁移到SQL Server。该工具可以帮助用户快速、安全地将...

Global site tag (gtag.js) - Google Analytics