將 Team Foundation Server 從某種環境移到另一種環境
以環境為基礎之移動的最常見案例就是變更 TFS 部署的網域,無論是網域名稱變更,或是從工作群組轉移到網域。
重要
在某些情況下,您可能會想要變更 TFS 部署的網域以及其硬體。變更硬體是一種以還原為基礎的移動,因此,您絕不能合併這兩種移動類型。請先完成硬體移動,再變更環境。
此外,環境移動中的 TFS 識別變更,是最常造成衝突或問題的原因。Identities 命令 雖是一種功能強大的工具,但也有一定的限制。在規劃您的移動時,請仔細閱讀相關資訊。若要確保移動成功,請確定您了解下列需求:
-
TFS 中出現使用者帳戶後,就無法將帳戶移除,或者將另一個帳戶對應至該帳戶。例如,如果您要將 DomainA/UserA 移至 DomainB/UserB,而且 TFS 沒有 DomainB/UserB 時,識別命令的功用只限移轉使用者。
-
由於本機 Administrators 群組的成員會自動加入至 TFS,因此在您變更網域或環境之前,務必先移除要從該群組移轉的任何帳戶。
如需進一步的背景資訊,請到這裡參閱有關 TFS 工作中識別變更如何運作的詳細描述,包括工具的限制。
我們將在以下章節逐步引導您變更 TFS 部署的環境:
請檢查使用權限和帳戶
停止 TFS 服務
備份資料
將 TFS 加入至其新網域
為新環境設定 SharePoint 產品
移動 TFS 使用者和服務帳戶
設定 Reporting and Analysis Services
重新啟動 TFS 服務
請檢查使用權限和帳戶
若要成功變更 TFS 的環境,您必須是本機電腦的系統管理員,也必須是部署所依賴的 TFS 及所有軟體的系統管理員:SQL Server、報告、SharePoint 產品 (如果您的部署使用報告功能或 SharePoint),以及任何與部署互通的其他軟體,例如 Project Server。 不過,本機 Administrators 群組的所有成員都會自動包括在 TFS 中,這在嘗試移轉帳戶時,可能會造成問題的產生。 因此,當環境移動時,您應使用不想要移轉的帳戶。 您可以考慮加入只用於移動的特殊系統管理帳戶,並且使用該帳戶執行移轉。
驗證系統管理員層級的權限
請確定您使用的帳戶是下列群組的成員:
伺服器:系統管理員 (本機 Administrators 群組或對等群組)
TFS:Team Foundation Administrators 與 Admin Console Users
SQL Server:sysadmin
SharePoint 產品:Farm Administrators (如果 TFS 部署與 SharePoint 產品整合)
如果您不是一個或多個這類群組的成員,請立即取得權限。
既然確定您使用的帳戶擁有所有需要的使用權限,便可以開始檢查帳戶,查看您所要移動的環境中是否有任何衝突的名稱或群組。 我們已經知道本機 Administrators 群組成員的帳戶無法移轉,因此,我們先將其移除。
從本機 Administrators 群組移除要移轉的帳戶
- 開啟本機 Administrators 群組,並移除您要移轉到新環境的帳戶。 對其他可能會受到影響的群組重複此步驟。
現在,請檢查目前 TFS 環境的識別清單,並且尋找新環境中群組或個別使用者帳戶的潛在問題。
提示
考慮建立要移動的識別表或移轉對應,以做為環境移動的一部分,包括哪些帳戶可能無法自動移轉的相關詳細資訊。
檢查識別
在 Team Foundation 的應用程式層伺服器上,以系統管理權限開啟 [命令提示字元] 視窗,巡覽至 %ProgramFiles%\Microsoft Visual Studio 12.0 Team Foundation Server\Tools,然後執行下列命令以檢視系統目前的識別:
TFSConfig Identities
將會顯示識別清單。 檢查這些使用者和群組,以確保識別 TFS 要移至之新環境中不會有潛在的重複或問題,然後採取步驟以減少任何可能發生的衝突。
停止 TFS 服務
停止服務可確保在移動流程期間或之後,使用者無法對工作項目進行變更,或將原始程式碼簽入原始部署。
在 TFS 應用程式層電腦上,開啟 [命令提示字元] 視窗,並將目錄變更為 Drive:\%programfiles%\Microsoft Team Foundation Server 12.0\Tools。
輸入下列 TFSServiceControl 命令:
TFSServiceControl quiesce
備份資料庫和 SQL Server Reporting Services 加密金鑰
開啟 TFS 的管理主控台,並在 [排程備份] 頁面上採用完整備份。 您在備份計劃中設定備份的所有項目皆會進行備份,但是會立即執行,而不會遵循計劃中排程的時間。 如果您的部署使用報告功能,您可以將加密金鑰備份為此備份組的一部分。
(如果沒有設定備份,您必須建立計劃,才能進行完整備份)。
一旦完成份,請確認備份是否可用於儲存裝置或網路共用,以及您是否可從新硬體存取此備份。
將 TFS 加入至其新網域
在每部伺服器上,開啟電腦的屬性。
將電腦設定變更為您要為其加入伺服器的網域或工作群組。
如果系統提示您提供有權將此電腦加入網域之帳戶的使用者名稱和密碼,請提供適當的認證。
重新啟動電腦,網域的變更就會生效。
注意事項 重新啟動電腦之後,可能會出現無法啟動服務或驅動程式的警告訊息。繼續執行下一個程序。
為新環境設定 SharePoint 產品
如果您將環境變更為與之前環境沒有信任關係的環境,您可能需要先設定 SharePoint 產品,該產品才會正確運作。 SharePoint 網站的人員選擇器 Web 控制項會提供從目錄服務匯入之使用者的相關資訊。 網站管理員和其他使用者在指派權限時,會使用人員選擇器選取人員和群組。 當有關使用者的資訊位於多個樹系中或是所有使用者無信任關係的單一樹系中時,可能需要採取其他步驟,以確保可從這個 Web 控制項取得所有人員和群組。
如果您未在部署中使用 SharePoint 產品、您的新環境與舊環境之間有雙向信任關係,或者 Team Foundation 管理主控台中未出現 SharePoint Web 應用程式的任何錯誤,請略過此程序。
在支援 Team Foundation Server 部署的 SharePoint 伺服器陣列的每一部伺服器上,以系統管理權限開啟 [命令提示字元] 視窗,然後將目錄變更為 %programfiles%\Common Files\Microsoft Shared\Web Server Extensions\15\BIN。
輸入下列命令,其中 Key 是您想要在 SharePoint 產品 部署中使用的加密金鑰:
stsadm.exe -o setapppassword -password Key
注意事項 這個金鑰是一個加密字串,用來加密存取樹系或網域所使用之帳戶的密碼。此加密字串對於伺服器陣列中的每一部伺服器都應該相同,但是每一個伺服器陣列都應該使用唯一的字串。
輸入下列命令,其中 domain:DNSName 是目標樹系或網域以及其 DNS 名稱,user,password 是可存取目標樹系或網域之帳戶的使用者名稱和密碼,而 WebApp 則是支援 Team Foundation Server 部署之 Web 應用程式的名稱:
stsadm.exe -o setproperty -pn peoplepicker-searchadforests -pv domain:DnsName**,user,**password **-url http://**WebApp
輸入下列命令,其中 URL 是支援 Team 專案集合之網站集合的 URL,Port 是指派給該網站集合的連接埠號碼,而 UserName 則是將會當做該網站集合擁有者之帳戶的使用者名稱:
**stsadm.exe -o siteowner -url http://URL:**Port -ownerlogin UserName
針對 Team Foundation Server 部署使用的每一個網站集合重複以上步驟。
移動 TFS 使用者和服務帳戶
如本主題開頭所述,如果您未謹慎規劃使用者移轉作業,移動帳戶就很有可能會遭遇困難。 TFSConfig 識別命令無法將任何帳戶移轉至已存在於 TFS 的帳戶。
如果兩個網域中的帳戶名稱相同,唯一的差異在於網域名稱,那麼您就可以使用 TFSConfig 識別的批次模式立即變更所有識別。 否則,您必須個別變更識別,並且指定不同的目標帳戶名稱,詳情如下所述。
在 Team Foundation 的應用程式層伺服器上,以系統管理權限開啟 [命令提示字元] 視窗,巡覽至 %ProgramFiles%\Microsoft Visual Studio 12.0 Team Foundation Server\Tools,然後執行下列命令,將服務帳戶的服務 ID (SID) 變更為新網域:
TFSConfig identities /change /fromdomain:OldComputerorDomainName /todomain:NewDomainName /account:OldTFSServiceAccount /toaccount:NewTFSServiceAccount
警告
如果您的服務帳戶是像 Network Service 之類的系統帳戶,您不能直接移轉服務帳戶,因為新的環境中已經有相同名稱的系統帳戶。您必須執行兩階段流程變更。請參閱Identities 命令中的範例。
若要移轉新環境中所有具有相同名稱的帳戶,請輸入下列命令:
TFSConfig Identities /change /fromdomain:OldDomainName /todomain:NewDomainName
如此將會批次處理帳戶。
如果您的新網域包含在環境之間有不同名稱的一個或多個識別,您將需要手動更新各個識別的 SID。 例如,如果 Christie Church 在舊環境中的使用者帳戶是 Fabrikam\CChurch,在新環境中是 NewFabrikam\ChristieC,您就必須手動更新其 SID。 對於具有此需求的每一個帳戶,請輸入下列命令:
TFSConfig Identities /change /fromdomain:OldDomainName /todomain:NewDomainName /account:OldAccountName /toaccount:NewAccountName
現在,請執行下列命令以更新服務帳戶:
TFSConfig Accounts /change /AccountType:ApplicationTier /account:AccountName /password:Password
如果您的部署使用報告功能,請執行下列命令來更新用於報告的資料來源帳戶:
TFSConfig Accounts /change /AccountType:ReportingDataSource /account:AccountName /password:Password
如果您的部署使用 Team Foundation Server Proxy,請執行下列命令來更新用於 Proxy 的服務帳戶:
TFSConfig Accounts /change /AccountType:Proxy /account:AccountName /password:Password
注意事項 如果您要移到不受信任的網域,您可能也需要手動將使用者和群組加入至 Team 專案、集合及 Team Foundation Server 本身。如需詳細資訊,請參閱將使用者加入至 Team 專案、設定 Team 專案集合的系統管理員權限和設定 Team Foundation Server 的系統管理員權限。
如果您的部署已經與 Project Server 整合,您可能必須執行其他步驟來設定擁有作業所需權限的服務帳戶。 如需詳細資訊,請參閱指派權限以支援 TFS 與 Project Server 整合和設定 TFS 與 Project Server 整合。
設定 Reporting and Analysis Services
如果您未在部署中使用報告,則可以略過此程序。
如果您在這個移動類型中重新命名報表伺服器,您必須將 Team Foundation Server 重新導向其新位置上的報表伺服器。 您也必須重新啟動倉儲,並為 Analysis Services 手動重建資料庫。
開啟 Team Foundation 管理主控台,移至 [報表] 節點,然後編輯設定。
將三個索引標籤上的值全數變更,如此就能包含伺服器的新名稱。 確定您在新環境中提供資料來源帳戶的正確資訊。
選擇 [啟動工作] 重新啟動報告。
選擇 [開始重建] 以重建倉儲。
設定備份
如果網路共用名稱或儲存裝置已隨網域名稱變更而一起變更,您需要更新排程的備份計劃,以指向這些重新命名的資源。
- 在管理主控台中,移至 [排程備份] 節點,並重新設定排程備份以備份新伺服器上的 TFS 資料庫。 如需詳細資訊,請參閱設定備份排程和計劃。
重新啟動 TFS 服務
既然您已使用新環境的所有資訊更新 TFS,請重新啟動服務。
在 TFS 應用程式層電腦上,以系統管理權限開啟 [命令提示字元] 視窗,然後將目錄變更為 Drive:\%programfiles%\Microsoft Team Foundation Server 12.0\Tools。
輸入下列 TFSServiceControl 命令:
TFSServiceControl unquiesce
問與答
問:我想要變更我的部署的實體伺服器,而非網域。可以這麼做嗎?
**答:**可以。 這稱為以硬體為基礎的移動,您可以在這裡找到相關步驟。 您不該嘗試合併「以環境為基礎的移動」與「以硬體為基礎的移動」。 請先完成硬體移動,再變更環境。
問:我的部署與 Project Server 整合在一起。是否需要執行額外的步驟才能讓它與移動的 TFS 搭配運作?
答: 是的,在您完成環境移動後,將需要使用 TFSAdmin ProjectServer/RegisterPWA 命令搭配 /tfs、/force 和 /pwa 選項,重新向 Project Server 註冊 TFS。 您可以在這裡進一步了解 TFS 與 Project Server 的整合。