Sql-Server

授予對 SQLSERVERAGENT 虛擬帳戶的文件系統訪問權限

  • April 19, 2021

我正在嘗試根據此問題NT Service\SQLSERVERAGENT中的標記答案授予 Windows 帳戶文件系統訪問權限。我相信它是一個虛擬服務帳戶,它沒有顯示在控制面板 -> 使用者帳戶區域。

如何授予此服務帳戶對文件系統的訪問權限?具體來說,在 Windows 7 上。

我已經閱讀了幾種方法,但似乎沒有一種方法適合我。我嘗試了 PowerShell 方法,但 AD 命令不是有效命令。我什至下載並安裝了這些命令所需的 Windows 更新檔。我還讀到我應該能夠通過 SQL Server 配置管理器或 Management Studio 執行此操作。不過,我似乎無法弄清楚在哪裡調整這些權限。

SQL Server 代理程序無法啟動,並顯示以下錯誤消息:

Login failed for user 'NT SERVICE\SQLSERVERAGENT'.  
Reason: Failed to open the explicitly specified database 'msdb'.  
[CLIENT: <local machine>]

根據我的Google搜尋,它與此帳戶的權限有關。

我不確定數據庫是否損壞,但它說數據庫處於正常狀態。SQL Server 代理登錄是sysadminpublic組的一部分。

為了具體回答您的問題,以下是您如何授予內置 SQL Server 代理帳戶的磁碟訪問權限。但請繼續閱讀,因為我回答了我認為真正的問題:

1.> 右鍵點擊您的驅動器,選擇屬性,選擇安全性,點擊添加按鈕並輸入 SQLSERVERAGENT 帳戶(確保您的域未在從該位置文本框中選擇,而是您的電腦名稱):

在此處輸入圖像描述

2.> 點擊檢查名稱按鈕以驗證帳戶是否有效:

在此處輸入圖像描述

3.> 現在,將您需要的文件權限添加到 SQLSERVERAGENT 帳戶。出於故障排除的目的,您可能希望提供完全控制權,然後根據需要將其縮小:

在此處輸入圖像描述

話雖如此,您可能只需要使用 SQL Server 配置管理器重新添加 SQL 代理使用者——根據我看到的有關 msdb 和登錄的評論。與使用 Windows 服務小程序相比,配置管理器對 SQL Server 所做的更改更多——因此配置管理器應始終用於更改任何 SQL 服務。

如果有人更改了 Windows 服務中的帳戶導致服務在啟動時失敗,這將解決問題。您需要在配置管理器中重置它。這樣做允許配置管理器向 SQL Server 添加急需的權限來管理本地服務帳戶 (NT SERVICE\SQLSERVERAGENT) 的 MSDB 數據庫,而在 Windows 服務小程序中更改帳戶則不能。

警告:2000 以上版本的 SQL Server Express 不包括 SQL 代理。它的某些方面似乎存在,但在產品的 Express 版本中無法使用。

首先,打開 SQL Server 配置管理器並點兩下 SQL Server 服務中的 SQL Server 代理服務。選擇內置帳戶單選按鈕並選擇本地服務,然後點擊應用按鈕。重要提示:如果您已經看到選擇了此帳戶,請選擇另一個帳戶並點擊應用按鈕。然後,將其更改回本地服務並點擊應用按鈕以允許配置管理器添加正確的 MSDB 權限以啟動 SQL 代理服務。現在,重新啟動 SQL Server 代理以反映這個新設置。

在此處輸入圖像描述

我通過將 SQL Server 代理登錄帳戶設置為 LocalSystem 解決了這個問題。

引用自:https://dba.stackexchange.com/questions/70069