2009年8月15日 星期六

取得DTS的屬性值與全域變數

因為之前設計了一個DTS定期撈取執行失敗的工作排程,然後會寄送mail通知相關負責人,頂多附上歷程紀錄的相關資訊,有時資訊一多,根本看不出來錯在哪裡,雖然封裝屬性裡可以設定錯誤紀錄檔,但是我不知怎麼取得相關資訊,我在資料庫裡找了好久都找不到,經過一段時間尋找,終於讓我發現啦,原來用VB Script可以取得該封裝的相關資訊啊,分享給各位囉

2009年8月5日 星期三

msxml3.dll 錯誤 '800c000e'

最近同事反應他的ASP程式執行出錯,錯誤訊息如下,之前是正常的說
msxml3.dll 錯誤 '800c000e'
發生安全性問題。

程式碼簡略如下
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")

objXMLHTTP.Open "GET", URL, flase
objXMLHTTP.setRequestHeader "Content-Type", "text/html"
objXMLHTTP.setRequestHeader "charset", "big5"
objXMLHTTP.send 

剛好最近系統移轉,想說會不會是msxml3.dll沒裝,查了一下在 %windir%\system32下是有的,
再用regsvr32重新註冊一下好了,
結果錯誤還是一樣,難道要設安全性嗎?我倒是沒設過
,想說去下載msxml3重裝,結果錯誤還是一樣,真是見鬼

忽然想起該不會是找不到Microsoft.XMLHTTP吧,
因為CreateObject函數會先檢查註冊表HKEY_CLASSES_ROOT\Microsoft.XMLHTTP 下的子鍵,
一查果然HKEY_CLASSES_ROOT下沒有Microsoft.XMLHTTP囉,
那反查一下msxml3.dll在HKEY_CLASSES_ROOTHKEY_CLASSES_ROOT\CLSID下的哪個機碼是跟XMLHTTP有關的,
結果在HKEY_CLASSES_ROOT\CLSID\{AFB40FFD-B609-40A3-9828-F88BBE11E4E3}下發現Server XML HTTP 3.0囉,
再用這個CLSID追查下去,最後就查到HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.3.0

可見是設錯啦

解決辦法
Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
換成
Set objXMLHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")