>進入 44. 45. SET @sql = ' 46. 47. SET IDENTITY_INSERT [ClassifyResult_T] ON 48. 49. INSERT INTO [dbo].[ClassifyResult_T]( 50. 51. [Id] 52. " />
歡迎進入Windows社區論壇,與300萬技術人員互動交流 >>進入 44. 45. SET @sql = ' 46. 47. SET IDENTITY_INSERT [ClassifyResult_T] ON 48. 49. INSERT INTO [dbo].[ClassifyResult_T]( 50. 51. [Id] 52. 53. ,[ClassId] 54. 55. ,[ArchiveId]) 56. 57. SELE
歡迎進入Windows社區論壇,與300萬技術人員互動交流 >>進入
44.
45. SET @sql = '
46.
47. SET IDENTITY_INSERT [ClassifyResult_T] ON
48.
49. INSERT INTO [dbo].[ClassifyResult_T](
50.
51. [Id]
52.
53. ,[ClassId]
54.
55. ,[ArchiveId])
56.
57. SELECT
58.
59. [Id]
60.
61. ,[ClassId]
62.
63. ,[ArchiveId]
64.
65. FROM [dbo].[ClassifyResult]
66.
67. WHERE Id >= '+ CONVERT(VARCHAR(100),@Id1) + ' and Id < '+ CONVERT(VARCHAR(100),@Id2) + '
68.
69. ORDER BY Id
70.
71. SET IDENTITY_INSERT [ClassifyResult_T] OFF '
72.
73. EXEC (@sql)
74.
75. UPDATE Temp_MoveManage SET IsDone = 1 WHERE Id = @Id1
76.
77. END
78.
79.END
--4 Job(省略)
四、缺陷
缺陷1:在CreateTable生成的表中,最后一條記錄無法執行,因為最后一個Id是使用<,沒有用=,所以在轉移的表中最后一條記錄是沒有轉移過分區表的;
缺陷2:如果轉移表的記錄同時在不斷的增長,那么數據就無法把最新的數據轉移到分區表了;針對這個缺陷,本來的想法是為搬遷輔助表的Id分段加多一些記錄,這樣就可以執行最新數據;
缺陷3:對于上面的那個問題,也是有缺陷的,例如現在Id分段是100和200,當新數據Id>100的某段時間,這兩個分段值的IsDone就會給更新為1,這樣就會造成缺失了很多數據;針對這個缺陷,也是可以解決的,先去判斷當新數據的Id>200的時候,才執行導Id為100和200分段的腳本;(在存儲過程中判斷Max(Id)就可以了)
五、注意
對磁盤做RAID0(看具體情況而定)之后的創建分區時需要設置64K的分配單元大小;
64位操作系統和64位數據庫系統;
搬遷完之后需要創建這表必要的索引,遷移的時候沒有創建索引是因為頻繁的插入會影響索引,這些索引需要進行存儲位置對齊;
因為把數據庫搬遷到新的服務器了,程序鏈接的IP地址就需要修改,如果很多程序需要修改鏈接地址,那我們又沒辦法解決呢?可以通過修改服務器的IP;
測試相關的應用程序,測試數據庫的運行情況;
六、其它
這是一些朋友的建議,這里還沒有嘗試,因為環境的限制,比如數據庫是簡單模式了等情況.這里記錄下,期待適合環境的童鞋拿去用.
用Mirror遷移
考慮Log Shipping
先完整備份并在目標服務器還原,遷移前先進行事務日志備份并還原,最后將原庫所有數據庫賬號改為只讀,然后再進行一次事務日志備份并還原,這樣宕機時間會
[1] [2] [3]
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com