2008年6月11日 星期三

SQL Server 與SQL Agent 服務啟動帳號

最小權限原則

SQL Server 2005
1.針對SQL Server與SQL Agent分別新增Windows Local Account或在AD上新增AD User Account

2.使用SQL Server Configuration Manager修改SQL Server與SQL Agent的啟動服務帳號,
讓系統自動給與服務帳號應有的權限

3.針對備份用的特定目錄給予服務啟動帳號Full Control權限

SQL Server 2000
1.新增一個Windows Local user Account或在AD上新增一個AD User Account
例如:SQLServer

2.使用Enterprise Manager修改SQL Server與SQL Agent的啟動服務帳號,
讓系統自動給與服務帳號應有的權限,ex:將啟動帳號加入SQL Server的sysadmin角色

注意1:若SQL Server服務與SQL Agent服務是用不同帳號會造成SQL Agent的Job工作發生問題,則要需依照以下KB解決錯誤22022問題

Microsoft SQL-DMO (ODBC SQL狀態: 42000)
錯誤 22022: SQLServerAgent 目前不在執行中,因此無法通知它這個動作。
You may receive an "Error 22022: SQLServerAgent is not currently running so it cannot be notified of this action" error message when you run a SQL Server Agent job in SQL Server 2000
http://support.microsoft.com/kb/911841/en-us

但只要再用SQL Server Enterprise Manager修改了SQL Server啟動帳戶後,即便你輸入了"computerName\MyServiceAccount",但最後還是會改回".\MyServiceAccount"
則必須要再去修改一次機碼

The SQL Server service and the SQL Server Agent Service fail to start on a stand-alone server
http://support.microsoft.com/kb/307288/en-us

注意2:若設定SQL Server服務帳號為Local user account,SQL Agent服務帳號為LocalSystem,同樣會造成Job工作發生問題
Microsoft SQL-DMO (ODBC SQL狀態: 42000)
錯誤 22022: SQLServerAgent 目前不在執行中,因此無法通知它這個動作。

若是又依照已下KB911841設定會遇到KB307288問題,必須修改回都用LocalSystem或都用相同的Winodw Account


3.針對備份用的特定目錄給予服務啟動帳號Full Control權限

SQL Server 2000 有以下幾種狀況
狀況1只設定SQL Agent 啟動帳號為Local user account或Domain user account
SQL Server服務帳號:LocalSystem
SQL Agent服務帳號:Local user account或Domain user account
SQL Server可以運作,Job以Local user account登入SQL Server系統,由於Local user account是SQL sysadmin伺服器角色所以擁有SQL Server系統管理員權限

狀況2只設定SQL Server啟動帳號為Local user account或Domain user account
SQL Server服務帳號:Local user account或Domain user account
SQL Agent服務帳號:LocalSystem
可正常起動,SQL Server可以運作,但Job無法執行,執行時會發生錯誤

狀況3設定SQL Server與SQL Agent啟動帳號都為Local user account或Domain user account
此為最建議的最小權限設定:
SQL Server服務帳號:Local user account或Domain user account
SQL Agent服務帳號:Local user account或Domain user account

若SQL Server與SQL Agent設定為不同帳號
可正常起動,SQL Server可以運作,但Job無法執行,執行時會發生錯誤

若SQL Server與SQL Agent設定為相同帳號
可正常起動,SQL Server與SQL Agent都可以運作,且SQL Agent所執行的Job會以啟動帳號登入SQLServer,由於啟動帳號是SQL sysadmin伺服器角色所以擁有SQL Server系統管理員權限

沒有留言: