最佳解答者
SQL Agent Job執行Asp網頁,成功執行後,但JOB無法停止

問題
-
各位好
目前設計一個ssis,來執行一個asp網頁(用jmail來寄發逾期通知mail)
裡頭只有一個容器:"執行處理工作"容器
屬性如下:
Executable: C:\Program Files\Internet Explorer\IEXPLORE.EXE
Arguments: http://xxxxx:89/dailymail/dailymail.asp
後續發佈封裝,用JOB執行,也成功有寄發MAIL到各個USER
但MAIL都寄發完後,這個JOB始終於停不下來,一直綠色圓圈轉個不停
我有在該ASP最後,把自己這個Form關掉
response.write "<script language=""javascript"">"
response.write "window.opener=parent;"
response.write "window.close();"
response.write "</script>"
但JOB還是停不下來,不知各位有沒有什麼好方法能解決,謝謝各位
SQL SERVER版本為:
Microsoft SQL Server 2005 - 9.00.3054.00 (X64) Mar 23 2007 18:41:50 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)
解答
-
Hi,
您的SQL Agent如果設定Successvalue=1時, 有沒有報錯?
我這邊再度測試了一下, 我把我測試成功的步驟提供給您參考:
1. 我先設定SSIS package(這邊因為我設定1會報一個錯)2. 我把package放到D槽下, D:\Package.dtsx
3. 設定Job
執行完畢就會自動停止. 您可以試看看.
微軟技術支援中心(CSS) - http://twitter.com/msdn_taiwan- 已提議為解答 Lolota Lee 2009年4月30日 上午 11:17
- 已標示為解答 Lolota Lee 2009年5月4日 上午 02:09
-
Dear Tim,
我昨日也是要使用SSIS來處理資料,而第一個動作就是要以瀏覽器執行一個.asp的程式,一直不知如何處理,後來在網頁上搜尋找到您的這篇文章,讓我知道要使用『執行處理工作』的物件來作。
當然從您的敘述中我也瞭解了要在『執行處理工作』物件的屬性上設定
Executable為指向系統中瀏覽器(ie)的執行檔,如您所示的 C:\Program Files\Internet Explorer\IEXPLORE.EXE
Arguments為指向要去執行網頁asp程式的URL,如您所示的 http://xxxxx:89/dailymail/dailymail.asp
也看到您反應該『執行處理工作』物件執行停不下來的問題,也有朋友幫忙尋找解決之道。
我是個後知後覺者,不過我也花了1hr去嘗試,最後我找到答案解決了。
方法是『執行處理工作』屬性都不需要更動,當然也不須去修改sap程式增加關掉瀏覽器視窗的功能。
我發現SSIS的『執行處理工作』一直停不下來的原因,是開啟瀏覽器(IE)視窗去執行ASP程式,當瀏覽器(IE)視窗未關閉,SSIS就會以為『執行處理工作』未執行完畢,所以就一直運轉不停止,若那時您手動去把瀏覽器(IE)視窗關閉,您就會發現『執行處理工作』物件執行完畢,緊接著去執行後續的控制流程動作了。
就因為如此,我判定若把『執行處理工作』物件的屬性中之WindowStyle設定為Hidden,即可避開開啟與關閉瀏覽器(IE)視窗問題,而asp程式照常進行,並返回SSIS去執行後續的控制流程動作。
當然,我確實如此設定後,在SSIS設計階段的執行一切正常,而封裝完成後部署到Server的SQL Agent 的封裝執行,則仍處於一直在執行而停不下來的情況。
所以,在SERVER那部份,我仍然要再花時間去測試看看。
上述的封裝包含執行ASP程式及其他檔案處理,試過幾次後發現的確在SSIS設計階段是OK的,但部署到Server後執行封裝就停不下來。
今天下午,接著我就嘗試將執行ASP程式的物件獨立在一個封裝內,而其餘的部份放在另一個封裝內。也就是程式分為兩個封裝。
首先在SSIS設計階段分別執行那兩個封裝,結果仍然是OK正常的。
再接著將兩個封裝都部署到SERVER上,然後用SQL Agent安排此兩個封裝步驟,一著執行完成後再執行另一個。
當這個作業設定好了之後,緊接著啟動作業,最後如預期正常執行,一切ok,沒有跑不停的現象發生。
很高興,下午的嘗試把完成後部署的封裝執行問題也解決了。
希望這個回饋能幫上您的忙。- 已提議為解答 steve510373 2009年9月9日 上午 01:58
- 已標示為解答 Lolota Lee 2009年9月9日 上午 02:01
-
Dear Tim Hsu,
今天下午把server端的IE換成6.0版之後(6.0及7.0版皆可,就是不能是8.0版,因為8.0版會出現有視窗關閉警示窗),ASP仍然停不下來。
後來我又把SSIS封裝裡的『連接管理員』檢視了一遍。發現我在其中建了一個『Http連接管理員』,會不會是它在搞鬼,所以我就嘗試把它刪除,再RUN封裝就正常了。
不過我也測過在ASP程式後端,於執行完畢後,加了把IE視窗關閉的程式碼。果然它執行完畢後,就會把IE視窗關閉。不過也測過不加該程式碼,只要如之前我表達將『執行處理工作』物件的屬性中之WindowStyle設定為Hidden,一樣可以正常運作。
所以總結今天測試結果如下:- server 端的IE不可以是IE 8.0,而6.0及7.0則皆可。
- 若ASP程式碼未加關閉視窗程式段,則『執行處理工作』物件的屬性中之WindowStyle設定為Hidden,反之則設為normal即可。
- 其餘的設定維持預設值
FailTaskIfReturnCodeIsNotSuccessValue:True
SuccessValue:0
Timeout:0
TerminateProcessAfterTimeOut:True - SSIS封裝裡的『連接管理員』裡不要加入及設定『Http連接管理員』。
以上測試謹提供大家參考。
- 已提議為解答 steve510373 2009年10月8日 上午 09:11
- 已標示為解答 Lolota Lee 2009年10月9日 上午 01:42
所有回覆
-
Hi,
您的SQL Agent如果設定Successvalue=1時, 有沒有報錯?
我這邊再度測試了一下, 我把我測試成功的步驟提供給您參考:
1. 我先設定SSIS package(這邊因為我設定1會報一個錯)2. 我把package放到D槽下, D:\Package.dtsx
3. 設定Job
執行完畢就會自動停止. 您可以試看看.
微軟技術支援中心(CSS) - http://twitter.com/msdn_taiwan- 已提議為解答 Lolota Lee 2009年4月30日 上午 11:17
- 已標示為解答 Lolota Lee 2009年5月4日 上午 02:09
-
Hi..您好
回報一下剛才的測試結果:
ssis package中,arguments屬性為:http://ptw-tdp-01:89/dailymail/dailymail.asp
而我目前把dailymail.asp簡化如下:
<%
response.Write("ok")
response.write "<script language=""javascript"">"
response.write "window.opener=parent;"
response.write "window.close();"
response.write "</script>"
%>
我把修改後的Package.dtsx,copy到 主機 ptw-tdp-01的E:\ 下
並設定Job去執行該檔(E:\Package.dtsx)
但不論我SuccessValue設1或0,Job都沒停下來(真的很怪)(我有重新啟動Agent服務)
且設定輸出歷程 C:\123.txt,有產生檔案,但內容是空的
您提到設1有沒有報錯,我測試也是沒有
這個錯是只要設1,執行Job時就會自動產生嗎?,還是要有額外的設定或寫code才會產生??
麻煩您了 -
如果設定為1, 123.txt內容是:
Microsoft (R) SQL Server Execute Package Utility
Version 9.00.3042.00 for 64-bit
Copyright (C) Microsoft Corp 1984-2005. All rights reserved.Started: 下午 04:43:45
Error: 2009-04-28 16:43:45.89
Code: 0xC0029151
Source: Execute Process Task Execute Process Task
Description: In Executing "C:\Program Files\Internet Explorer\IEXPLORE.EXE" "http://www.microsoft.com" at "", The process exit code was "0" while the expected was "1".
End Error
DTExec: The package execution returned DTSER_FAILURE (1).
Started: 下午 04:43:45
Finished: 下午 04:43:45
Elapsed: 0.358 seconds
如果是0: (然後執行完畢就會停止)
Microsoft (R) SQL Server Execute Package Utility
Version 9.00.3042.00 for 64-bit
Copyright (C) Microsoft Corp 1984-2005. All rights reserved.Started: 下午 04:45:13
DTExec: The package execution returned DTSER_SUCCESS (0).
Started: 下午 04:45:13
Finished: 下午 04:45:13
Elapsed: 0.359 seconds
Agent的啟動帳號為? 我用sa跟網域帳號都可以.
微軟技術支援中心(CSS) - http://twitter.com/msdn_taiwan -
補充一下,另一台可以停下來的server,輸出的123.txt內容如下
Microsoft (R) SQL Server 執行封裝公用程式
32 位元版本 9.00.3042.00
Copyright (C) Microsoft Corp 1984-2005. All rights reserved.已啟動: 下午 09:10:26
DTExec: 封裝執行傳回 DTSER_SUCCESS (0)。
已啟動: 下午 09:10:26
已完成: 下午 09:10:27
經過時間: 0.578 秒
而不行的server,123.txt是空的,而且去刪除該檔時,檔案是使用中,刪不掉
一定要先把該Job手動停止後,123.txt才可以刪除
看來這個job把這個檔案鎖住了....
真的是很奇怪.>< -
Dear Tim,
我昨日也是要使用SSIS來處理資料,而第一個動作就是要以瀏覽器執行一個.asp的程式,一直不知如何處理,後來在網頁上搜尋找到您的這篇文章,讓我知道要使用『執行處理工作』的物件來作。
當然從您的敘述中我也瞭解了要在『執行處理工作』物件的屬性上設定
Executable為指向系統中瀏覽器(ie)的執行檔,如您所示的 C:\Program Files\Internet Explorer\IEXPLORE.EXE
Arguments為指向要去執行網頁asp程式的URL,如您所示的 http://xxxxx:89/dailymail/dailymail.asp
也看到您反應該『執行處理工作』物件執行停不下來的問題,也有朋友幫忙尋找解決之道。
我是個後知後覺者,不過我也花了1hr去嘗試,最後我找到答案解決了。
方法是『執行處理工作』屬性都不需要更動,當然也不須去修改sap程式增加關掉瀏覽器視窗的功能。
我發現SSIS的『執行處理工作』一直停不下來的原因,是開啟瀏覽器(IE)視窗去執行ASP程式,當瀏覽器(IE)視窗未關閉,SSIS就會以為『執行處理工作』未執行完畢,所以就一直運轉不停止,若那時您手動去把瀏覽器(IE)視窗關閉,您就會發現『執行處理工作』物件執行完畢,緊接著去執行後續的控制流程動作了。
就因為如此,我判定若把『執行處理工作』物件的屬性中之WindowStyle設定為Hidden,即可避開開啟與關閉瀏覽器(IE)視窗問題,而asp程式照常進行,並返回SSIS去執行後續的控制流程動作。
當然,我確實如此設定後,在SSIS設計階段的執行一切正常,而封裝完成後部署到Server的SQL Agent 的封裝執行,則仍處於一直在執行而停不下來的情況。
所以,在SERVER那部份,我仍然要再花時間去測試看看。
上述的封裝包含執行ASP程式及其他檔案處理,試過幾次後發現的確在SSIS設計階段是OK的,但部署到Server後執行封裝就停不下來。
今天下午,接著我就嘗試將執行ASP程式的物件獨立在一個封裝內,而其餘的部份放在另一個封裝內。也就是程式分為兩個封裝。
首先在SSIS設計階段分別執行那兩個封裝,結果仍然是OK正常的。
再接著將兩個封裝都部署到SERVER上,然後用SQL Agent安排此兩個封裝步驟,一著執行完成後再執行另一個。
當這個作業設定好了之後,緊接著啟動作業,最後如預期正常執行,一切ok,沒有跑不停的現象發生。
很高興,下午的嘗試把完成後部署的封裝執行問題也解決了。
希望這個回饋能幫上您的忙。- 已提議為解答 steve510373 2009年9月9日 上午 01:58
- 已標示為解答 Lolota Lee 2009年9月9日 上午 02:01
-
Dear Tim Hsu,
今天回到此網站,看到了您的訊息。
抱歉! 因為我以為解決了,所以就沒再進來這個網站。
您的疑問是我第2個task是執行什麼? 確實我第1個task就是執行某個ASP程式,而第2個task就是接著去作一些SQL資料的轉入及匯出工作而已,也沒什麼特別。
只是當時那支ASP程式停不下來,一直無法去執行後續的一些SQL資料的轉入及匯出工作,所以才試著把第2個task拆開來放在2個封裝內,試試看。
後來經您這一質問,我就又把第2個task合在一起,放在1個封裝內。
這次的新嘗試,我發現不論在SSIS封裝設計徵錯階段,或許是完成後部署到Server的SQL Agent排程執行,也都正常於執行完畢後停止,回覆正常。
因此,謹總結我目前的設定予您參考:
1.把SSIS裡『執行處理工作』物件的屬性中之WindowStyle設定為Hidden,確實可避開於SSIS封裝設計徵錯階段,需手動關閉瀏覽器(IE)視窗,方可繼續後續工作或完成的的問題,故建議您亦如此設定。
2.其餘的設定維持預設值
FailTaskIfReturnCodeIsNotSuccessValue:True
SuccessValue:0
Timeout:0
TerminateProcessAfterTimeOut:True
WindowStyle:Hidden
之前由停不來,到正常結束,說真實的,我也不是很了解,只是試過一些情況後,他正常了。
我想那應該是在Server的問題,所以我會再於Server端多試一下,如果有更好的解決消息,我會再回來討論與分享。
謝謝。 -
Dear Tim Hsu,
下午我就嘗試回想那時我在Server端做了什麼,為什麼那個ASP程式會完成並停下來。
總共我做了2件事,也不知道是否有影響,您參考參考:
1.我在SERVER端設定了允許Active Server Pages的網頁服務
[開始]->[我的電腦]->滑鼠右鍵->[管理]->[服務及應用程式]->[網際網路資訊服務(IIS)管理員]->[網頁服務延伸]->[Active Server Pages]->[允許]
在此設定之前,我的Server已允許了[ASP.NET V2.0.50727]
2.另外我也在Server端以SQL Agent執行了那個包含ASP程式的封裝
[開始]->[所有程式]->[Microsoft SQL Server 2005]->[SQL Serevr Management Studio]->[SQL Server Agent]->[作業]->點選[部署完成的那個封裝]->滑鼠右鍵
->[從下列步驟啟動作業] -
Dear Tim Hsu,
今天下午把server端的IE換成6.0版之後(6.0及7.0版皆可,就是不能是8.0版,因為8.0版會出現有視窗關閉警示窗),ASP仍然停不下來。
後來我又把SSIS封裝裡的『連接管理員』檢視了一遍。發現我在其中建了一個『Http連接管理員』,會不會是它在搞鬼,所以我就嘗試把它刪除,再RUN封裝就正常了。
不過我也測過在ASP程式後端,於執行完畢後,加了把IE視窗關閉的程式碼。果然它執行完畢後,就會把IE視窗關閉。不過也測過不加該程式碼,只要如之前我表達將『執行處理工作』物件的屬性中之WindowStyle設定為Hidden,一樣可以正常運作。
所以總結今天測試結果如下:- server 端的IE不可以是IE 8.0,而6.0及7.0則皆可。
- 若ASP程式碼未加關閉視窗程式段,則『執行處理工作』物件的屬性中之WindowStyle設定為Hidden,反之則設為normal即可。
- 其餘的設定維持預設值
FailTaskIfReturnCodeIsNotSuccessValue:True
SuccessValue:0
Timeout:0
TerminateProcessAfterTimeOut:True - SSIS封裝裡的『連接管理員』裡不要加入及設定『Http連接管理員』。
以上測試謹提供大家參考。
- 已提議為解答 steve510373 2009年10月8日 上午 09:11
- 已標示為解答 Lolota Lee 2009年10月9日 上午 01:42