天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

SQL Server 數據庫遷移偏方

  一、目的

之前在博文SQL Server 數據庫最小宕機遷移方案中提到了使用了完全備份+差異備份的功能完成了數據庫的轉移,但是這個方法在遇到了700多G的數據時顯然不適用,所以這篇中我是如何遷移700G的數據庫到新的服務器的。 

  二、分析與設計思路

  (一) 環境描述

我們的數據庫使用了SQL Server 2005的,部署在Windows Server 2003 x86位操作系統上,有一個表占了這個數據庫大部分的空間。

面對上面的情況,我們的數據庫壓力比較大了,所以我們打算在同一個集群中找另外一臺機器,轉移這個數據庫的數據過去,通過設置新服務器的一些參數來達到優化這個數據庫的目的。

  (二) 數據分析

在拿到一個數據庫的時候,我們應該查看這個數據庫相關的信息,在了解了數據庫的情況和參數之后再做出初步的評估,比如我們需要知道這個700G的數據庫中那些表占用了多少空間,索引占了多少空間(有一個SQL可以直接查看到這些信息),是否做了表分區。

了解參數的時候可以看看服務器硬件信息,比如內存、硬盤、是否做了RAID策略、什么操作系統、數據庫的版本、內存的壓力、CPU的壓力等等信息。了解這些信息是我們決定是否遷移到新的服務器的重要因素。

如果決定了進行數據遷移,那么為了不影響我們的生產的數據庫,讓生產數據庫還能進數據,我們一次要搬多少條記錄才是合適的,這個我們也是需要計算的。(搬遷的Job盡量讓時間間隔大點,如果前一個Job還沒有執行完的話,后一個Job即使到了時間也是不會執行的。)

  (三) 設計思路

  1.      創建一個表。這個表用來保存我們一次需要轉移的多少數據的ID值;(這個ID是我們要遷移表的主鍵,自增字段)。那我們需要一次性遷移多少數據呢?這個我們可以通過計算比如1000條記錄有多少M,一次傳輸對局域網的壓力大嘛?最好讓ID是一個整千或者整萬的整數,這樣方便記錄和查看。

  2.      創建一個服務器對象-鏈接服務器。這樣就可以讀取到其它服務器上的數據庫了,可以進行數據搬遷了(注意這里需要設置鏈接服務器的帳號和密碼)

  3.      創建一個存儲過程。用于讀取、控制轉移數據,這存儲過程需要比較智能一點,它需要解決下面缺陷中提到的幾個問題。

  4.      創建一個Job。這個Job就調用這個存儲過程,不過需要嘗試多幾次調用的頻率問題。

  三、參考腳本

下面列出一些重點的sql,供參考。

--1,創建表

CREATE TABLE [dbo].[Temp_MoveManage](

[Id] [int] NOT NULL,

[IsDone] [bit] NOT NULL,

[UpdateTime] [datetime] NULL,

CONSTRAINT [PK_Temp_MoveManage] PRIMARY KEY CLUSTERED

(

[Id] ASC

)
WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

)
ON [PRIMARY]

--插入數據

declare @i int

set @i=1

while @i < 50000000

begin

insert into dbo.Temp_MoveManage values(@i,0)

set @i = @i + 50000

end

--測試

select * from Temp_MoveManage


--2,鏈接服務器(省略)


--3,存儲過程

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author: <Viajar>

-- Create date: <2011.04.14>

-- Description: <轉移數據>

-- =============================================

ALTER PROCEDURE [dbo].[sp_GetMoveData]

AS

BEGIN

DECLARE @Id1 INT,@Id2 INT

DECLARE @MaxId INT--原表的最大值

SET @Id1 = 0

SET @Id2 = 0

SELECT TOP 1 @Id1 = Id FROM Temp_MoveManage WHERE IsDone = 0 ORDER BY Id

SELECT TOP 1 @Id2 = Id FROM Temp_MoveManage WHERE IsDone = 0 AND Id > @Id1 ORDER BY Id

SELECT @MaxId = MAX(Id) FROM [dbo].[ClassifyResult]

IF(@Id1 != 0 AND @Id2 != 0 AND @MaxId>=@Id2)

BEGIN

DECLARE @sql VARCHAR(MAX)

SET @sql = '

SET IDENTITY_INSERT [ClassifyResult_T] ON

INSERT INTO [dbo].[ClassifyResult_T](

[Id]

,[ClassId]

,[ArchiveId])

SELECT

[Id]

,[ClassId]

,[ArchiveId]

FROM [dbo].[ClassifyResult]

WHERE Id >=
'+ CONVERT(VARCHAR(100),@Id1) + ' and Id < '+ CONVERT(VARCHAR(100),@Id2) + '

ORDER BY Id

SET IDENTITY_INSERT [ClassifyResult_T] OFF
'

EXEC (@sql)

UPDATE Temp_MoveManage SET IsDone = 1 WHERE Id = @Id1

END

END


--4,Job(省略)

it知識庫SQL Server 數據庫遷移偏方,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 污污又黄又爽免费的网站 | 99久久亚洲 | 青草在线观看视频 | 欧美videosgratis杂交 | 久久香蕉国产线看观看首页 | 色欲AV人妻精品麻豆AV | 尤物99久久久合集一区区 | 乱叫抽搐流白浆免费视频 | 午夜宅宅伦电影网中文字幕 | 国产色综合久久无码有码 | 久草在线新是免费视频 | 一本色道久久88加勒比—综合 | 在线精品国精品国产不卡 | 手机看片成人 | 91热久久免费频精品99欧美 | 白百合在线观看 | 一本道高清到手机在线 | 国语精彩对白2021 | WWW色视频片内射 | 丫鬟粗大狠狠贯穿h | 爱豆剧果冻传媒在线播放 | 亚洲国产综合久久久无码色伦 | 亚洲国产精品一区二区三区在线观看 | 日韩影院久久 | 成人网络电视破解版 | 999久久免费高清热精品 | 欧美一级久久久久久久大 | 最近的中文字幕免费完整 | 杨幂视频1分11未删减在线观看 | 美女丝袜夹b | 少妇两个奶头喷出奶水了怎么办 | 国产v综合v亚洲欧美大片 | 忘忧草日本在线社区WWW电影 | 免费国产黄线在线播放 | 免费在线视频一区 | 成人AV无码一二二区视频免费看 | 18日本人XXXXXX18 | 狠狠综合久久综合88亚洲 | 免费三级黄色 | 亚洲在线v观看免费国 | 欧洲美女高清一级毛片 |