qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

          SQL Server 計(jì)算機(jī)間移動數(shù)據(jù)庫

           注意:支持將數(shù)據(jù)從SQL Server 2000遷移到Microsoft SQL Server 2000(64位)。您可以將一個(gè)32位數(shù)據(jù)庫附加到一個(gè)64位數(shù)據(jù)庫上,方法是:使用sp_attach_db系統(tǒng)存儲過程或sp_attach_single_file_db系統(tǒng)存儲過程,或者使用32位企業(yè)管理器中的備份和還原功能。您可以在SQL Server的32位和64位兩種版本之間來回移動數(shù)據(jù)庫。您還可以使用同樣的方法從SQL Server 7.0遷移數(shù)據(jù)。但是,不支持將數(shù)據(jù)從SQL Server 2000(64位)降級到SQL Server 7.0。下面分別介紹這幾種方法。
            如果您使用的是SQL Server 2005
            您可以使用相同的方法從SQL Server 7.0或SQL Server 2000遷移數(shù)據(jù)。但是,Microsoft SQL Server 2005中的管理工具與SQL Server 7.0或SQL Server 2000中的管理工具有所不同。您應(yīng)該使用SQL Server Management Studio(而不是SQL Server企業(yè)管理器)以及SQL Server導(dǎo)入和導(dǎo)出向?qū)?DTSWizard.exe)(而不是數(shù)據(jù)轉(zhuǎn)換服務(wù)導(dǎo)入和導(dǎo)出數(shù)據(jù)向?qū)В?/div>
            備份和還原
            在源服務(wù)器上備份用戶數(shù)據(jù)庫,然后將用戶數(shù)據(jù)庫還原到目標(biāo)服務(wù)器上。在備份過程中時(shí)可能有人使用數(shù)據(jù)庫。如果用戶在備份完成后對數(shù)據(jù)庫執(zhí)行INSERT、UPDATE或DELETE語句,則備份中不會包含這些更改。如果您必須傳輸所有更改,那么,假如您既執(zhí)行事務(wù)日志備份又執(zhí)行完整數(shù)據(jù)庫備份,您可以以盡可能短的停止時(shí)間來傳輸這些更改。
            1.在目標(biāo)服務(wù)器上還原完整數(shù)據(jù)庫備份,并指定WITH NORECOVERY選項(xiàng)。
            注意:為防止對數(shù)據(jù)庫做進(jìn)一步的修改,請指導(dǎo)用戶在源服務(wù)器上退出數(shù)據(jù)庫活動。
            2.執(zhí)行事務(wù)日志備份,然后使用WITH RECOVERY選項(xiàng)將事務(wù)日志備份還原到目標(biāo)服務(wù)器上。停止時(shí)間僅限于事務(wù)日志備份和恢復(fù)的時(shí)間。
            ◆目標(biāo)服務(wù)器上的數(shù)據(jù)庫將與源服務(wù)器上的數(shù)據(jù)庫大小相同。要減小數(shù)據(jù)庫的大小,您必須在執(zhí)行備份前壓縮源數(shù)據(jù)庫的大小,或者在完成還原后壓縮目標(biāo)數(shù)據(jù)庫的大小。
            ◆如果您將數(shù)據(jù)庫還原到的文件位置不同于源數(shù)據(jù)庫的文件位置,則必須指定WITH MOVE選項(xiàng)。例如,在源服務(wù)器上,數(shù)據(jù)庫位于D:/Mssql/Data文件夾中。目標(biāo)服務(wù)器沒有D驅(qū)動器,因而您需要將數(shù)據(jù)庫還原到C:/Mssql/Data文件夾。有關(guān)如何將數(shù)據(jù)庫還原到其他位置的更多信息,請查看相關(guān)資料。
            ◆如果您想覆蓋目標(biāo)服務(wù)器上的一個(gè)現(xiàn)有數(shù)據(jù)庫,則必須指定WITH REPLACE選項(xiàng)。
            ◆源服務(wù)器和目標(biāo)服務(wù)器上的字符集、排序順序和Unicode整序可能必須相同,具體取決于您要還原到SQL Server的哪種版本。有關(guān)更多信息,請參閱本文中的“關(guān)于排序規(guī)則的說明”一節(jié)。
            Sp_detach_db和Sp_attach_db存儲過程
            要使用sp_detach_db和sp_attach_db這兩個(gè)存儲過程,請按下列步驟操作:
            1.使用sp_detach_db存儲過程分離源服務(wù)器上的數(shù)據(jù)庫。您必須將與數(shù)據(jù)庫關(guān)聯(lián)的.mdf、.ndf和.ldf這三個(gè)文件復(fù)制到目標(biāo)服務(wù)器上。參見下表中對文件類型的描述:
            文件擴(kuò)展名
            說明
            .mdf
            主要數(shù)據(jù)文件
            .ndf
            輔助數(shù)據(jù)文件
            .ldf
            事務(wù)日志文件
            2.使用sp_attach_db存儲過程將數(shù)據(jù)庫附加到目標(biāo)服務(wù)器上,并指向您在上一步驟中復(fù)制到目標(biāo)服務(wù)器的文件。
            ◆分離數(shù)據(jù)庫后將無法訪問該數(shù)據(jù)庫,并且復(fù)制文件時(shí)也無法使用該數(shù)據(jù)庫。在進(jìn)行分離的那一時(shí)刻數(shù)據(jù)庫中包含的所有數(shù)據(jù)都被移動。
            ◆在您使用附加或分離方法時(shí),兩個(gè)服務(wù)器上的字符集、排序順序和Unicode整序都必須相同。有關(guān)更多信息,請參閱本文中的“關(guān)于排序規(guī)則的說明”一節(jié)。
           關(guān)于排序規(guī)則的說明
            如果您使用備份和還原或附加和分離方法在兩個(gè)SQL Server 7.0服務(wù)器之間移動數(shù)據(jù)庫,則兩個(gè)服務(wù)器上的字符集、排序順序和Unicode整序都必須相同。如果您將數(shù)據(jù)庫從SQL Server 7.0移到SQL Server 2000,或者在不同的SQL Server 2000服務(wù)器之間移動數(shù)據(jù)庫,則數(shù)據(jù)庫將保留源數(shù)據(jù)庫的整序。這意味著,如果運(yùn)行SQL Server 2000的目標(biāo)服務(wù)器的整序與源數(shù)據(jù)庫的整序不同,則目標(biāo)數(shù)據(jù)庫的整序也將與目標(biāo)服務(wù)器的master、model、tempdb和msdb數(shù)據(jù)庫的整序不同。
            第1步:導(dǎo)入和導(dǎo)出數(shù)據(jù)(在SQL Server數(shù)據(jù)庫之間復(fù)制對象和數(shù)據(jù))
            您可以使用數(shù)據(jù)轉(zhuǎn)換服務(wù)導(dǎo)入和導(dǎo)出數(shù)據(jù)向?qū)韽?fù)制整個(gè)數(shù)據(jù)庫或有選擇地將源數(shù)據(jù)庫中的對象和數(shù)據(jù)復(fù)制到目標(biāo)數(shù)據(jù)庫。在傳輸過程中,可能有人在使用源數(shù)據(jù)庫。如果在傳輸過程中有人在使用源數(shù)據(jù)庫,您可能會看到傳輸過程中出現(xiàn)一些阻滯現(xiàn)象。
            ◆在您使用導(dǎo)入和導(dǎo)出數(shù)據(jù)向?qū)r(shí),源服務(wù)器與目標(biāo)服務(wù)器的字符集、排序順序和整序不必相同。
            ◆因?yàn)樵磾?shù)據(jù)庫中未使用的空間不會移動,所以目標(biāo)數(shù)據(jù)庫不必與源數(shù)據(jù)庫一樣大。同樣,如果您只移動某些對象,則目標(biāo)數(shù)據(jù)庫也不必與源數(shù)據(jù)庫一樣大。
            ◆SQL Server 7.0數(shù)據(jù)轉(zhuǎn)換服務(wù)可能無法正確地傳輸大于64KB的文本和圖像數(shù)據(jù)。但SQL Server 2000版本的數(shù)據(jù)轉(zhuǎn)換服務(wù)不存在此問題。
            第2步:如何傳輸?shù)卿浐兔艽a
            如果您不將源服務(wù)器中的登錄傳輸?shù)侥繕?biāo)服務(wù)器,當(dāng)前的SQL Server用戶就無法登錄到目標(biāo)服務(wù)器。目標(biāo)服務(wù)器上的登錄的默認(rèn)數(shù)據(jù)庫可能與源服務(wù)器上的登錄的默認(rèn)數(shù)據(jù)庫不同。您可以使用sp_defaultdb存儲過程來更改登錄的默認(rèn)數(shù)據(jù)庫。
            #p#
            第3步:如何解決孤立用戶
            在您向目標(biāo)服務(wù)器傳輸?shù)卿浐兔艽a后,用戶可能還無法訪問數(shù)據(jù)庫。登錄與用戶是靠安全識別符(SID)關(guān)聯(lián)在一起的;在您移動數(shù)據(jù)庫后,如果SID不一致,SQL Server可能會拒絕用戶訪問數(shù)據(jù)庫。此問題稱為孤立用戶。如果您使用SQL Server 2000 DTS傳輸?shù)卿浌δ軄韨鬏數(shù)卿浐兔艽a,就可能會產(chǎn)生孤立用戶。此外,被允許訪問與源服務(wù)器處于不同域中的目標(biāo)服務(wù)器的集成登錄帳戶,也會導(dǎo)致出現(xiàn)孤立用戶。
            1.查找孤立用戶。在目標(biāo)服務(wù)器上打開查詢分析器,然后在您移動的用戶數(shù)據(jù)庫中運(yùn)行以下代碼:
            exec sp_change_users_login 'Report'
            此過程將列出任何未鏈接到一個(gè)登錄帳戶的孤立用戶。如果沒有列出用戶,請?zhí)^第2步和第3步,直接進(jìn)行第4步。
            2.解決孤立用戶問題。如果一個(gè)用戶是孤立用戶,數(shù)據(jù)庫用戶可以成功登錄到服務(wù)器,但卻無權(quán)訪問數(shù)據(jù)庫。如果您嘗試向數(shù)據(jù)庫授予登錄訪問權(quán),則會因該用戶已經(jīng)存在而出現(xiàn)下列錯(cuò)誤消息:
            Microsoft SQL-DMO (ODBC SQLState:42000)
            錯(cuò)誤15023:當(dāng)前數(shù)據(jù)庫中已存在用戶或角色'%s'。上面介紹了如何使用sp_change_users_login存儲過程來逐個(gè)糾正孤立用戶。sp_change_users_login存儲過程僅能解決標(biāo)準(zhǔn)的SQL Server登錄帳戶的孤立用戶問題。
            3.如果數(shù)據(jù)庫所有者(dbo)被當(dāng)作孤立用戶列出,請?jiān)谟脩魯?shù)據(jù)庫中運(yùn)行下面的代碼:exec sp_changedbowner 'sa'此存儲過程會將數(shù)據(jù)庫所有者更改為dbo并解決這個(gè)問題。要將數(shù)據(jù)庫所有者更改為另一用戶,請使用您想使用的用戶再次運(yùn)行sp_changedbowner。
            4.如果您的目標(biāo)服務(wù)器運(yùn)行的是SQL Server 2000 Service Pack 1,則在您執(zhí)行附加操作或還原操作(或兩種操作都執(zhí)行)后,企業(yè)管理器的用戶文件夾中的列表中可能沒有數(shù)據(jù)庫所有者用戶。
            5.如果目標(biāo)服務(wù)器上不存在映射到源服務(wù)器上的dbo的登錄,您在嘗試通過企業(yè)管理器更改系統(tǒng)管理員(sa)密碼時(shí),可能會收到以下錯(cuò)誤消息:
            錯(cuò)誤21776:[SQL-DMO]名稱'dbo'在Users集合中沒有找到。如果該名稱是合法名稱,則使用[]來分隔名稱的不同部分,然后重試。
            警告:如果您再次還原或附加數(shù)據(jù)庫,則數(shù)據(jù)庫用戶可能會再次被孤立,這樣您就必須重復(fù)第3步操作。
            第4步:如何移動作業(yè)、警報(bào)和運(yùn)算符
            第4步是可選操作。您可以為源服務(wù)器上的所有作業(yè)、警報(bào)和運(yùn)算符生成腳本,然后在目標(biāo)服務(wù)器上運(yùn)行腳本。要移動作業(yè)、警報(bào)和運(yùn)算符,請按照下列步驟操作:
            1.打開SQL Server企業(yè)管理器,然后展開管理文件夾。
            2.展開SQL Server代理,然后右鍵單擊警報(bào)、作業(yè)或運(yùn)算符。
            3.單擊所有任務(wù),然后單擊生成SQL腳本。對于SQL Server 7.0,請單擊為所有作業(yè)生成腳本、警報(bào)或運(yùn)算符。
            您可以用右鍵單擊選擇為所有警報(bào)、所有作業(yè)或所有運(yùn)算符生成腳本。
            ◆您可以將作業(yè)、警報(bào)和運(yùn)算符從SQL Server 7.0移到SQL Server 2000,也可以在運(yùn)行SQL Server 7.0和運(yùn)行SQL Server 2000計(jì)算機(jī)之間移動。
            ◆如果在源服務(wù)器上為運(yùn)算符設(shè)置了SQLMail通知,則目標(biāo)服務(wù)器上也必須設(shè)置SQLMail,才能具有相同的功能。
            第5步:如何移動DTS包
            第5步是可選操作。如果DTS包在源服務(wù)器上存儲在SQL Server中或存儲庫中,您可以在需要時(shí)移動這些包。要在服務(wù)器之間移動DTS包,請使用下列方法之一。
            方法1
            1.在源服務(wù)器上將DTS包保存到一個(gè)文件中,然后在目標(biāo)服務(wù)器上打開DTS包文件。
            2.將目標(biāo)服務(wù)器上的包保存到SQL Server或存儲庫中。
            注意:您必須用單獨(dú)的文件逐個(gè)地移動這些包。
            方法2
            1.在DTS設(shè)計(jì)器中打開每個(gè)DTS包。
            2.在包菜單上,單擊另存為。
            3.指定目標(biāo)SQL Server。
            注意:在新服務(wù)器上,包可能無法正常運(yùn)行。您可能必須對包進(jìn)行更改,更改包中任何對舊的源服務(wù)器上的連接、文件、數(shù)據(jù)源、配置文件和其他信息的引用,以便引用新的目標(biāo)服務(wù)器。您必須根據(jù)每個(gè)包的設(shè)計(jì)逐個(gè)包進(jìn)行這些更改。
            本文中介紹的步驟不移動數(shù)據(jù)庫關(guān)系圖以及備份與還原歷史記錄。如果您必須移動這些信息,請移動msdb系統(tǒng)數(shù)據(jù)庫。如果您移動msdb數(shù)據(jù)庫,則不必執(zhí)行“第4步:如何移動作業(yè)、警報(bào)和運(yùn)算符”或“第5步:如何移動DTS包”。

          posted on 2014-08-25 10:12 順其自然EVO 閱讀(197) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄數(shù)據(jù)庫

          <2014年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計(jì)

          • 隨筆 - 3936
          • 文章 - 404
          • 評論 - 179
          • 引用 - 0

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 大同市| 尉犁县| 延安市| 元氏县| 永寿县| 万州区| 会昌县| 阿克陶县| 同仁县| 青阳县| 泸西县| 墨江| 响水县| 青州市| 东兰县| 遂宁市| 石嘴山市| 无棣县| 巴中市| 镇坪县| 江孜县| 山阳县| 社旗县| 莱州市| 凌海市| 兴和县| 旬阳县| 秭归县| 宜君县| 榕江县| 延吉市| 大连市| 北碚区| 桐庐县| 玛曲县| 营口市| 临邑县| 那曲县| 伊通| 宣城市| 海盐县|