如果安裝帳戶沒有特定的使用者權限,則 SQL Server 安裝會失敗

本文可協助您解決當您安裝或升級 Microsoft SQL Server 的安全性緊張之後所發生的問題。

原始產品版本:   SQL server 2008,SQL Server 2008 R2,SQL Server 2012
原始 KB 編號:   2000257

徵狀

請考慮下列案例。 為了加強安全性,您可以移除 Windows 作業系統上的本機系統管理員群組的某些預設使用者權力。 若要準備在此系統上設定 SQL Server,請將安裝帳戶新增至本機 administrators 群組。

在此案例中,如果您是安裝或升級 SQL Server,安裝程式可能會失敗,而且您會收到下列各節所述的各種錯誤訊息。

  • 案例1: 若為全新安裝,安裝程式會失敗,而且您會收到下列錯誤訊息:

    拒絕存取此外,您可能會注意到 Detail.txt 檔案中的錯誤訊息: 2009-01-02 13:00:17 SQLEngine:--SqlServerServiceSCM:等候 nt 事件 ' Global\sqlserverRecComplete $ NIIT ' 建立 2009-01-02 13:00:20 SQLEngine:--2009-01-02 13:00:20--------------------------------------SQL_Engine_Core_Inst 2009-01-02 13:00:20 Slp:存取遭到拒絕 2009-01-02 13:00:20 Slp:對 ConfigRC 及案例 ConfigRC 期間的功能 SQL_Engine_Core_Inst,設定動作失敗。 2009-01-02 13:00:20 Slp: System.componentmodel.description。 Win32Exception:存取遭到拒絕 2009-01-02 13:00:20 Slp:在 (Int32 processId,Int32 Access,布林值 throwIfExited) 2009-01-02 13:00:20 Slp: at) 2009-01-02 13:00:20 Slp: at ProcessManager 2009-01-02 13:00:20 (Int32 Access,Boolean GetProcessHandle Slp: at ( # A7 2009-01-02 13:00:20 Slp: at System.Diagnostics.Process.get_Handle throwIfExited。WaitSqlServerStart (SqlServerServiceBase) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration。StartSqlServer (String [] 參數) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration。SqlEngine StartSQLServerForInstall (String sqlCollation,String masterFullPath,Boolean isConfiguringTemplateDBs) 2009-01-02 13:00:20 Slp: Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.ConfigSQLServerSystemDatabases (EffectiveProperties properties,Boolean isConfiguringTemplateDBs,Boolean useInstallInputs) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.DoCommonDBStartConfig (ConfigActionTiming 時序) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration。SqlEngine SqlEngineDBStartConfig ConfigActionTiming (計時,字典 2 actionData, PublicConfigurationBase spcb) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary 2 actionData,PublicConfigurationBase spcbCurrent) 2009-01-02 13:00:20 slp:于 Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Exe可愛 (ConfigActionScenario 案例,ConfigActionTiming 時序,字典 ' 2 actionData,PublicConfigurationBase spcbCurrent) 2009-01-02 13:00:20 slp: at Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction (String actionId) 2009-01-02 13:00:20 slp 2009-01-02 13:00:20: actionId Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Exe(String errorStream) slp:: system.componentmodel.description。 2009-01-02 13:00:20 Slp:來源:系統。 2009-01-02 13:00:20 Slp:訊息:拒絕存取。

  • 案例 2 : SQL Server 2008 的升級會在規則上報告下列錯誤訊息 Engine_SqlEngineHealthCheck

    規則名稱: Engine_SqlEngineHealthCheck 規則描述:檢查是否可重新開機 SQL Server 服務;或是針對成簇的實例,不論 SQL Server 資源是否線上。 結果:失敗的郵件/糾正動作:無法重新開機 SQL Server 服務;或者,針對叢集實例,SQL Server 資源也不是線上,您可能會在 Detail.txt 檔案 2009-05-27 17:50:20 SQLEngine 中看到如下所示的錯誤訊息:檢查引擎檢查點 ' GetSqlServerProcessHandle_1 ' 2009-05-27 17:50:20 SQLEngine:--SqlServerServiceSCM:等候 nt 事件 ' Global\sqlserverRecComplete $ SQL10 ' 已建立 2009-05-27 17:50:22 SQLEngine:--SqlServerServiceSCM:等候 nt 事件 ' Global\sqlserverRecComplete $ SQL10 ' 或 SQL 進程控制碼為終止 2009-05-27 17:50:22 SQLEngine:--FacetSqlEngineHealthCheck: Engine_SqlEngineHealthCheck:錯誤:拒絕存取

  • Scenario3: 新的 SQL Server 2012 或 SQL Server 2008 R2 安裝失敗

    當您嘗試安裝新的 SQL Server 2012 實例或 SQL Server 2008 R2 時,您會看到下列錯誤訊息:

    規則「安裝帳戶特權」失敗。 執行 SQL Server 安裝程式的帳戶不具備下列一或擁有權力:備份檔案與目錄的許可權,以及管理審核和安全性記錄的許可權,以及偵錯工具的許可權。 若要繼續,請使用具有這兩個許可權的帳戶。

  • 案例 4 :當您為備份目錄位置指定網路共用 (UNC 路徑) 時,安裝 SQL Server 2012 或更新版本的實例會失敗。 發生此問題時,您會收到下列錯誤訊息:

    SQL Server 安裝程式帳戶沒有路徑中指定檔案伺服器的 SeSecurityPrivilege 許可權 <UNC backup location> 。 在 SQL Server 安裝程式的 [資料夾安全性設定] 動作中,需要此特權。 若要授與此許可權,請使用此檔案伺服器上的本機安全性原則主控台,將 SQL Server 安裝帳戶新增至「管理審核和安全性記錄」原則。 在 [本機安全性原則] 主控台的 [本機原則] 底下的「使用者權限指派」區段中,可以使用此設定。

    注意

    發生此問題的原因是,SQL Server 安裝帳戶沒有 SeSecurityPrivilege 主控網路共用的檔案伺服器許可權。

原因

產生此錯誤是系統刻意為之。 除了新增以本機系統管理員身分執行安裝程式的使用者帳戶,安裝程式使用者帳戶需要下列預設使用者權力,安裝程式才會順利完成。

本機原則物件顯示名稱 使用者權利
備份檔案與目錄 SeBackupPrivilege
偵錯工具 SeDebugPrivilege
管理審核和安全性記錄 SeSecurityPrivilege

注意

如需安裝 SQL Server 所需許可權的詳細資訊,請參閱下列 MSDN 文章中的「必要條件」一節:

此外,如果使用 SMB 檔案作為資料目錄或任何其他目錄的儲存選項,而 (使用者資料庫目錄、使用者資料庫記錄目錄、TempDB 目錄、TempDB 記錄目錄或備份目錄) 中,下列 MSDN 文章中所述的安裝帳戶需要下列額外的許可權:安裝具有 SMB 共用儲存區的 SQL Server

SMB 網路共用資料夾 完全控制 SQL 安裝程式帳戶
SMB 網路共用資料夾 完全控制 SQL Server 和 SQL Server 代理程式服務帳戶
SMB SeSecurityPrivilege SQL 安裝程式帳戶

解決方案

若要將許可權新增至本機系統管理員帳戶,請遵循下列步驟:

  1. 以具有管理認證的使用者身分登入電腦。
  2. 依序按一下 [ 開始]、[ 執行],輸入 控制項 Admintools,然後按一下 [確定]
  3. 連按兩下 [ 本機安全性原則]。
  4. 在 [ 本機安全性設定 ] 對話方塊中,按一下 [ 本機原則],按兩下 [ 使用者權限指派],然後按兩下 [ 備份檔案與目錄]。
  5. 在 [ 備份檔案及目錄 內容] 對話方塊中,按一下 [ 新增使用者或群組]。
  6. 在 [ 選取使用者或群組 ] 對話方塊中,輸入要用於安裝程式的使用者帳戶,然後按兩次 [確定]
  7. 針對 原因 區段中所述的其他兩個原則,重複此程式。
  8. 在 [檔案] 功能表上 ,按一下 [ 結束] 以關閉 [本機安全性設定] 對話方塊。

其他相關資訊

  • 若要檢查目前與安裝程式所用帳戶相關聯的許可權清單,您可以使用 AccessChk.exe 工具。 若要下載此工具,請參閱 AccessChk app-v 6.13

    用法: accesschk.exe-a <setup account> *

    例如: c:\tools\accesschk.exe -a testdc\setupaccount *

      Sample output:
             SeSecurityPrivilege
              SeBackupPrivilege
              SeRestorePrivilege
              SeSystemtimePrivilege
              SeShutdownPrivilege
              SeRemoteShutdownPrivilege
              SeTakeOwnershipPrivilege
              SeDebugPrivilege
              SeSystemEnvironmentPrivilege
              SeSystemProfilePrivilege
              SeProfileSingleProcessPrivilege
              SeIncreaseBasePriorityPrivilege
              SeLoadDriverPrivilege
              SeCreatePagefilePrivilege
              SeIncreaseQuotaPrivilege
              SeChangeNotifyPrivilege
              SeUndockPrivilege
              SeManageVolumePrivilege
              SeImpersonatePrivilege
              SeCreateGlobalPrivilege
              SeTimeZonePrivilege
              SeCreateSymbolicLinkPrivilege
              SeInteractiveLogonRight
              SeNetworkLogonRight
              SeBatchLogonRight
              SeRemoteInteractiveLogonRight
    
  • 設定 Windows 服務帳戶和許可權

  • 常見問題集

    • 為何在 UNC 共用上備份目錄的檔案伺服器上需要 SeSecurityPrivilege

      若要在預設備份目錄上取得 ACLs,必須具備此許可權,以確保 SQL Server 服務帳戶具備該資料夾的完整許可權。 這也會設定 ACLs 如果 SQL 服務帳戶的許可權遺失,使其可在目錄上執行備份。 安裝程式會針對預設備份目錄執行這些檢查,如此一來,如果在預設備份 directorypost 上執行備份,使用者就不會遇到錯誤或 (問題,因為您在預設目錄上執行備份時) 的許可權不足。

      注意

      SeSecurityPrivilege 是必須用來變更目錄及子資料夾中之 get/set ACLs。 這是因為即便是具有目錄的「完全控制」許可權的使用者,也不具備取得/設定目錄中的擁有者和審核資訊的許可權。

    • 為什麼案例 4 occuronlyin SQL Server 2012 和更新版本的 SQL Server 中所述的錯誤?

      在 SQL Server 2012 和更新版本中,Microsoft 已開始支援 SMB 檔案共用上的資料和記錄檔。 在此項改進過程中,設定經驗進一步增強,以加強檢查,讓客戶因安裝後的許可權不足而遇到錯誤或問題。 在 SQL 2012 Server 的最新版本中,當 SQL 服務帳戶沒有執行備份的許可權時,使用者仍然可以設定備份目錄的網路共用路徑。 不過,在這種情況下,他們將會在安裝之後發生錯誤。 當您在網路共用上啟動 SQL 2012 安裝程式檢查時,便會立即避免這些案例。