2010-10-25 136 views
2

我有幾個SQL Server代理作業在我的項目中運行。工作如期完成,沒有問題。如何從java代碼啓動sql server代理作業

但現在我需要能夠從前端開始這些工作(就像點擊按鈕左右)。

我該怎麼辦呢?

這些工作行爲就像一個功能?

回答

1

您可以通過使用sp_startjob PROC

例如叫它

EXEC msdb.dbo.sp_start_job N'MyJobName'; 
+0

我應該使用可調用語句嗎?我正在使用java spring hibernate。欣賞一個示例代碼。 – oceandrive 2010-10-26 17:05:16

3

你可以使用任何DB連接我試過這樣做 - 這裏有幾個例子...

使用CallableStatement:

Connection rConn = //however you get your connection... 
CallableStatement cs = rConn.prepareCall("EXEC dbo.sp_start_job N'your job name'"); 
boolean checkvar = cs.execute(); 

或者,如果您使用jdbc tem板:

jdbcTemp = //however you get your template... 
jdbcTemp.update("EXEC msdb.dbo.sp_start_job N'" + procName + "'"); 

另外,您可能需要調整msdb的權限才能使其工作。您的帳戶需要是系統管理員或具有SQLAgentOperatorRole角色。要在SQL Server Management中進行設置,請轉到數據庫引擎下的安全性,展開登錄名,右鍵單擊要使用的帳戶並選擇屬性。在服務器角色下,您可以授予sysadmin,或在用戶映射檢查msdb下,然後從下面的列表中選擇TargetServersRole和SQLAgentOperatorRole。

hth

+1

有趣的故事 - 昨晚我們的數據庫管理員按照上面所述設置了權限,導致我們的應用程序啓動失敗。我記不起需要的權限,但我記得把它發佈到StackOverflow。在這裏發佈爲我節省了幾個小時,重新查找了正確的權限! – plattitude 2013-03-05 14:51:54