`

SQL Server 数据库最小宕机迁移方案

阅读更多

SQL Server 数据库最小宕机迁移方案

 

一、目的

在做SQL Server数据库维护的时候,当上司要求我们把几十G的数据文件搬动到其它服务器,并且要求最小宕机时间的时候,我们有没什么方案可以做到这些要求呢?

在这里我们假设这两台机器并不是在一个机房上,这样看起来我们的解决方案才更有意义,如果你那么好运这两台机器在同一个局域网,那么恭喜你,你可以多很多的方案可以做到。

 

二、分析与设计思路

其实我们假设的环境有两个特点:第一个是数据库文件比较大;第二个就是我们的传送文件的速度可能会比较慢。也许这传送速度我们是没有办法了,但是我们可以就从文件的大小这个问题出发,结合SQL Server的特性,这样就有了下面的解决方案了。

为了使宕机时间最短,我们这里使用了完整备份差异备份来迁移数据库,在白天的时候对需要迁移的数据库进行一次完整备份(XXX_full.bak),并把备份文件拷贝(这里可以使用FTP软件进行断点续传)到目标服务器进行还原,等到下班时间之后再进行一次差异备份(XXX_diff.bak),再把这个差异备份拷贝到目标服务器,在完整还原的基础上再进行差异还原。

这里的宕机时间 = 差异备份时间 + 传送差异备份文件时间 + 还原差异备份文件时间,这宕机时间是不是让你感觉这时间很短呢?

 

三、参考脚本

注意修改下面脚本中数据库的名称,还有绝对路径。

复制代码
--1:完整备份
declare @dbname varchar(100)
declare @sql nvarchar(max)
set @dbname = 'DataBaseName'
set @sql = '
--'+@dbname+'_full 
BACKUP DATABASE ['+@dbname+'] 
TO  DISK = ''D:\DBBackup\'+@dbname+'_full.bak''
WITH NOFORMAT, NOINIT,  NAME = '''+@dbname+'-完整数据库备份'', 
SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO'
print @sql
复制代码
复制代码
--生成的SQL
--DataBaseName_full 
BACKUP DATABASE [DataBaseName] 
TO  DISK = 'D:\DBBackup\DataBaseName_full.bak'
WITH NOFORMAT, NOINIT,  NAME = 'DataBaseName-完整数据库备份', 
SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO 
复制代码

 

复制代码
--2:完整备份还原
declare @dbname varchar(100)
declare @sql nvarchar(max)
set @dbname = 'DataBaseName'
set @sql = '
--RESTORE '+@dbname+'_full
RESTORE DATABASE ['+@dbname+'] 
FROM  DISK = ''D:\DBBackup\'+@dbname+'_full.bak''  WITH  FILE = 1,  
MOVE N''DataBase_Name'' TO N''D:\DataBase\'+@dbname+'.mdf'',  
MOVE N''DataBase_Name_log'' TO N''D:\DataBase\'+@dbname+'_log.ldf'',  
NORECOVERY,  NOUNLOAD,  REPLACE,  STATS = 10
GO'
print @sql
复制代码
复制代码
--生成的SQL
--RESTORE DataBaseName_full
RESTORE DATABASE [DataBaseName] 
FROM  DISK = 'D:\DBBackup\DataBaseName_full.bak'  WITH  FILE = 1,  
MOVE N'DataBase_Name' TO N'D:\DataBase\DataBaseName.mdf',  
MOVE N'DataBase_Name_log' TO N'D:\DataBase\DataBaseName_log.ldf',  
NORECOVERY,  NOUNLOAD,  REPLACE,  STATS = 10
GO
复制代码

 

复制代码
--3:差异备份
declare @dbname varchar(100)
declare @sql nvarchar(max)
set @dbname = 'DataBaseName'
set @sql = '
--'+@dbname+'_diff
BACKUP DATABASE ['+@dbname+'] 
TO  DISK = N''D:\DBBackup\'+@dbname+'_diff.bak''
WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  NAME = N'''+@dbname+'-差异数据库备份'', 
SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO
'
print @sql
复制代码
复制代码
--生成的SQL
--DataBaseName_diff
BACKUP DATABASE [DataBaseName] 
TO  DISK = N'D:\DBBackup\DataBaseName_diff.bak'
WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  NAME = N'DataBaseName-差异数据库备份', 
SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO
复制代码

 

复制代码
--4:差异备份还原
declare @dbname varchar(100)
declare @sql nvarchar(max)
set @dbname = 'DataBaseName'
set @sql = '
--RESTORE '+@dbname+'_full
RESTORE DATABASE ['+@dbname+'] 
FROM  DISK = ''D:\DBBackup\'+@dbname+'_diff.bak''  WITH  FILE = 1,  
NOUNLOAD,  STATS = 10
GO'
print @sql
复制代码
--生成的SQL
--RESTORE DataBaseName_full
RESTORE DATABASE [DataBaseName] 
FROM  DISK = 'D:\DBBackup\DataBaseName_diff.bak'  WITH  FILE = 1,  
NOUNLOAD,  STATS = 10
GO


原文地址 http://www.cnblogs.com/gaizai/archive/2011/03/30/2000175.html
分享到:
评论

相关推荐

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

    本文将详细介绍如何解决SQL Server数据库迁移后出现的孤立用户问题,并提供具体的解决方案。 #### 一、理解孤立用户 在SQL Server中,用户是由两部分组成的:一是登录名(Login),二是数据库中的用户(User)。...

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

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

    sql server 数据库导入导出方法

    SQL Server 数据库导入导出是数据库管理员和开发者常用的操作,目的是将数据库备份到本地或网络存储设备中,以便在需要时恢复数据库或将数据库迁移到其他服务器上。下面将详细介绍 SQL Server 数据库导入导出的方法...

    SQL Server数据库备份与恢复(C#代码示例)

    为了实现上述功能,你需要在项目中引用Microsoft.SqlServer.Smo和Microsoft.SqlServer.SqlManagementUtils库。在压缩包文件"SQL Server数据库备份与恢复"中,可能包含了详细的C#代码示例,你可以参考这些示例来理解...

    酒店管理系统,连接SQLServer 数据库 C++/Qt

    酒店管理系统,连接SQLServer 数据库 C++/Qt酒店管理系统,连接SQLServer 数据库 C++/Qt酒店管理系统,连接SQLServer 数据库 C++/Qt酒店管理系统,连接SQLServer 数据库 C++/Qt酒店管理系统,连接SQLServer 数据库 ...

    zktime5.0考勤机连接sqlserver数据库,创建及连接方法.pdf

    zktime5.0考勤机连接sqlserver数据库,创建及连接方法 1. 数据库管理系统(DBMS):sqlserver是微软公司开发的一种关系数据库管理系统(RDBMS),用于存储、处理和保护数据。 2. 数据库创建:在sqlserver中,创建...

    sqlserver数据库迁移

    本话题主要关注SQL Server数据库的迁移,结合给定的标签"C#",我们可以推断这里可能涉及到使用C#编程语言进行数据库迁移的工具或解决方案。 SQL Server数据库迁移通常包括以下几个步骤: 1. **数据备份与恢复**:...

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

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

    中控考勤软件sqlserver数据库建立办法

    在软件的安装目录下找到 SQL Server 数据库脚本(文件名:sqlserver.sql),用记事本打开,然后把里面的脚本程序全部复制。注意,复制粘贴时不要通过快捷键操作,点鼠标右键复制粘贴。 步骤 4:执行数据库脚本 在...

    C# SQL Server数据库操作DLL

    在.NET开发环境中,C#与SQL Server数据库的交互是常见的任务。这个压缩包"**C# SQL Server数据库操作DLL**"提供了一种便捷的方式,通过一个动态链接库(DLL)来处理这些操作,免去了手动编写大量基础数据库访问代码...

    C++使用ADO连接SQL Server数据库源代码

    而SQL Server则是一款由Microsoft公司推出的高效、安全的关系型数据库管理系统,适用于存储、管理和处理大量数据。当需要在C++程序中与SQL Server数据库交互时,通常会采用ActiveX Data Objects(简称ADO)技术。...

    C#SqlServer数据库链接帮助类

    C#SqlServer数据库链接帮助类

    C# 开发SQLSERVER数据库自动建表

    标题“C# 开发SQLSERVER数据库自动建表”表明我们将讨论一个使用C#开发的程序,该程序可以自动化创建SQL Server数据库中的表结构。这个功能对于数据导入、系统初始化或简化数据库管理流程非常有用。 描述中提到,该...

    SQL Server数据库迁移Mysql数据库工具

    在某些情况下,由于业务发展或技术选型的变化,可能需要将SQL Server数据库迁移至MySQL数据库。本篇文章将详细探讨这个过程,包括关键步骤、工具选择以及注意事项。 首先,SQL Server和MySQL之间的主要差异在于它们...

    C++操作SqlServer数据库

    本代码使用的默认数据库环境是MS SQL Server, study_bak是从MS SQL Server中BACKUP出来的库文件。 在使用前请先RESTORE到study库中。 如果restore失败,可以用study.sql脚本创建所有表格与视图并自行添加数据。

    sqlserver数据库jar包

    String url = "jdbc:sqlserver://localhost:1433;databaseName=myDatabase"; String user = "myUsername"; String password = "myPassword"; try { Connection conn = DriverManager.getConnection(url, user,...

    Sqlserver数据库转成mysql数据库详解

    ### Sqlserver数据库转成mysql数据库详解 #### 一、前言 随着企业信息化建设的不断发展,数据库迁移成为了常见的需求之一。特别是在不同的业务场景下,可能会出现从Microsoft SQL Server迁移到MySQL的需求。本文将...

    SQLserver 数据库表结构对比工具

    《SQL Server数据库表结构对比工具详解》 在SQL Server数据库管理中,确保数据库表结构的一致性至关重要。尤其是在多环境、多版本之间进行同步时,表结构的差异可能导致应用程序出现问题或者数据丢失。为了应对这一...

    SQLServer数据库备份再还原之后登录名丢失解决方法

    当在不同的SQL Server实例之间迁移数据库时,登录名丢失是一个常见的问题。通过上述方法,我们不仅可以检测到孤立用户的存在,还能有效地修复它们,确保数据库的完整性和可用性。此外,建议在进行备份和恢复操作之前...

    Siemens S7 1200 PLC连接SQLSERVER数据库

    为了实现数据的集中管理和分析,有时我们需要将这些控制器的数据与SQL Server数据库进行集成。本篇文章将深入探讨如何将Siemens S7 1200 PLC连接到SQL Server数据库,以便于数据的存储、查询和处理。 首先,理解...

Global site tag (gtag.js) - Google Analytics