設定 Windows 服務帳戶與權限
適用於:SQL Server
SQL Server 中的每項服務代表一個或一組處理序,用以管理 SQL Server 作業對 Windows 的驗證。 本文描述此 SQL Server 版本的預設服務組態,以及可以在 SQL Server 安裝期間和安裝完成後設定的 SQL Server 服務組態選項。 本文可協助進階使用者了解服務帳戶的詳細資料。
您可以使用 SQL Server 組態管理員來設定大多數服務及其屬性。 以下是將 Windows 安裝在 C 磁碟機時的最新版本路徑。
SQL Server 版本 | Path |
---|---|
SQL Server 2022 (16.x) | C:\Windows\SysWOW64\SQLServerManager16.msc |
SQL Server 2019 (15.x) | C:\Windows\SysWOW64\SQLServerManager15.msc |
SQL Server 2017 (14.x) | C:\Windows\SysWOW64\SQLServerManager14.msc |
SQL Server 2016 (13.x) | C:\Windows\SysWOW64\SQLServerManager13.msc |
SQL Server 2014 | C:\Windows\SysWOW64\SQLServerManager12.msc |
SQL Server 2012 | C:\Windows\SysWOW64\SQLServerManager11.msc |
Azure Arc 啟用的 SQL Server
如需適用於 SQL Server 的 Azure 擴充功能所需的許可權,請參閱 設定適用於 SQL Server 的 Azure 延伸模組的 Windows 服務帳戶和許可權。
SQL Server 安裝的服務
依據您決定安裝的元件而定,SQL Server 安裝程式會安裝下列服務:
服務 | 描述 |
---|---|
SQL Server Database Services | SQL Server 關聯式資料庫引擎的服務。 可執行檔為 \<MSSQLPATH>\MSSQL\Binn\sqlservr.exe 。 |
SQL Server Agent | 執行工作、監控 SQL Server、引發警示,並且可讓某些管理性工作進行自動化。 SQL Server Agent 服務存在,但在 SQL Server Express 的執行個體上已停用。 可執行檔為 \<MSSQLPATH>\MSSQL\Binn\sqlagent.exe 。 |
Analysis Services (英文) | 提供商業智慧應用程式的線上分析處理 (OLAP) 和資料採礦功能。 可執行檔為 \<MSSQLPATH>\OLAP\Bin\msmdsrv.exe 。 |
Reporting Services | 管理、執行、建立、排程和傳遞報表。 可執行檔為 \<MSSQLPATH>\Reporting Services\ReportServer\Bin\ReportingServicesService.exe 。 |
Integration Services | 提供 Integration Services 套件儲存體和執行的管理支援。 可執行檔路徑為 \<MSSQLPATH>\150\DTS\Binn\MsDtsSrvr.exe 。 |
Integration Services 可包含向外延展部署的其他服務。 如需詳細資訊,請參閱逐步解說:設定 Integration Services (SSIS) 擴充。
服務 | 描述 |
---|---|
SQL Server Browser | 提供 SQL Server 連線資訊給用戶端電腦的名稱解析服務。 可執行檔路徑為 C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe |
全文檢索搜尋 | 可以快速地在結構化和半結構化資料的內容與屬性上建立全文檢索索引,以針對 SQL Server 提供文件篩選和斷詞。 |
SQL 寫入器 | 允許備份與還原應用程式在磁碟區陰影複製服務 (VSS) 架構中操作。 |
SQL Server Distributed Replay Controller | 提供跨多個 Distributed Replay Client 電腦的追蹤重新執行協調流程。 |
SQL Server Distributed Replay Client | 一或多部搭配 Distributed Replay controller 運作的分散式重新執行用戶端電腦,以針對 SQL Server 資料庫引擎執行個體模擬並行工作負載。 |
SQL Server Launchpad | 裝載 Microsoft 所提供外部可執行檔的受信任服務,例如隨 R 服務或機器學習服務一併安裝的 R 或 Python 執行階段。 附屬項目處理序可由 Launchpad 處理序啟動,但會根據個別執行個體的組態來進行資源治理。 Launchpad 服務在其專屬的使用者帳戶下執行,而已註冊執行階段之每項特定服務的附屬項目處理序則會繼承 Launchpad 的使用者帳戶。 附屬項目處理序會視需求在執行時加以建立及終結。 如果在同時作為網域控制站的電腦上安裝 SQL Server,Launchpad 就無法建立所使用的帳戶。 因此,在網域控制站上安裝 R Services (資料庫內) 或 Machine Learning 服務 (資料庫內) 將會失敗。 |
SQL Server PolyBase Engine | 提供外部資料來源的分散式查詢功能。 |
SQL Server PolyBase Data Movement Service | 可在 SQL Server 與外部資料來源之間,以及在 PolyBase 向外延展群組的 SQL 節點之間移動資料。 |
SQL Server 安裝的 CEIP 服務
客戶經驗改進計畫 (CEIP) 服務會將遙測資料傳回給 Microsoft。
依據您決定安裝的元件而定,SQL Server 安裝程式會安裝下列 CEIP 服務。
服務 | 描述 |
---|---|
SQLTELEMETRY | 將資料庫引擎遙測資料傳回給 Microsoft 的「客戶經驗改進計畫」。 |
SSASTELEMETRY | 將 SSAS 遙測資料傳回給 Microsoft 的「客戶經驗改進計畫」。 |
SSISTELEMETRY | 將 SSIS 遙測資料傳回給 Microsoft 的「客戶經驗改進計畫」。 |
服務屬性和組態
用來啟動並執行 SQL Server 的啟動帳戶可以是網域使用者帳戶、本機使用者帳戶、受管理的服務帳戶、虛擬帳戶或內建的系統帳戶。 若要啟動並執行,SQL Server 中的每個服務都必須在安裝期間設定啟動帳戶。
注意
對於 SQL Server 2016 (13.x) 和更新版本的 SQL Server 容錯移轉叢集執行個體,網域使用者帳戶或群組受管理的服務帳戶可用來作為 SQL Server 的啟動帳戶。
本節描述可設定用來啟動 SQL Server 服務的帳戶、SQL Server 安裝程式使用的預設值、每個服務 SID 的概念、啟動選項,以及設定防火牆。
預設服務帳戶
下表列出安裝所有元件時,安裝程式所使用的預設服務帳戶。 列出的預設帳戶就是建議的帳戶 (除非另有附註)。
獨立伺服器或網域控制站
元件 | Windows Server 2008 | Windows 7、Windows Server 2008 R2 及更高版本 |
---|---|---|
Database Engine | NETWORK SERVICE | 虛擬帳戶 1 |
SQL Server Agent | NETWORK SERVICE | 虛擬帳戶 1 |
SSAS | NETWORK SERVICE | 虛擬帳戶 1 2 |
SSIS | NETWORK SERVICE | 虛擬帳戶 1 |
SSRS | NETWORK SERVICE | 虛擬帳戶 1 |
SQL Server Distributed Replay Controller | NETWORK SERVICE | 虛擬帳戶 1 |
SQL Server Distributed Replay Client | NETWORK SERVICE | 虛擬帳戶 1 |
FD 啟動器 (全文檢索搜尋) | LOCAL SERVICE | 虛擬帳戶 |
SQL Server Browser | LOCAL SERVICE | LOCAL SERVICE |
SQL Server VSS Writer | LOCAL SYSTEM | LOCAL SYSTEM |
進階分析擴充功能 | NTSERVICE\MSSQLLaunchpad | NTSERVICE\MSSQLLaunchpad |
PolyBase 引擎 | NETWORK SERVICE | NETWORK SERVICE |
PolyBase 資料移動服務 | NETWORK SERVICE | NETWORK SERVICE |
1 需要 SQL Server 電腦外部的資源時,Microsoft 建議您使用受管理的服務帳戶 (MSA) (設定了必要的最低權限)。
2 安裝在網域控制站上時,不支援作為服務帳戶的虛擬帳戶。
SQL Server 容錯移轉叢集執行個體
元件 | Windows Server 2008 | Windows Server 2008 R2 |
---|---|---|
Database Engine | 無。 提供 網域使用者 帳戶。 | 提供 網域使用者 帳戶。 |
SQL Server Agent | 無。 提供 網域使用者 帳戶。 | 提供 網域使用者 帳戶。 |
SSAS | 無。 提供 網域使用者 帳戶。 | 提供 網域使用者 帳戶。 |
SSIS | NETWORK SERVICE | 虛擬帳戶 |
SSRS | NETWORK SERVICE | 虛擬帳戶 |
FD 啟動器 (全文檢索搜尋) | LOCAL SERVICE | 虛擬帳戶 |
SQL Server Browser | LOCAL SERVICE | LOCAL SERVICE |
SQL Server VSS Writer | LOCAL SYSTEM | LOCAL SYSTEM |
變更帳戶屬性
重要
請一律使用 SQL Server 工具 (如 SQL Server 組態管理員) 來變更 SQL Server 資料庫引擎或 SQL Server Agent 服務所用的帳戶,或是變更帳戶的密碼。 除了變更帳戶名稱之外,SQL Server 組態管理員也會執行其他組態,例如,更新 Windows 本機安全存放區,它會保護資料庫引擎的服務主要金鑰。 其他工具 (例如 Windows 服務控制管理員) 可以變更帳戶名稱,但不會變更所有必要的設定。
如果您使用其他方式來變更任何 SQL 服務的服務帳戶,可能會導致非預期的行為或錯誤。 例如,如果您使用 Windows 服務 Applet 來將 SQL Agent 服務帳戶變更為網域帳戶,則您可能會注意到使用作業系統 (Cmdexec) 的 SQL 代理程式作業、複寫或 SSIS 作業步驟可能會失敗,並出現如下的錯誤:
Executed as user : Domain\Account. The process could not be created for step Step Number of job Unique Job ID (reason: A required privilege is not held by the client). The step failed.
若要解決此錯誤,您應該使用 SQL Server 組態管理員來執行下列動作:
- 暫時將 SQL Agent 服務帳戶變更回到預設的虛擬帳戶 (預設執行個體:NT Service\SQLSERVERAGENT。具名執行個體:NT Service\SQLAGENT$<instance_name>。)
- 重新啟動 SQL Server Agent 服務
- 將服務帳戶變更回到所需的網域帳戶
- 重新啟動 SQL Server Agent 服務
針對您部署在 SharePoint 伺服陣列中的 Analysis Services 執行個體,請一律使用 SharePoint 管理中心來變更 Power Pivot 服務應用程式和 Analysis Services 服務的伺服器帳戶。 當您使用管理中心時,相關聯的設定和權限都會更新為使用新的帳戶資訊。
若要變更 Reporting Services 選項,請使用 Reporting Services 組態工具。
受管理的服務帳戶、群組受管理的服務帳戶和虛擬帳戶
受管理的服務帳戶、群組受管理的服務帳戶和虛擬帳戶的設計,在於提供重要的應用程式 (例如 SQL Server) 並與自己的帳戶隔離,同時不需系統管理員手動管理服務主要名稱 (SPN) 和這些帳戶的認證。 這些帳戶可讓長期管理服務帳戶使用者、密碼和 SPN 的工作更輕鬆。
-
受管理的服務帳戶 (MSA) 是一種網域帳戶,由網域控制站建立和管理。 這個帳戶會指派給執行服務的單一成員電腦使用。 密碼是由網域控制站自動管理。 您無法使用 MSA 來登入電腦,但是電腦可以使用 MSA 來啟動 Windows 服務。 MSA 能夠在提供讀取和寫入 servicePrincipalName 權限時,於 Active Directory 內註冊服務主體名稱 (SPN)。 MSA 會以
$
後置詞來命名,例如DOMAIN\ACCOUNTNAME$
。 指定 MSA 時,讓密碼空白。 因為 MSA 會指派給單一電腦,所以不能在 Windows 叢集的不同節點上使用。注意
網域管理員必須先在 Active Directory 中建立 MSA,SQL Server 安裝程式才能將其用於 SQL Server 服務。
-
群組受管理的服務帳戶 (gMSA) 是一個適用於多部伺服器的 MSA。 Windows 會為伺服器群組上執行的服務管理服務。 Active Directory 會自動更新群組受管理的服務帳戶密碼,不需要重新啟動服務。 您可以設定 SQL Server 服務,以使用群組受管理的服務帳戶主體。 從 SQL Server 2014 開始,SQL Server 可支援獨立執行個體的群組受管理的服務帳戶,而自 SQL Server 2016 和更新版本起,則可支援容錯移轉叢集執行個體與可用性群組。
若要針對 SQL Server 2014 或更新版本使用 gMSA,作業系統必須是 Windows Server 2012 R2 或更新版本。 Windows Server 2012 R2 的伺服器需要套用 KB 2998082 ,以便服務可以在變更密碼之後立即登入,而不會中斷。
如需詳細資訊,請參閱適用於 Windows Server 2016 及更新版本的群組受管理的服務帳戶。 對於舊版的 Windows Server,請參閱群組受管理的服務帳戶。
注意
網域管理員必須先在 Active Directory 中建立 gMSA,SQL Server 安裝程式才能將其用於 SQL Server 服務。
-
虛擬帳戶 (從 Windows Server 2008 R2 和 Windows 7 開始) 為「受管理的本機帳戶」 ,並會提供下列功能來簡化服務管理工作。 虛擬帳戶是自動管理的,而且虛擬帳戶可以在網域環境中存取網路。 如果在 SQL Server 的安裝期間針對服務帳戶使用預設值,則會使用以執行個體名稱作為服務名稱的虛擬帳戶,其格式為
NT SERVICE\<SERVICENAME>
。 以虛擬帳戶執行的服務,會利用電腦帳戶的認證,存取網路資源,格式為<domain_name>\<computer_name>$
。 指定虛擬帳戶啟動 SQL Server 時,請讓密碼空白。 如果虛擬帳戶無法註冊服務主要名稱 (SPN),請手動註冊 SPN。 如需手動註冊 SPN 的詳細資訊,請參閱手動 SPN 註冊。注意
虛擬帳戶無法用於 SQL Server 容錯移轉叢集執行個體,因為虛擬帳戶在叢集的每一個節點上不會有相同的 SID。
下表列出虛擬帳戶名稱的範例。
服務 虛擬帳戶名稱 資料庫引擎服務的預設執行個體 NT SERVICE\MSSQLSERVER
名為 PAYROLL
之資料庫引擎服務的具名執行個體NT SERVICE\MSSQL$PAYROLL
預設 SQL Server 執行個體上的 SQL Server Agent 服務 NT Service\SQLSERVERAGENT
名為 PAYROLL
之 SQL Server 執行個體上的 SQL Server Agent 服務NT SERVICE\SQLAGENT$PAYROLL
如需受管理的服務帳戶和虛擬帳戶的詳細資訊,請參閱服務帳戶的逐步指南的受管理的服務帳戶和虛擬帳戶概念一節,以及受管理的服務帳戶常見問題集 (FAQ)。
注意
永遠使用可能的最低使用者權限來執行 SQL Server 服務。 在可能的情況下使用 MSA、gMSA 或虛擬帳戶。 如果無法使用 MSA、gMSA 或虛擬帳戶,請使用特定低權限的使用者帳戶或網域帳戶,而不要使用 SQL Server 服務的共用帳戶。 針對不同的 SQL Server 服務使用個別的帳戶。 請勿將其他權限授與給 SQL Server 服務帳戶或服務群組。 權限會透過群組成員資格授與,或直接授與服務 SID (如果支援服務 SID)。
自動啟動
除了具有使用者帳戶之外,每項服務有三個可能的啟動狀態供使用者控制:
- 已停用。 服務已安裝但目前未執行。
- 手動。 服務已安裝,但只有另一個服務或應用程式需要它的功能時才會啟動。
- 自動。 服務由作業系統自動啟動。
啟動狀態會在安裝過程中選取。 安裝具名執行個體時,SQL Server Browser 服務應該設定為自動啟動。
在自動安裝期間設定服務
下表顯示可以在安裝期間設定的 SQL Server 服務。 若為自動安裝,您可以在組態檔案中或從命令提示字元使用這些參數。
SQL Server 服務名稱 | 自動安裝的參數 1 |
---|---|
MSSQLSERVER | SQLSVCACCOUNT、SQLSVCPASSWORD、SQLSVCSTARTUPTYPE |
SQLServerAgent 2 | AGTSVCACCOUNT、AGTSVCPASSWORD、AGTSVCSTARTUPTYPE |
MSSQLServerOLAPService | ASSVCACCOUNT、ASSVCPASSWORD、ASSVCSTARTUPTYPE |
ReportServer | RSSVCACCOUNT、RSSVCPASSWORD、RSSVCSTARTUPTYPE |
Integration Services | ISSVCACCOUNT、ISSVCPASSWORD、ISSVCSTARTUPTYPE |
SQL Server Distributed Replay Controller | DRU_CTLR、CTLRSVCACCOUNT、CTLRSVCPASSWORD、CTLRSTARTUPTYPE、CTLRUSERS |
SQL Server Distributed Replay Client | DRU_CLT、CLTSVCACCOUNT、CLTSVCPASSWORD、CLTSTARTUPTYPE、CLTCTLRNAME、CLTWORKINGDIR、CLTRESULTDIR |
R 服務或機器學習服務 | EXTSVCACCOUNT、EXTSVCPASSWORD、ADVANCEDANALYTICS 3 |
PolyBase 引擎 | PBENGSVCACCOUNT、PBENGSVCPASSWORD、PBENGSVCSTARTUPTYPE、PBDMSSVCACCOUNT、PBDMSSVCPASSWORD、PBDMSSVCSTARTUPTYPE、PBSCALEOUT、PBPORTRANGE |
1 如需自動安裝的詳細資訊和範例語法,請參閱從命令提示字元安裝 SQL Server。
2 SQL Server Agent 服務已在 SQL Server Express 和 SQL Server Express with Advanced Services 的執行個體上停用。
3 目前不支援單獨透過參數設定 Launchpad 的帳戶。 請使用 SQL Server 設定管理員來變更帳戶及其他服務設定。
防火牆通訊埠
大部分的情況下,在初始安裝時,資料庫引擎可以藉由像是與 SQL Server 安裝在同一部電腦上的 SQL Server Management Studio 這類工具進行連接。 SQL Server 安裝程式不會在 Windows 防火牆中開啟連接埠。 除非將資料庫引擎設定為在 TCP 通訊埠上接聽,而且已在 Windows 防火牆中開啟適當的通訊埠進行連接,否則無法從其他電腦連接。 如需詳細資訊,請參閱 設定 Windows 防火牆以允許 SQL Server 存取。
服務權限
本節描述 SQL Server 安裝程式針對 SQL Server 服務的個別服務 SID 設定的權限。
- 服務組態和存取控制
- Windows 權限和權利
- 授與 SQL Server 個別服務 SID 或 SQL Server 本機 Windows 群組的檔案系統權限
- 授與其他 Windows 使用者帳戶或群組的檔案系統權限
- 與不常見磁碟位置相關的檔案系統權限
- 檢閱其他考量
- 登錄權限
- WMI
- 具名管道
服務組態和存取控制
SQL Server 會對它的每個服務啟用個別服務 SID,以提供深度的服務隔離和防禦。 每個服務 SID 都是衍生自服務名稱,而且是該服務專用的。 例如,資料庫引擎服務的具名執行個體服務 SID 名稱可能是 NT Service\MSSQL$<instance_name>
。 服務隔離可讓服務存取特定物件,而不需要以高權限帳戶執行或降低物件的安全性保護。 SQL Server 服務可以透過使用包含服務 SID 的存取控制項目,來限制其資源的存取權。
注意
在 Windows 7 和 Windows Server 2008 R2 (以及更新版本) 上,個別服務 SID 可以是服務所使用的虛擬帳戶。
針對大部分元件,SQL Server 會直接為個別服務帳戶設定 ACL,因此不需重複資源 ACL 程序即可變更服務帳戶。
安裝 SSAS 時,會建立 Analysis Services 服務的個別服務 SID。 另外還會建立本機的 Windows 群組,其命名格式為 SQLServerMSASUser$<computer_name>$<instance_name>
。 個別服務 SID NT SERVICE\MSSQLServerOLAPService
會在本機 Windows 群組中授與成員資格,而本機 Windows 群組則是在 ACL 中授與適當的權限。 如果用來啟動 Analysis Services 服務的帳戶變更,SQL Server 組態管理員就必須變更部分 Windows 授權 (例如,以服務登入的權利),不過指派給本機 Windows 群組的權限仍然可以使用,而且不會有任何更新,因為個別服務 SID 並未變更。 這個方法可讓 Analysis Services 服務在升級期間重新命名。
在 SQL Server 安裝期間,SQL Server 安裝程式會為 SSAS 和 SQL Server Browser 服務建立本機 Windows 群組。 針對這些服務,SQL Server 會為本機 Windows 群組設定 ACL。
根據服務組態,在安裝或升級期間服務帳戶或服務 SID 會加入做為服務群組成員。
Windows 權限和權利
指派為用來啟動服務的帳戶需要有服務的 啟動、停止和暫停權限 。 SQL Server 安裝程式會自動指派此權限。 請先安裝遠端伺服器管理工具 (RSAT)。 請參閱適用於 Windows 10 的遠端伺服器管理工具。
下表顯示 SQL Server 安裝程式要求 SQL Server 元件所使用之個別服務 SID 或本機 Windows 群組需要有的權限。
SQL Server 服務 | SQL Server 安裝程式授與的權限 |
---|---|
SQL Server 資料庫引擎: (所有權利都會授與給個別服務 SID。預設執行個體: NT SERVICE\MSSQLSERVER 。具名執行個體:NT Service\MSSQL$<instance_name> 。) |
以服務方式登入 (SeServiceLogonRight) 取代處理序層級 Token (SeAssignPrimaryTokenPrivilege) 略過周遊檢查 (SeChangeNotifyPrivilege) 調整處理序的記憶體配額 (SeIncreaseQuotaPrivilege) 啟動 SQL 寫入器的權限 讀取事件記錄檔服務的權限 讀取遠端程序呼叫服務的權限 |
SQL Server Agent:1 (所有權利都會授與給個別服務 SID。預設執行個體: NT Service\SQLSERVERAGENT 。具名執行個體:NT Service\SQLAGENT$<instance_name> 。) |
以服務方式登入 (SeServiceLogonRight) 取代處理序層級 Token (SeAssignPrimaryTokenPrivilege) 略過周遊檢查 (SeChangeNotifyPrivilege) 調整處理序的記憶體配額 (SeIncreaseQuotaPrivilege) |
SSAS: (所有權利都會授與給本機 Windows 群組。預設執行個體: SQLServerMSASUser$<computer_name>$MSSQLSERVER 。具名執行個體:SQLServerMSASUser$<computer_name>$<instance_name> 。Power Pivot for SharePoint 執行個體:SQLServerMSASUser$<computer_name>$PowerPivot 。) |
以服務方式登入 (SeServiceLogonRight) 僅限表格式: 增加處理程序工作組 (SeIncreaseWorkingSetPrivilege) 調整處理序的記憶體配額 (SeIncreaseQuotaPrivilege) 鎖定記憶體中的分頁 (SeLockMemoryPrivilege) - 這只有在分頁完全關閉時才需要。 僅限容錯移轉叢集安裝: 增加排程優先順序 (SeIncreaseBasePriorityPrivilege) |
SSRS: (所有權利都會授與給個別服務 SID。預設執行個體: NT SERVICE\ReportServer 。具名執行個體:NT SERVICE\ReportServer$<instance_name> 。) |
以服務方式登入 (SeServiceLogonRight) |
SSIS: (所有權利都會授與給個別服務 SID。預設執行個體和具名執行個體: NT SERVICE\MsDtsServer150 。Integration Services 沒有具名執行個體的個別處理程序。) |
以服務方式登入 (SeServiceLogonRight) 寫入應用程式事件記錄檔的權限。 略過周遊檢查 (SeChangeNotifyPrivilege) 在驗證之後模擬用戶端 (SeImpersonatePrivilege) |
全文檢索搜尋: (所有權利都會授與給個別服務 SID。預設執行個體: NT Service\MSSQLFDLauncher 。具名執行個體:NT Service\ MSSQLFDLauncher$<instance_name> 。) |
以服務方式登入 (SeServiceLogonRight) 調整處理序的記憶體配額 (SeIncreaseQuotaPrivilege) 略過周遊檢查 (SeChangeNotifyPrivilege) |
SQL Server Browser: (所有權利都會授與給本機 Windows 群組。預設或具名執行個體: SQLServer2005SQLBrowserUser$<computer_name> 。SQL Server Browser 沒有具名執行個體的個別處理程序。) |
以服務方式登入 (SeServiceLogonRight) |
SQL Server VSS Writer: (所有權利都會授與給個別服務 SID。預設或具名執行個體: NT Service\SQLWriter 。SQL Server VSS Writer 沒有具名執行個體的個別處理程序。) |
SQLWriter 服務會以 LOCAL SYSTEM 帳戶執行,該帳戶擁有所有必要的權限。 SQL Server 安裝程式不會檢查或授與此服務的權限。 |
SQL Server Distributed Replay Controller: | 以服務方式登入 (SeServiceLogonRight) |
SQL Server Distributed Replay Client: | 以服務方式登入 (SeServiceLogonRight) |
PolyBase 引擎和 DMS: | 以服務方式登入 (SeServiceLogonRight) |
Launchpad: | 以服務 登入 (SeServiceLogonRight) 取代處理序層級 Token (SeAssignPrimaryTokenPrivilege) 略過周遊檢查 (SeChangeNotifyPrivilege) 調整處理序的記憶體配額 (SeIncreaseQuotaPrivilege) |
R Services/機器學習 Services:SQLRUserGroup (SQL Server 2016 (13.x) 和 SQL Server 2017 (14.x)) | 依預設沒有 [允許本機登入] 權限 |
機器學習服務: '所有應用程式套件' [AppContainer] (SQL Server 2019 (15.x)) | SQL Server 'Binn'、R_Services 和 PYTHON_Services 目錄的讀取和執行權限 |
1 SQL Server Agent 服務已在 SQL Server Express 執行個體上停用。
授與給 SQL Server 個別服務 SID 或本機 Windows 群組的檔案系統權限
SQL Server 服務帳戶必須有資源的存取權。 存取控制清單會針對個別服務 SID 或本機 Windows 群組設定。
重要
若為容錯移轉叢集安裝,則必須對本機帳戶的 ACL 設定共用磁碟上的資源。
下表顯示 SQL Server 安裝程式所設定的 ACL:
服務帳戶 | 檔案和資料夾 | 存取 |
---|---|---|
MSSQLServer | Instid\MSSQL\backup | 完整控制 |
Instid\MSSQL\binn | 讀取、執行 | |
Instid\MSSQL\data | 完整控制 | |
Instid\MSSQL\FTData | 完整控制 | |
Instid\MSSQL\Install | 讀取、執行 | |
Instid\MSSQL\Log | 完整控制 | |
Instid\MSSQL\Repldata | 完整控制 | |
150\shared | 讀取、執行 | |
Instid\MSSQL\Template Data (僅限 SQL Server Express) | Read | |
SQLServerAgent 1 | Instid\MSSQL\binn | 完整控制 |
Instid\MSSQL\Log | 讀取、寫入、刪除、執行 | |
150\com | 讀取、執行 | |
150\shared | 讀取、執行 | |
150\shared\Errordumps | 讀取、寫入 | |
ServerName\EventLog | 完整控制 | |
FTS | Instid\MSSQL\FTData | 完整控制 |
Instid\MSSQL\FTRef | 讀取、執行 | |
150\shared | 讀取、執行 | |
150\shared\Errordumps | 讀取、寫入 | |
Instid\MSSQL\Install | 讀取、執行 | |
Instid\MSSQL\jobs | 讀取、寫入 | |
MSSQLServerOLAPService | 150\shared\ASConfig | 完整控制 |
Instid\OLAP | 讀取、執行 | |
Instid\Olap\Data | 完整控制 | |
Instid\Olap\Log | 讀取、寫入 | |
Instid\OLAP\Backup | 讀取、寫入 | |
Instid\OLAP\Temp | 讀取、寫入 | |
150\shared\Errordumps | 讀取、寫入 | |
ReportServer | Instid\Reporting Services\Log Files | 讀取、寫入、刪除 |
Instid\Reporting Services\ReportServer | 讀取、執行 | |
Instid\Reporting Services\ReportServer\global.asax | 完整控制 | |
Instid\Reporting Services\ReportServer\rsreportserver.config | 讀取 | |
Instid\Reporting Services\RSTempfiles | 讀取、寫入、執行、刪除 | |
Instid\Reporting Services\RSWebApp | 讀取、執行 | |
150\shared | 讀取、執行 | |
150\shared\Errordumps | 讀取、寫入 | |
MSDTSServer100 | 150\dts\binn\MsDtsSrvr.ini.xml | Read |
150\dts\binn | 讀取、執行 | |
150\shared | 讀取、執行 | |
150\shared\Errordumps | 讀取、寫入 | |
SQL Server Browser | 150\shared\ASConfig | Read |
150\shared | 讀取、執行 | |
150\shared\Errordumps | 讀取、寫入 | |
SQLWriter | N/A (以本機系統執行) | |
User | Instid\MSSQL\binn | 讀取、執行 |
Instid\Reporting Services\ReportServer | 讀取、執行、列出資料夾內容 | |
Instid\Reporting Services\ReportServer\global.asax | 讀取 | |
Instid\Reporting Services\RSWebApp | 讀取、執行、列出資料夾內容 | |
150\dts | 讀取、執行 | |
150\tools | 讀取、執行 | |
100\tools | 讀取、執行 | |
90\tools | 讀取、執行 | |
80\tools | 讀取、執行 | |
150\sdk | Read | |
Microsoft SQL Server\150\Setup Bootstrap | 讀取、執行 | |
SQL Server Distributed Replay Controller | <ToolsDir>\DReplayController\Log\ (空目錄) | 讀取、執行、列出資料夾內容 |
<ToolsDir>\DReplayController\DReplayController.exe | 讀取、執行、列出資料夾內容 | |
<ToolsDir>\DReplayController\resources|讀取、執行、列出資料夾內容 | ||
<ToolsDir>\DReplayController\{all dlls} | 讀取、執行、列出資料夾內容 | |
<ToolsDir>\DReplayController\DReplayController.config | 讀取、執行、列出資料夾內容 | |
<ToolsDir>\DReplayController\IRTemplate.tdf | 讀取、執行、列出資料夾內容 | |
<ToolsDir>\DReplayController\IRDefinition.xml | 讀取、執行、列出資料夾內容 | |
SQL Server Distributed Replay Client | <ToolsDir>\DReplayClient\Log|讀取、執行、列出資料夾內容 | |
<ToolsDir>\DReplayClient\DReplayClient.exe | 讀取、執行、列出資料夾內容 | |
<ToolsDir>\DReplayClient\resources|讀取、執行、列出資料夾內容 | ||
<ToolsDir>\DReplayClient\ (所有 dll) | 讀取、執行、列出資料夾內容 | |
<ToolsDir>\DReplayClient\DReplayClient.config | 讀取、執行、列出資料夾內容 | |
<ToolsDir>\DReplayClient\IRTemplate.tdf | 讀取、執行、列出資料夾內容 | |
<ToolsDir>\DReplayClient\IRDefinition.xml | 讀取、執行、列出資料夾內容 | |
Launchpad | %binn | 讀取、執行 |
ExtensiblilityData | 完整控制 | |
Log\ExtensibilityLog | 完整控制 |
1 SQL Server Agent 服務已在 SQL Server Express 和 SQL Server Express with Advanced Services 的執行個體上停用。
當資料庫檔案儲存於使用者定義的位置時,您必須授與個別服務 SID 對該位置的存取權。 如需將檔案系統權限授與個別服務 SID 的詳細資訊,請參閱 設定 Database Engine 對檔案系統的存取權限。
授與其他 Windows 使用者帳戶或群組的檔案系統權限
某些存取控制權限可能必須授與給內建帳戶或其他 SQL Server 服務帳戶。 下表列出 SQL Server 安裝程式所設定的其他 ACL。
要求元件 | 帳戶 | 資源 | 權限 |
---|---|---|---|
MSSQLServer | 效能記錄使用者 | Instid\MSSQL\binn | 列出資料夾內容 |
效能監視器使用者 | Instid\MSSQL\binn | 列出資料夾內容 | |
效能記錄使用者、效能監視器使用者 | \WINNT\system32\sqlctr150.dll | 讀取、執行 | |
僅限管理員 | \\.\root\Microsoft\SqlServer\ServerEvents\<sql_instance_name> 1 |
完整控制 | |
管理員,系統 | \tools\binn\schemas\sqlserver\2004\07\showplan | 完整控制 | |
使用者 | \tools\binn\schemas\sqlserver\2004\07\showplan | 讀取、執行 | |
Reporting Services | 報表伺服器 Windows 服務帳戶 | <install>\Reporting Services\LogFiles | 刪除 READ_CONTROL SYNCHRONIZE FILE_GENERIC_READ FILE_GENERIC_WRITE FILE_READ_DATA FILE_WRITE_DATA FILE_APPEND_DATA FILE_READ_EA FILE_WRITE_EA FILE_READ_ATTRIBUTES FILE_WRITE_ATTRIBUTES |
報表伺服器 Windows 服務帳戶 | <install>\Reporting Services\ReportServer | 讀取 | |
報表伺服器 Windows 服務帳戶 | <install>\Reporting Services\ReportServer\global.asax | 完整 | |
報表伺服器 Windows 服務帳戶 | <install>\Reporting Services\RSWebApp | 讀取、執行 | |
所有人 | <install>\Reporting Services\ReportServer\global.asax | READ_CONTROL FILE_READ_DATA FILE_READ_EA FILE_READ_ATTRIBUTES |
|
報表伺服器 Windows 服務帳戶 | <install>\Reporting Services\ReportServer\rsreportserver.config | 刪除 READ_CONTROL SYNCHRONIZE FILE_GENERIC_READ FILE_GENERIC_WRITE FILE_READ_DATA FILE_WRITE_DATA FILE_APPEND_DATA FILE_READ_EA FILE_WRITE_EA FILE_READ_ATTRIBUTES FILE_WRITE_ATTRIBUTES |
|
所有人 | 報表伺服器索引鍵 (Instid 登錄區) | 查詢值 列舉子機碼 Notify 讀取控制 |
|
終端服務使用者 | 報表伺服器索引鍵 (Instid 登錄區) | 查詢值 設定值 建立子機碼 列舉子機碼 Notify 刪除 讀取控制 |
|
進階使用者 | 報表伺服器索引鍵 (Instid 登錄區) | 查詢值 設定值 建立子機碼 列舉子機碼 Notify 刪除 讀取控制 |
1 這是 WMI 提供者命名空間。
與不常見磁碟位置相關的檔案系統權限
安裝位置的預設磁碟機為系統磁碟機,通常是 C 磁碟機。本節描述將 tempdb 或使用者資料庫安裝至不常見位置時的其他考量。
非預設磁碟機
安裝到非預設磁碟機的本機磁碟機時,個別服務 SID 必須擁有檔案位置的存取權。 SQL Server 安裝程式會佈建必要的存取權。
網路共用
將資料庫安裝到網路共用時,服務帳戶必須擁有使用者和 tempdb
資料庫之檔案位置的存取權。 SQL Server 安裝程式不會佈建網路共用的存取權。 在執行安裝程式之前,使用者必須先為服務帳戶提供 tempdb 位置的存取。 使用者在建立資料庫之前,必須先提供使用者資料庫位置的存取。
注意
虛擬帳戶無法對遠端位置進行驗證。 所有虛擬帳戶都使用電腦帳戶的權限。 會使用格式 <domain_name>\<computer_name>$
來佈建電腦帳戶。
檢閱其他考量
下表顯示 SQL Server 服務提供其他功能時所需的權限。
服務/應用程式 | 功能 | 必要權限 |
---|---|---|
SQL Server (MSSQLSERVER) | 使用 xp_sendmail 寫入郵件位置。 | 網路寫入權限。 |
SQL Server (MSSQLSERVER) | 對 SQL Server 管理員以外的使用者執行 xp_cmdshell。 | 做為作業系統的一部分並取代處理序層級 Token。 |
SQL Server Agent (MSSQLSERVER) | 使用自動重新啟動功能。 | 必須是管理員本機群組的成員。 |
Database Engine Tuning Advisor | 調整資料庫以達到最佳查詢效能。 | 第一次使用時,具有系統管理認證的使用者必須初始化應用程式。 初始化之後,dbo 使用者可使用 Database Engine Tuning Advisor 來只微調他們所擁有的那些資料表。 如需詳細資訊,請參閱啟動及使用 Database Engine Tuning Advisor。 |
重要
在升級 SQL Server 之前,請先啟用 SQL Server Agent 並驗證必要的預設組態:SQL Server Agent 服務帳戶是 SQL Server sysadmin 固定伺服器角色的成員。
登錄權限
若是執行個體感知元件,會在 HKLM\Software\Microsoft\Microsoft SQL Server\<Instance_ID>
之下建立登錄區。 例如:
HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL15.MyInstance
HKLM\Software\Microsoft\Microsoft SQL Server\MSASSQL15.MyInstance
HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL.150
登錄也會維護執行個體識別碼到執行個體名稱的對應。 執行個體識別碼到執行個體名稱的對應維護如下:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Names\SQL] "InstanceName"="MSSQL15"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Names\OLAP] "InstanceName"="MSASSQL15"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Names\RS] "InstanceName"="MSRSSQL15"
WMI
Windows Management Instrumentation (WMI) 必須能夠連接到資料庫引擎。 為支援此功能,會在資料庫引擎中提供 Windows WMI 提供者 (NT SERVICE\winmgmt
) 的個別服務 SID。
SQL WMI 提供者需要下列最低權限:
msdb
資料庫中 db_ddladmin 或 db_owner 固定資料庫角色的成員資格。伺服器中的CREATE DDL EVENT NOTIFICATION 權限。
資料庫引擎中的 CREATE TRACE EVENT NOTIFICATION 權限。
VIEW ANY DATABASE 伺服器層級權限。
SQL Server 安裝程式會建立 SQL WMI 命名空間,並且將讀取權限授與 SQL Server Agent 服務 SID。
具名管道
在所有安裝中,SQL Server 安裝程式都會透過共用記憶體通訊協定 (它是本機具名管道) 來提供 SQL Server 資料庫引擎的存取權。
佈建
本節描述如何在各種 SQL Server 元件內佈建帳戶。
資料庫引擎佈建
下列帳戶會新增為 SQL Server 資料庫引擎中的登入。
Windows 主體
在安裝期間,SQL Server 安裝程式至少需要將一個使用者帳戶命名為 sysadmin 固定伺服器角色的成員。
SA 帳戶
sa 帳戶一律做為資料庫引擎登入存在,而且是 sysadmin 固定伺服器角色的成員。 僅使用 Windows 驗證來安裝資料庫引擎 (也就是未啟用 SQL Server 驗證) 時,儘管 sa 登入仍然存在,但是會停用,而且密碼是複雜且隨機的。 如需啟用 sa 帳戶的詳細資訊,請參閱 變更伺服器驗證模式。
SQL Server 個別服務 SID 登入和權限
SQL Server 服務的個別服務 SID (也稱為服務安全性主體 (SID)) 會佈建為資料庫引擎登入。 個別服務 SID 登入是 系統管理員 (sysadmin) 固定伺服器角色的成員。 如需個別服務 SID 的詳細資訊,請參閱使用服務 SID 將權限授與 SQL Server 中的服務。
SQL Server Agent 登入和權限
SQL Server Agent 服務的個別服務 SID 會做為資料庫引擎登入來加以佈建。 個別服務 SID 登入是 系統管理員 (sysadmin) 固定伺服器角色的成員。
Always On 可用性群組和 SQL 容錯移轉叢集執行個體和權限
將資料庫引擎安裝為 Always On 可用性群組或 SQL 容錯移轉叢集執行個體 (SQL FCI) 時,LOCAL SYSTEM 會在資料庫引擎中加以佈建。 LOCAL SYSTEM 登入會獲得授與 ALTER ANY AVAILABILITY GROUP 權限 (適用於 Always On 可用性群組) 以及 VIEW SERVER STATE 權限 (適用於 SQL FCI)。
SQL 寫入器和權限
SQL Server VSS 寫入器服務的個別服務 SID 會做為資料庫引擎登入來加以佈建。 個別服務 SID 登入是 系統管理員 (sysadmin) 固定伺服器角色的成員。
SQL WMI 和權限
SQL Server 安裝程式會佈建 NT SERVICE\Winmgmt
帳戶作為資料庫引擎登入,並且將它加入 sysadmin 固定伺服器角色中。
SSRS 佈建
安裝過程中指定的帳戶會做為 RSExecRole 資料庫角色的成員提供。 如需詳細資訊,請參閱設定報表伺服器服務帳戶 (SSRS 組態管理員)。
SSAS 佈建
SSAS 服務帳戶需求會依據您部署伺服器的方式而有所不同。 如果您正在安裝 Power Pivot for SharePoint,SQL Server 安裝程式會要求您設定 Analysis Services 服務以在網域帳戶下執行。 網域帳戶是支援 SharePoint 內建的受管理帳戶設備所需。 基於這個理由,SQL Server 安裝程式不會針對 Power Pivot for SharePoint 安裝提供預設的服務帳戶 (例如虛擬帳戶)。 如需佈建 Power Pivot for SharePoint 的詳細資訊,請參閱設定 Power Pivot 服務帳戶。
針對所有其他獨立 SSAS 安裝,您可以提供以網域帳戶、內建系統帳戶、受管理的帳戶或虛擬帳戶執行的服務。 如需帳戶佈建的詳細資訊,請參閱設定服務帳戶 (Analysis Services)。
針對叢集安裝,您必須指定網域帳戶或內建系統帳戶。 SSAS 容錯移轉叢集不支援受管理的帳戶,也不支援虛擬帳戶。
所有 SSAS 安裝都會要求您指定 Analysis Services 執行個體的系統管理員。 系統管理員權限會在 Analysis Services Server 角色中提供。
SSRS 佈建
安裝期間所指定的帳戶會在資料庫引擎中做為 RSExecRole 資料庫角色的成員來加以佈建。 如需詳細資訊,請參閱設定報表伺服器服務帳戶 (SSRS 組態管理員)。
從舊版升級
本節描述從舊版 SQL Server 中升級期間所做的變更。
SQL Server 2019 (15.x) 需要受支援的作業系統。 在較低作業系統版本上執行的任何舊版 SQL Server 都必須先將作業系統升級,才能升級 SQL Server。
在 SQL Server 2005 (9.x) 升級至 2019 SQL Server 2019 (15.x) 期間,安裝程式會以下列方式來設定 SQL Server 執行個體:
- 資料庫引擎會以個別服務 SID 的安全性內容執行。 個別服務 SID 會獲得存取 SQL Server 執行個體的檔案資料夾 (例如 DATA) 和 SQL Server 登錄機碼的權限。
- 資料庫引擎的個別服務 SID 會在資料庫引擎中作為 sysadmin 固定伺服器角色的成員來加以佈建。
- 除非 SQL Server 是容錯移轉叢集執行個體,否則個別服務 SID 會新增至本機SQL Server Windows 群組。
- SQL Server 資源仍然會佈建至本機 SQL Server Windows 群組。
- 服務的本機 Windows 群組會從
SQLServer2005MSSQLUser$<computer_name>$<instance_name>
重新命名為SQLServerMSSQLUser$<computer_name>$<instance_name>
。 移轉之資料庫的檔案位置具有本機 Windows 群組的存取控制項目 (ACE)。 新資料庫的檔案位置將具有個別服務 SID 的 ACE。
從 SQL Server 2008 (10.0.x) 升級期間,SQL Server 安裝程式會保留 SQL Server 2008 (10.0.x) 每個服務 SID 的 ACE。
如果是 SQL Server 容錯移轉叢集執行個體,則會保留為服務設定之網域帳戶的 ACE。
附錄
本節包含有關 SQL Server 服務的其他資訊。
服務帳戶的描述
服務帳戶是用來啟動 Windows 服務 (例如 SQL Server 資料庫引擎) 的帳戶。 執行 SQL Server 時,除了服務 SID 之外,不需要將服務帳戶作為登入新增至 SQL Server,服務 SID 一律存在,且是 sysamin 固定伺服器角色的成員。
可搭配任何作業系統使用的帳戶
除了前段所描述新的 MSA、gMSA 與 虛擬帳戶之外,下列帳戶都可以使用。
如果此服務必須與網路服務互動,請存取檔案共用等網域資源。如果它使用執行 SQL Server 之其他電腦的連結的伺服器連接,您可能會使用最低權限的網域帳戶。 許多伺服器對伺服器的活動只能以網域使用者帳戶執行。 這個帳戶應該由環境中的網域管理所預先建立。
如果將 SQL Server 設定為使用網域帳戶,則可隔離服務的權限,不過必須手動管理密碼或建立自訂解決方案來管理這些密碼。 許多伺服器應用程式都是使用此策略來增強安全性,不過此策略需要額外的管理和複雜性。 在這些部署中,服務系統管理員在維護工作花費的時間量,例如管理服務密碼並為主要名稱 (SPN) 服務 (Kerberos 驗證需要)。 另外,這些維護工作會破壞服務。
如果電腦不屬於網域的一部分,建議您使用不含 Windows 管理員權限的本機使用者帳戶。
本機服務帳戶是一個內建帳戶,它對於資源和物件的存取層級與使用者群組的成員相同。 如果個別服務或處理序受到危害時,這種有限的存取權可協助保護系統的安全。 以本機服務帳戶執行的服務是以不含認證的 Null 工作階段來存取網路資源。
SQL Server 或 SQL Server Agent 服務不支援本機服務帳戶。 不支援使用本機服務當做執行這些服務的帳戶,因為它是共用服務而且在本機服務之下執行的任何其他服務將會讓系統管理員存取 SQL Server。
此帳戶的實際名稱是 NT AUTHORITY\LOCAL SERVICE
。
網路服務帳戶是一個內建帳戶,它對於資源和物件所擁有的存取權高於使用者群組的成員。 以網路服務帳戶執行的服務,會利用電腦帳戶的認證 (格式為 <domain_name>\<computer_name>$
) 存取網路資源。 此帳戶的實際名稱是 NT AUTHORITY\NETWORK SERVICE
。
本機系統是權限非常高的內建帳戶。 它在本機系統上具有延伸的權限,並可當做網路上的電腦運作。 此帳戶的實際名稱是 NT AUTHORITY\SYSTEM。
識別執行個體感知和執行個體非感知服務
執行個體感知服務會與特定的 SQL Server 執行個體產生關聯,而且會有自己的登錄區。 您可以針對每一個元件或服務執行 SQL Server 安裝程式,以安裝執行個體感知服務的多個複本。 執行個體非感知服務會在所有安裝的 SQL Server 執行個體之間共用。 它們與特定執行個體沒有關聯,只能安裝一次,且不能並存安裝。
SQL Server 中的執行個體感知服務包含以下項目:
SQL Server
SQL Server Agent
請注意,SQL Server Agent 服務已在 SQL Server Express 和 SQL Server Express with Advanced Services 的執行個體上停用。
-
Analysis Services
SharePoint 整合模式中的 Analysis Services 會以單一具名執行個體的形式執行 'Power Pivot'。 執行個體名稱是固定的。 您無法指定不同的名稱。 在每個實體伺服器上,您只能安裝一個當做 'Power Pivot' 執行的 Analysis Services 執行個體。
-
Reporting Services
全文檢索搜尋
SQL Server 中的執行個體非感知服務包含以下項目:
- Integration Services
- SQL Server Browser
- SQL 寫入器
當地語系化服務名稱
下表將顯示 Windows 當地語系化版本所顯示的服務名稱。
Language | 本機服務的名稱 | 網路服務的名稱 | 本機系統的名稱 | 管理群組的名稱 |
---|---|---|---|---|
英文 簡體中文 繁體中文 韓文 日文 |
NT AUTHORITY\LOCAL SERVICE |
NT AUTHORITY\NETWORK SERVICE |
NT AUTHORITY\SYSTEM |
BUILTIN\Administrators |
德文 | NT-AUTORITÄT\LOKALER DIENST |
NT-AUTORITÄT\NETZWERKDIENST |
NT-AUTORITÄT\SYSTEM |
VORDEFINIERT\Administratoren |
法文 | AUTORITE NT\SERVICE LOCAL |
AUTORITE NT\SERVICE RÉSEAU |
AUTORITE NT\SYSTEM |
BUILTIN\Administrators |
義大利文 | NT AUTHORITY\SERVIZIO LOCALE |
NT AUTHORITY\SERVIZIO DI RETE |
NT AUTHORITY\SYSTEM |
BUILTIN\Administrators |
西班牙文 | NT AUTHORITY\SERVICIO LOC |
NT AUTHORITY\SERVICIO DE RED |
NT AUTHORITY\SYSTEM |
BUILTIN\Administradores |
俄文 | NT AUTHORITY\LOCAL SERVICE |
NT AUTHORITY\NETWORK SERVICE |
NT AUTHORITY\СИСТЕМА |
BUILTIN\Администраторы |