Sql-Server

將 Mssql 數據庫從不同實例遷移到新伺服器

  • December 16, 2014

我在 3 個不同的伺服器上有 3 個 Sql (2008 R2) 實例。版本為(10.50.2550.0 SP1 標準版(64 位)、10.50.2550.0 SP1 標準版(64 位))。目標是將所有數據庫和登錄遷移到新伺服器,我們只是購買 Sql server 2012。

我不知道如何處理,我嘗試使用複制數據庫嚮導,但它一直失敗。如果我決定備份每個數據庫並將它們恢復到新的伺服器,我不知道如何遷移登錄。

處理這種情況的最佳方法是什麼?

很抱歉造成混亂:(有關該問題的更多詳細資訊)

  1. 要移動的數據庫數量:10
  2. 複製數據庫嚮導期間列出的錯誤:

第 60 行:

OnError,DUPFAIDS,NT AUTHORITY\SYSTEM,DUAPPSRV1_EXAPPSVR1_DUPFAIDS_PFAIDS_Transfer Objects 任務,{8F0C82BB-4C5D-4796-BE75-BAB033C59039},{3818CD1B-9685-46B7-AFE2-AE0FE962DA03},

2014 年 12 月 3 日下午 12:10:15,2014 年 12 月 3 日下午 12:10:15,0,0x,錯誤:errorCode=-1073548784

描述=執行查詢“——————————————– ——…”失敗並出現以下錯誤:“無效的對象名稱’xwd_window_disabled_objects’。”。

可能的失敗原因:查詢有問題,“ResultSet”屬性設置不正確,參數設置不正確,或者連接沒有正確建立。**

按照建議備份和還原數據庫。然後在舊伺服器上執行此 microsoft 腳本 ( https://support.microsoft.com/kb/918992 ) 以生成腳本以在新伺服器上創建登錄。由於您有兩個源伺服器,請務必仔細檢查您的腳本,以確保沒有任何重複條目或其他問題。

遷移數據庫有很多不同的方法。備份和恢復是最常用的推薦方式,但如果您有超過 100 個數據庫,您可能需要編寫腳本來分離和附加數據庫。我已經成功地使用它來將大量(數百個)數據庫遷移到新伺服器:

@ECHO ON

set controlfile=control.txt

set newipmdf=\\newserver\g$
set newipldf=\\newserver\e$
set oldserver=oldserver\Prod1
set oldmdfpath=d:\prod1
set newmdfpath=g:\data
set copymdfpath=m:\data
set newserver=newserver
set oldlogpath=e:\prod1
set newlogpath=e:\log
set copylogpath=l:\log
set movedmdfpath=%oldmdfpath%\moved
set movedldfpath=%oldlogpath%\moved

mkdir %movedmdfpath%
mkdir %movedldfpath%

net use m: %newipmdf%
net use l: %newipldf%

SETLOCAL DISABLEDELAYEDEXPANSION
FOR /F %%L IN (%controlfile%%) DO (
 SET "line=%%L"
 SETLOCAL ENABLEDELAYEDEXPANSION
 ECHO !line!
 sqlcmd -E -S!oldserver! -Q"EXEC master.dbo.sp_detach_db @dbname = N'!line!'"
 copy "!oldmdfpath!\!line!.mdf" !copymdfpath!
 copy "!oldlogpath!\!line!_log.ldf" !copylogpath!
 sqlcmd -E -S!newserver! -Q"CREATE DATABASE [!line!] ON ( FILENAME = N'!newmdfpath!\!line!.mdf' ),( FILENAME = N'!newlogpath!\!line!_log.ldf' ) FOR ATTACH"
 move "!oldmdfpath!\!line!.mdf" !movedmdfpath!
 move "!oldlogpath!\!line!_log.ldf" !movedldfpath!
 ENDLOCAL
)
ENDLOCAL

net use m: /z
net use l: /z

至於登錄,我無法幫助您輸入密碼,但您應該能夠獲得使用者名列表:

SELECT [name], type, type_desc
 FROM [master].[sys].[server_principals]
 where is_disabled=0 and type in ('S','U')

引用自:https://serverfault.com/questions/648993