﻿# TFS2010 架構、工具、服務、群組、安全性權限的大小事

這幾天公司已經開始在用 Team Foundation Server 2010 (TFS2010) 來管理專案，這套產品還真不是普通的複雜， 相較於 Subversion 來說真的大多了，不過對於基本的版本控管來說上手還算容易，只是剛開始管理 TFS 上面的專案就讓我吃足苦頭，光是開發人員的權限設定就讓我經常因為設定不完整而導致有人看不到專案文件或報表，以下是我這幾天的心得整理。

在開始學習 TFS 之前建議先閱讀《[Team Foundation Server 概念](http://msdn.microsoft.com/zh-tw/library/ms253184.aspx)》與《[Team Foundation Server 架構](http://msdn.microsoft.com/zh-tw/library/ms252473.aspx)》文件。

**§ 認識各伺服器階層架構 **§****

Team Foundation Server 2010 主要會用到以下三種微軟的產品，所以在設定專案權限的過程中必須分別進入該產品的相關介面進行設定：

-   Team Foundation Server 2010 ( TFS 2010 )
-   Windows SharePoint Service 3.0 ( WSS 3.0 )
-   SQL Server Reporting Services 報表服務 ( SSRS ) -- SQL Server 2008

注意：這三個微軟產品都是各自獨立運作的，只是 TFS 會將這三個服務整合在一起使用，並透過 Visual Studio 2010 的 Team 總管 ( Team Explorer ) 進行操作或管理。

**Team Foundation Server 2010 ( TFS 2010 )**

-   專案集合 ( Project Collection )

-   專案 ( Project )

-   工作項目 ( Work Items )

-   小組查詢 ( Team Queries )
-   我的查詢 ( My Queries )

-   文件 ( Documents )  -- 這裡的內容直接與 WSS 3.0 連結！
-   報告 ( Reports )  -- 這裡的內容直接與 SSRS 連結！
-   組建 ( Builds )
-   原始檔控制 ( Source Control )

**Windows SharePoint Service 3.0 ( WSS 3.0 )**

-   **SharePoint Farm**

-   網站應用程式 ( Web Application )

-   網站集合 ( Site Collection )

-   網站 ( Site )

**SQL Server Reporting Services 報表服務 ( SSRS ) -- SQL Server 2008**

-   資料來源

-   **Tfs2010OlapReportDS**
-   **Tfs2010ReportDS**

-   報表

-   **TfsReports**

-   Project Collection 1

-   Project A

-   Report Collection I

-   Report 1
-   Report 2

-   Report Collection II

-   Report 1
-   Report 2

注意：你所看到的每個階層幾乎都能夠設定權限，TFS 的權限要用 TFS 工具設定、WSS 的權限要透過 WSS 網站設定、SSRS 也是要透過自己的管理網站做設定，三者沒辦法整合在一個介面設定，因此若要新增專案，有可能需要三個地方都個別設定才能讓專案成員看的到相關資料，如果你群組規劃完善的話就會簡單很多，否則就是夢魘！

**§** **「Team Foundation Server 管理主控台」的能力 **§****

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d541fd373a8e5310b074-image_3.png)

 [![Team Foundation Server 管理主控台](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ad13886dbdfadb98b0b0-image_thumb_1.png "Team Foundation Server 管理主控台")](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/bdcd692d2a032b8f342d-image_4.png)

-   建立集合 ( 其實就是建立 SQL Server 資料庫 & 設定 TFS 與該資料庫產生連結 )
-   附加集合 ( 其實就是設定 TFS 與 SQL Server 資料庫產生連結 )
-   停止集合 ( 其實就是將 TFS 專案集合暫時設為離線 )
-   中斷連結集合 ( 其實就是將 TFS 專案集合與 SQL Server 資料庫的關係中斷 )
-   群組成員設定

-   新增/移除全域群組
-   設定全域群組成員  
    註: Project Collection Service Accounts 與 Project Collection Valid Users 除外
-   設定專案群組成員 ( 註: 此工具無法新增專案群組，必須透過 Team 總管才行 )

-   管理安全性

-   只能管理「全域群組的安全性」
-   不能管理個別專案的安全性設定

-   刪除專案

注意：所有 TFS 與 SQL Server 之間只有「連結」關係，TFS 並不會對 SQL Server 資料庫進行操作，例如在執行「停止集合」時並非對資料庫設定離線工作，但從介面來看專案的狀態會是「離線」狀態，「離線」狀態與 SQL Server 完全無關。

**2010/7/12 補充：**

聽說很多人找不到透過 **Team Foundation Server 管理主控台** 刪除專案的地方，因為許多人切換到 **Team 專案** 頁籤的時候並沒有看到「刪除」功能，所以以為沒有此功能：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/1427eeeda557d9e34b4f-image_15.png)

但事實上你必須點選「專案」之後 **刪除** 按鈕才會顯示出來：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/50302e1ac4a956ab5727-image_16.png)

**§** **「Team 總管」的能力 **§****

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/12379994d25e13a5089d-image_5.png)

大致功能有：

-   建立專案 ( 註: 無法刪除專案 )  
     ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/023835d1785b91969f84-image_6.png)
-   群組成員設定

-   新增/移除專案集合群組 ( 預設群組全部都不能移除 )
-   設定專案集合群組成員  
    註: Project Collection Service Accounts 與 Project Collection Valid Users 無法設定成員!
-   新增/移除專案群組 ( 預設群組只有 Project Administrators 不能移除，其他都可以移除 )
-   設定專案群組成員

-   管理安全性

-   管理「專案集合群組的安全性」
-   管理「專案群組的安全性」

-   任何其他 Team Foundation Server 2010 有關的操作全部都在這裡完成，例如：

-   「工作項目」管理

-   新增工作項目 ( Add Work item )
-   新增查詢 ( Add Query )

-   「文件」管理

-   可透過檔案總管將文件拖曳匯入「文件」資料夾
-   加入到「文件」資料夾的檔案會自動被放上 WSS 專案網站裡，在 WSS 可以瀏覽

-   「報告」查看

-   只能看 SSRS 中的現有報告(Report)，不能新增，新增報告必須從 SSRS 進行

-   原始檔控制

-   所有版本控管的功能都必須先「雙擊滑鼠」才能看到管理介面，按右鍵沒功能

**注意事項**

-   要先定義群組，才能設定安全性。
-   不同專案集合之間的群組不能互通，彼此之間是完全獨立的。

**§** **Team Foundation Server 2010 ( TFS 2010 ) 群組與安全性設定摘要 **§****

-   TFS 全域權限設定

-   可用的設定工具如下：

-   TFS 管理主控台 / 群組成員資格

-   Team 專案集合的全域群組設定 ( 內建 7 個預設群組，可新增全域群組 )

-   Project Collection Service Accounts 無法新增成員
-   Project Collection Valid Users 無法新增成員

-   但可以透過 Project Collection Valid Users 選取到該集合中所有專案的群組
-   新增專案群組必須利用 Team 總管 ( Team Explorer ) 才能新增

-   其他的群組都可以新增成員

-   專案集合權限設定

-   可用的設定工具如下：

-   TFS 管理主控台 / 管理安全性
-   Team 總管 ( Team Explorer )

-   專案權限設定

-   可用的設定工具如下：

-   Team 總管 ( Team Explorer )

-   文件

-   需參考 WSS 3.0 的權限設定

-   報告

-   需參考 SSRS 的權限設定

-   組建

-   可設定「組建」的安全性
-   也可設定「組建」底下的每一個「自訂組建定義」的安全性

-   原始檔控制

-   從「專案」層級開始每一層都能設定安全性
-   每一層目錄、每一個檔案、每一個分支都可以設定不同的安全性

注意：在 TFS 中「專案集合」之間是完全獨立不相干的，連在 SQL Server 裡的**資料庫**也都是獨立的。

**§ Windows SharePoint Service 3.0 ( WSS 3.0 )** **安全性設定摘要 **§****

-   根目錄網站權限 ( http://TFS2010SRV/ )  <—WSS 網站根目錄，包含「網站集合清單」
-   ∟專案集合站台權限 ( http://TFS2010SRV/sites/DefaultCollection )  <-- 「網站集合」
-   ∟單一專案網站權限 ( http://TFS2010SRV/sites/DefaultCollection/ProjectA )   <-- 「專案網站」

**WSS 3.0 權限設定概要說明**

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/68767b4fb857fc7d23fc-image_7.png)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/50a6e9c05e66e8320ff7-image_8.png)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/29af7820df54d629b0fa-image_9.png)

**§ SQL Server 2008 Reporting Services 報表服務****安全性設定摘要 **§****

-   主資料夾權限 ( http://TFS2010SRV/Reports/ )

-   資料來源權限

-   Tfs2010OlapReportDS
-   Tfs2010ReportDS

-   報表權限

-   TfsReports

-   Project Collection 1

-   Project A

-   Report Collection I

-   Report 1
-   Report 2

-   Report Collection II

-   Report 1
-   Report 2

-   Project B

-   Report Collection I

-   Report 1
-   Report 2

-   Report Collection II

-   Report 1
-   Report 2

-   Project Collectionn 2
-   Project Collectionn X

**SSRS 權限設定技巧**

在「主資料夾」設定全公司或整個團隊都能看報表，這樣就不用每次開新專案都進來設定了：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/39a93dbf998b0975c168-image_10.png) 

**§ 其他 TFS 相關工具說明 §**

**Visual Studio 2010 Team Web Access** - TFS 專案網站 ( http://TFS2010SRV:8080/tfs/ )

-   可依據使用者所擁有的「專案權限」進行下拉選取，已顯示的專案是你之前連接過的，如果沒有你要的專案可以選取「連接到不同的專案」來選擇所有專案集合中的所有專案（需要設定好權限）  
    ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/76593ad046b694e30e28-image_11.png)
-   在選取專案時可選擇的專案是「跨越專案集合」的所有專案，這是唯一的「跨專案集合」的例外，即同壹台 TFS 伺服器上所有專案集合中的專案都可以透過此畫面瀏覽選取：  
    ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/7c6955a00d4c22b8443a-image_12.png)

**SharePoint 3.0 管理中心** ( http://TFS2010SRV:17012/ )

-   此乃管理 SharePoint 服務的管理中心，與 TFS 沒多大關係
-   所有跟 WSS 有關的管理可以來這邊設定

**相關連結**

-   [Visual Studio Application Lifecycle Management](http://msdn.microsoft.com/zh-tw/library/fda2bad5.aspx)

-   [Visual Studio Application Lifecycle Management 使用者入門](http://msdn.microsoft.com/zh-tw/library/dd286491.aspx)
-   [計劃和追蹤專案](http://msdn.microsoft.com/zh-tw/library/dd286619.aspx)

-   [啟動新的 Team 專案](http://msdn.microsoft.com/zh-tw/library/ee748449.aspx)
-   [MSF for Agile Software Development v5.0](http://msdn.microsoft.com/zh-tw/library/dd380647.aspx)
-   [使用 Team Foundation Client](http://msdn.microsoft.com/zh-tw/library/ms181304.aspx)

-   [管理 Team Foundation](https://learn.microsoft.com/zh-tw/azure/devops/server/)

-   [Team Foundation Server 概念](http://msdn.microsoft.com/zh-tw/library/ms253184.aspx)
-   [Team Foundation Server 架構](http://msdn.microsoft.com/zh-tw/library/ms252473.aspx)

-   [How to delete a Team Project in TFS 2010](https://web.archive.org/web/20210124221934/http://geekswithblogs.net/jehan/archive/2010/06/26/how-to-delete-a-team-project-in-tfs-2010.aspx) ( 可參考指令列的刪除法 )  
    預設所有 TFS 指令列工具會放在以下目錄：  
    C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE
