2009年11月10日 星期二

如何用sp_executesql將Select的值輸出

剛好要動態組出Select陳述式,欄位是會變的那種,若不需把Select出的值輸出到一個變數,其實可直接用exec(@cmd)就好,但是若需要輸出就得用sp_executesql了,可是一直試都失敗,輸出的值都是Null,然後SQL Server線上說明又沒提什特殊設定,好在網路很方便,原來只要在sp_executesql的第二個與第三個參數那加上out就行了,下面是一個簡例,分享給剛好不知道的人

2009年10月9日 星期五

DTS的owner與owner_sid不一致的問題

最近同事反應SQL 2000的某個DTS無法儲存,會出現"Only the owner of DTS Package or a member of the sysadmin role may create new versions of it."的錯誤,意思就是只有此DTS的擁有者或是系統管理員的身分才能建立新的版本,目前那個DTS的owner不是他,那我改掉應該就行

上網查了一下發現可以用sp_reassign_dtspackageowner [@name =] 'name',[@id =] 'id',[@newloginname =] 'newloginname'來改變DTS的owner

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")

2009年7月3日 星期五

啟用IIS6隔離模式對CDO.Message的影響

因為不明的原因造成IIS6常常重啟,不得已只好開啟隔離模式(用 IIS 5.0 隔離模式執行 WWW 服務),結果奇怪的事發生了,原本ASP可以發送mail的,突然不能發送,還有錯誤訊息,把隔離模式取消,就可以發送了,很怪吧(CDONTS也一樣,可參考我另一篇)

程式如下


Set objEmail = CreateObject("CDO.Message")
objEmail.From = "寄件者"
objEmail.To = "收件者"
objEmail.Subject = "CDO.Message test"
objEmail.Textbody = "test"
objEmail.Send
Response.write "使用CDO.Message發信成功"

錯誤訊息


CDO.Message.1 錯誤 '80040220'
"SendUsing" (?C°e‥I¥I) 3]cw-EμLRA!C
/mis331.asp, 列8
解決辦法

objEmail.Send 前,加入下列四行即可
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
"localhost"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update

2009年7月2日 星期四

啟用IIS6隔離模式對CDONTS.NewMail的影響

先說win2003預設已不支援CDONTS.NewMail了,建議是用CDO.Message囉,但若還是堅持要用,請自行從別台機器拷貝cdonts.dll然後再註冊就可使用!

因為不明的原因造成IIS6常常重啟,不得已只好開啟隔離模式(用 IIS 5.0 隔離模式執行 WWW 服務),結果奇怪的事發生了,原本ASP可以發送mail的,突然不能發送,還有錯誤訊息,把隔離模式取消,就可以發送了,很怪吧 (CDO.Message也是,可參考)

程式如下
Set objEmail = CreateObject("CDONTS.NewMail")
objEmail.From = "寄件者"
objEmail.To = "收件者"
objEmail.Subject = "CDONTS.NewMail test"
objEmail.body = "test"
objEmail.Send
Response.write "使用CDONTS.NewMail發信成功"

錯誤訊息如下

Microsoft VBScript 執行階段錯誤 錯誤 '800a0046'
沒有使用權限
/mis33.asp, 列8

解決辦法

在IIS管理員的SMTP按右鍵選內容
在安全性頁籤新增下列兩各的權限就OK
IUSR_電腦名稱
IWAM _電腦名稱

2009年6月29日 星期一

BitComet黃燈阻塞的解決辦法

1.先確定選項裡有監聽Port,打開防火牆,及映射囉


2. 再確認防毒軟體有沒有檔BitComet,有的會檔,自己去檢查一下,我自己用小紅傘是沒檔啦

3.重點來囉,如果確認過前兩步驟還是沒變綠燈的話,我猜你的情況應該與我相同,就是有用IP分享器的關係,只要設定一下虛擬伺服器就ok啦,記得內外部的Port要跟BitComet裡監聽Port一樣的就行啦


4. 重開BitComet就變綠燈