iT邦幫忙

0

MS SQL SERVER 轉移問題

  • 分享至 

  • xImage

小弟最近有一個CASE,需要將SQL SERVER轉移,遇到一些問題,需要大家幫忙給些意見
A SERVER:MS SQL 2000
B SERVER:MS SQL 2008 R2 (從A SERVER 轉移過來 B SERVER)
C SERVER:MS SQL 2008 R2 (用來備援B SERVER掛掉使用)
目前想先從2000轉2008,再從2008跳到2012
但目前有一些問題想要釐清…
從2000轉移至2008,第一次先用BAK還原過去…但之後想先同步A跟B的資料,確保以後把A撤掉,B馬上可以使用。
目前有使用過複寫,但複寫的話,有些表沒主鍵無法複寫加上有此表有用IDENTITY屬性(累加值),複寫似乎無法COPY。
另一個方法是用DTS,直接倒整個資料庫過去,但只能2000 VS 2000,無倒入之2008功能(引擎不同吧)
在這請問各位有沒有什麼比較好的方法做A跟B的同步(一致性)?
另外B跟C的部份,複寫一樣會有上述問題存在,使用SSIS的話,應該是有支援2008 VS 2008,但資料卻不是很即時,因為是排程在跑,請問有比較好的方式嗎?
上述轉移問題都想要包括預存程序、資料庫使用者的同步,由於小弟對資料庫懂的不是很深,再請各位幫忙給意見,謝謝!

看更多先前的討論...收起先前的討論...
疑?Summertw大哥的回答怎麼不見了?
summertw iT邦好手 1 級 ‧ 2014-10-21 10:52:05 檢舉
Sorry ...剛去爬山(奇萊連峰)回來,頭殼有一點不靈光,目瞅給他有點看錯位置,所以指頭就犯了賤,按金昔了.....已處份了指頭,叫他重打了...Sorry...
大哥請教~您意思是說,二台不同電腦,可以擁有相同的資料庫嗎? 環境一樣的話。
如果是,那我可以建立一個如上的備援機囉~ 只要SQL連線端連線對象換到第二台?
電腦名稱不同沒關係?
外獅佬 iT邦大師 1 級 ‧ 2015-09-15 15:30:17 檢舉
可惜是2008....如果是2012以上的版本,可以直接用AlwaysOn這個功能去做忙
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

8
summertw
iT邦好手 1 級 ‧ 2014-10-21 10:47:47

對不起,不小心按到刪除了,所以只好重新再打一次..

樓主大大應該不必這麼麻煩才對..
若是貴公司的B Server掛點,不必做到C Server一定要馬上接續上工作(零時差接軌)的話,那請參考下面的做法。
1.先暫停 A Server,指令如次..Net Stop MSSQLServer
2.將 A Server的DB,Copy到 B Server上。
3.重新啟動 A Server,指令如次..Net Start MSSQLServer
完成上面工作後,接下來是 B Server的工作。
4.開啟SQL Server Management Studio,並開啟一個工作窗,輸入下面替令。
USE [master]
GO
CREATE DATABASE [DB Name] ON
( FILENAME = N'Driver:\Path\DB_File_Data.MDF' ),
( FILENAME = N'Driver:\Path\DB_File_log.LDF' )
FOR ATTACH
GO
註:
DB Name =>資料庫名稱
Driver =>磁碟機代號,如C:或D: ...
Path =>資料所在路徑
完成以上工作,資料庫就會自動的掛載到B Server裡了,至於SQL 2000的DB轉至SQL 2008 R2上,SQL 2008 R2會自動的更改其型態,使其符會SQL 2008 R2所需,也會保留IDENTITY屬性(累加值)。

若是不想讓機器停機太久,可使用批次檔(bat或是cmd皆可)配合系統排程,在早上03:00開始執行。
依我個人經驗,25GB的DB,包括壓縮作業,大約30分完成,只有停機、Copy、重啟,大約20分內完成。

第4步驟若是不想用指令操作,可在開啟SQL Server Management Studio後,在DataBase按右鍵,選Attach,然後看圖說故事就可以完成了。

一般要做到熱點備援的機構並不多,因為維護成本真的太高了;除了醫院、金融機構、政府效能型單位、ISP業者等等外,其餘的一般公司,都會有一至兩小時的接續時間,所以C Server應該採用溫點備作業即可,不必做到熱點備援,

以上供樓主參考,希望對你有幫助。

看更多先前的回應...收起先前的回應...
commute86 iT邦新手 5 級 ‧ 2014-10-21 16:48:04 檢舉

summertw大大你好,因為A SERVER無法停止,需24小時作業,所以才會採用備份&還原的方式(因為可以不用停止運作,所以暫不考慮附加)去新建B SERVER的資料庫,所以才會想要保持A與B的資料一致性,隨時可做切換。
目前還是想要得到我發問的問題之參考意見,複寫會遇到一些問題,另外一個就是定期做備份A,還原資料庫B的方式,但大概一天做一次吧,這方式比較不即時。
另外溫點備作業是指什麼?定期備份?

okra iT邦研究生 3 級 ‧ 2014-10-21 21:20:52 檢舉

強!讚
請問,參考summertw大大的做法,SQL Server 2008 R2 Express的DB轉至SQL 20014 STD上ok嗎?

summertw iT邦好手 1 級 ‧ 2014-10-22 17:15:09 檢舉

目前,我己測過2008 R2的DB,直接掛回SQL 2014上了,沒有問題...
Express VS STD,基本上僅是資料庫的成長極限與連線人數受到約束,其餘皆一樣...可放心掛上,沒有問題。

okra iT邦研究生 3 級 ‧ 2014-10-22 17:33:06 檢舉

有SQL Server 2008 R2 Express的DB over 10GB掛了。謝謝summertw大大!謝謝

summertw iT邦好手 1 級 ‧ 2014-10-22 17:44:22 檢舉

commute86提到:
溫點備作業是指什麼

備援工作可分為溫點備援及熱點備援,當然也有冷點備援,這都是備援工作的分級,也是學術上的一個名詞...
備援工作指的是,當你的原工作伺服器掛掉時,由你的備援伺服器接續提供同樣的工作及資料之準備謂之,而分級(冷點、溫點、熱點)則指的是異地備份機器的工作狀態。
當原工作伺服器掛掉時,備援伺服器必須立即接續上工作,不可中斷,這種方式,稱為【熱點備援】;這種方式必須同時的維護原工作伺服器及異地備援的備援伺服器,因為兩地的伺服器,隨時都可能出狀況,所以維護成本很高,若非【醫院、金融機構、政府效能型單位、ISP業者等等外】,一般單位不建議採用。
當原工作伺服器掛掉時,備援伺服器只要在四個小時內接續上工作,並予許部份資料遺失,這種方式,稱為【溫點備援】;異地備援伺服器只要定時維護,不必24小時開機成備戰狀態,只要在原工作伺服器掛掉時,立即將最後一次備份的DB掛上,即可接續工作,因為不必維護異地的資訊機器,成本下降許多,大多建議一般企業採用。
冷點備援則只是在異地準備好相同機器設備,但不執行任何安裝及機器啟用的工作,資料庫DB用人工備份出來,等原工作伺服器掛掉時,備援機器再開始執行安裝、資料庫掛上等工作...
樓主的A SERVER供法暫停,必然用到SQL SERVER的線上備份工作,它的操作很麻煩,就連領有微軟認證的工程師都不一定能完成搞定。檈主有提到,DTS引擎相容的問題,我曾看過微軟的手冊,他們有交代,可與台灣微軟聯絡,其言下之意是你得花錢,他才會告訴你,大約這個問題是20,000新台幣吧...
所以,你就考量一下了,看看是說服你的業主花這兩萬元或是每日讓機器停個20分鐘作資料整理,就看你的決定了。

commute86 iT邦新手 5 級 ‧ 2014-10-22 23:33:17 檢舉

嗯,謝謝您的回答,我想DTS相容問題就放棄了吧,那個只能等到2008有SSIS再來使用對CO的方式,目前還是想採用備份A SERVER的BAK檔還原至B SERVER上(使用T-SQL指令設排程定時跑,效能不知如何?),備份還原應該就不用停止服務了吧(?),另外大大所提到的20分鐘資料整理是指附加還是還原?
另外提到的線上備份工作是指always on或cluster嗎?
最後一個問題是針對沒主鍵或有用identity屬性的表,做同步異動(複寫),無其它方式解決嗎?(在未來升到2008後)

commute86 iT邦新手 5 級 ‧ 2014-10-31 00:11:27 檢舉

summertw

summertw大大有空回答嗎@@

0
一級屠豬士
iT邦大師 1 級 ‧ 2014-10-21 11:35:36

蛙大這招很實用,直接拷貝檔案,用ATTACH方式掛進去.
就可以搞一台新的了.灑花
一張圖奉上:

我要發表回答

立即登入回答