Sql-Server

作業不是作為代理執行,而是作為引擎帳戶執行

  • March 23, 2017

我最近創建了一個新的 SQL Server 環境,並嘗試盡可能使用最佳實踐,尤其是特權最少的方法。我們環境中的其他伺服器只執行使用域管理員權限和 SA 權限組合的作業,這“更簡單”且令人恐懼。

除此之外,我讓數據庫引擎使用域帳戶DOMAIN\sqlengine執行,代理使用DOMAIN\sqlagent.

我有一個簡單的維護計劃,將伺服器上的所有數據庫完整備份到遠端 UNC 路徑。我曾假設/計劃代理帳戶 ( DOMAIN\sqlagent) 將執行計劃的作業。作業因作業系統驅動的訪問被拒絕錯誤而失敗。因此,我將DOMAIN\sqlagent帳戶修改權限添加到目錄中,以便它可以執行備份。令我驚訝的是,它又失敗了。當我檢查目標伺服器的安全日誌時,我看到這DOMAIN\sqlengine是帳戶身份驗證。該帳戶沒有獲得 UNC 路徑的權限。為什麼是引擎帳戶而不是代理帳戶執行作業?

如果我查看我DOMAIN\sqlagent為該維護計劃中的所有工作設置的工作所有者。在作業步驟下,它被設置為作為“SQL Server 代理服務帳戶”執行。

我做錯了什麼或不理解?

SQL Server 本身正在執行備份;因此該DOMAIN\sqlengine帳戶需要訪問共享。

SQL Server 代理只是開始工作。

BACKUP DATABASE [xyz] TO ...這與使用 T-SQL命令啟動備份完全相同。SQL Server 仍需要訪問目標路徑。您仍然可以鎖定目標路徑,並且應該這樣做,以防止未經授權訪問儲存在備份文件中的數據。

此外,我建議不要使用維護計劃來執行維護,而是使用Ola Hallengren 的腳本;它們非常出色,得到很好的支持並且被廣泛使用。

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