2010年9月18日

SQL Server 2008 Expess 版開始提供 SQL Server Agent 服務?

從 SQL Server 2005 開始,微軟將原本免費提供的 MSDE(有多種說法:Microsoft SQL Server Desktop Engine、Microsoft Data Engine 或 Microsoft Desktop Engine)產品改成 Express 版,由其名稱可猜出,功能上一定會比要錢購買的 SQL Server 缺少某些功能。

比方說,在 SQL Server 中,用來執行排程的管理工作(在 SQL Server 裡稱為「作業」),需要透過 SQL Server Agent 這個服務,以便儲存在  SQL Server msdb 系統資料庫中的作業資訊可依照排程、為了回應特定事件或視需要來執行作業,並記錄事件相關訊息,然後於完成或失敗時通知您。

在預設狀態下,於完成安裝 SQL Server 2005 或更新版本之後,會停用 SQL Server Agent 服務,所以如果您需要使用到排程,請記得選擇要自動啟動該服務。

於裝有 SQL Server 2008 Express 或 SQL Server 2008 R2 Express  的電腦,開啟「SQL Server 組態管理員」(SQL Server Configuration Manager)時,會看到「SQL Server 服務」中,有個狀態已停止啟動模式其他(開機、系統、已停用或未知)SQL Server Agent (SQLEXPRESS)   服務。

SQL Server 組態管理員中的 SQL Server Agent (SQLEXPRESS)  服務

當您手賤嘗試把 SQL Server Agent (SQLEXPRESS)   服務的啟動模式由原本的「已停用」改成「手動」「自動」時,會出現如下的錯誤訊息視窗:

▼ 在 Windows XP 修改 SQL Server 2008 Express 的 SQL Server Agent (SQLEXPRESS) 服務啟動模式,所出現的錯誤訊息
中文:
不支援這個要求。 [0x80070032]
英文:
The request is not supported. [0x80070032]

修改 SQL Server 2008 Express 的 SQL Server Agent (SQLEXPRESS) 服務啟動模式,所出現的錯誤訊息

▼ 在 Windows 7 修改 SQL Server 2008 R2 Express 的 SQL Server Agent (SQLEXPRESS)  服務啟動模式,所出現的錯誤訊息
中文:
遠端程序呼叫失敗。 [0x800706be]
英文:
The remote procedure call failed. [0x800706be]

修改 SQL Server 2008 R2 Express 的 SQL Server Agent (SQLEXPRESS)  服務啟動模式,所出現的錯誤訊息

既然從「SQL Server 組態管理員」無法修改啟動模式,那就改用 Windows 的「服務」來調整啟動模式。接著當然就是啟動該服務,結果如下:

▼ 在 Windows XP 啟動 SQL Server 2008 Express 的 SQL Agent 服務
中文:
在 本機電腦 的SQL Server Agent (SQLEXPRESS) 服務已啟動又停止。有些服務如果無法執行操作的話會自動停止。例如 效能記錄及警示服務。
英文:
The SQL Server Agent (SQLEXPRESS) service on local machine started and then stopped. Some services stop automatically if they have no work to do, for example, the Performance Logs and Alerts service. 

▼ 在 Windows XP 啟動 SQL Server 2008 R2 Express 的 SQL Agent 服務
中文:
在 本機電腦 的 SQL Server Agent (SQLEXPRESS) 服務已啟動又停止。有些服務如果並未由其他服務或程式使用,會自動停止。
英文:
The SQL Server Agent (SQLEXPRESS) service on local machine started and then stopped. Some services stop automatically if they are not in use by other services or programs. 

根據 Connect 網站的錯誤回報 SQL Express RC0 installs SQL Agent Service for no apparent reason 一文指出,因為內部工程師溝通不良,所以才讓 SQL Server 2008 Express 發行時,連同 SQL Server Agent (SQLEXPRESS)  服務一起發行。

事實上,在 MSDN 文件庫「SQL Server Express 功能」的「SQL Server Express 中不支援的 SQL Server 功能」一節中,有提到:不支援 SQL Server Agent 和 SQL Server Agent 服務,所以才會發生上述的錯誤訊息。

▼ 在 SQL Server 2008 R2 Express 安裝目錄中,可以看到啟動 SQL Server Agent (SQLEXPRESS)   服務的程式:SQLAGENT.EXE
啟動 SQL Server Agent (SQLEXPRESS)   服務的程式:SQLAGENT.EXE

如果您真的有需要使用到 SQL Agent  進行排程作業,有下列幾種方式可用:

  1. 使用 Windows 作業系統內建的工作排程器,搭配 T-SQL 指令檔(.sql)跟批次檔。
  2. 於非 SQL Server Express 版本的 SQL Server 中,建立維護計劃,將「連接管理員」設定成連線到 SQL Server Express。
  3. 使用付費軟體:Express Agent
  4. 若您會寫程式,可參考:SQL Agent: A Job Scheduler Framework

0 comment(s) :