最近我们网站新增了一台数据库服务器,需要将现有的主要数据库迁移到新服务器上。
现有的这台数据库服务器装的是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,不知道是不是跟这个有关系。
分享到:
相关推荐
例如,从 SQL Server 2005 升级到 SQL Server 2008 的过程中,如何将原有的 SQL Server 2005 数据库顺利附加到 SQL Server 2008 上就是一个常见的需求。本文将详细介绍如何在 SQL Server 2008 上成功附加 SQL Server...
### SQL2008数据库导入到SQL2005中的方法 #### 背景介绍 随着技术的发展,企业可能需要在不同的SQL Server版本之间迁移数据。本文将详细介绍如何将SQL Server 2008数据库导入到SQL Server 2005环境中。此过程涉及到...
"数据库迁移:从 SQL Server 2008 到 SQL Server 2012" 作为一名专业的 IT 行业大师,我将详细地解释 SQL Server 2008 数据库迁移到 SQL Server 2012 的过程。 数据库迁移的必要性 随着技术的发展和业务的增长,...
SQL Server 2005 到 SQL Server 2008 的数据库迁移方法 随着数据库技术的发展,数据库管理系统也在不断更新迭代,例如从 SQL Server 2005 到 SQL Server 2008。这其中,我们需要将低版本的数据库迁移到高版本上,以...
在"Sqlserver数据库迁移"这个小项目中,我们主要关注的是如何将现有的SQL Server数据库从一个环境迁移到另一个环境,这可能涉及到数据的备份、恢复、复制以及同步等多个环节。以下是一些关于此话题的关键知识点: 1...
本教程涵盖了从数据库基础到SQL Server 2005高级应用的广泛内容,适合初学者和有一定经验的数据库管理员学习,旨在帮助读者全面掌握数据库原理和SQL Server 2005的实际操作。通过学习,你将能够设计、实现、管理并...
根据提供的文件内容,本文主要讲述了从SQL Server 2000数据库迁移到SQL Server 2005数据库的过程以及在迁移过程中需要考虑的规划和步骤。以下是从文件中提炼出的知识点: 1. 数据库版本升级的必要性:由于微软对SQL...
SQL2008R2安装以及SQL2000数据库迁移
### SQL Server 数据库迁移孤立用户的解决方法 在进行SQL Server数据库迁移时,经常会遇到一个棘手的问题:迁移完成后,部分用户无法与原有的登录名相对应,导致这些用户成为“孤立用户”。这种情况下,用户虽然...
本案例中,我们关注的是从MySQL数据库向SQL Server数据库的迁移过程,这涉及到多个关键知识点。 首先,MySQL和SQL Server是两种不同的关系型数据库管理系统(RDBMS),它们之间存在一些语法和数据类型的差异。MySQL...
### SQL Server到Oracle数据库迁移详解 #### 一、引言 随着企业的发展和技术的更新换代,企业常常需要对原有的数据库系统进行迁移或升级。本文将详细介绍如何使用Java语言实现从SQL Server到Oracle数据库的数据...
数据库迁移是指将数据从一个数据库系统(如My SQL)转移到另一个数据库系统(如SQL Server),同时保持数据的一致性和完整性。这通常涉及数据抽取、转换和加载(ETL)的过程,以及可能的结构和对象的重新创建。 ...
本免费小工具适用于迁移SQLServer数据库(从低版本到高版本,或者从A服务器到B服务器)。只要提前做好配置和准备,不管用户库的数据量有多大,每次迁移需要停止业务的时间都可以控制在5分钟之内(操作熟练的话,2...
迁移工具版本为hgdb-migration-v4.1.4,瀚高数据库迁移工具支持源端为Oracle、MySQL、SQL Server、DB2、KingbaseV7、KingbaseV8、DM7、DM8、HIGHGO数据库,目标端为HIGHGO、PostgreSQL数据库的自动化迁移,为了能更...
SQL Server 2008 系统数据库的迁移是一个重要的操作,主要目的是优化数据库的存储位置,提升系统性能,以及为一般数据库迁移提供基础。在SQL Server安装后,系统数据库如`master`、`model`、`msdb`和`tempdb`默认...
数据库原理与SQL Server 2005应用教程是学习数据库管理和开发的重要参考资料,尤其适合初学者及希望深入了解SQL Server 2005的用户。本教程由一位经验丰富的数据库教授编写,旨在帮助读者掌握数据库的基本概念,理解...
MySQL数据库向SQL Server 2008的迁移是一项常见的任务,尤其在企业级应用中,可能因为业务需求、系统升级或数据库性能优化等原因需要进行这种迁移。以下将详细阐述整个迁移过程中的关键步骤、可能遇到的问题及解决...
- **数据一致性验证**:完成数据库迁移后,应立即对数据进行一致性验证,确保所有数据已准确无误地迁移到新环境。 ### 结论 从SQL Server 2000向SQL Server 2005迁移数据库是一个多步骤的过程,涉及数据库结构的...
"Oracle数据库迁移到SQL Server" 本文将详细讲解如何使用Microsoft SQL Server Migration Assistant for Oracle.exe(微软数据库迁移工具)将Oracle数据库迁移到SQL Server。该工具可以帮助用户快速、安全地将...