發表文章

目前顯示的是 1月, 2011的文章

Windows系統路徑及C#存取方式

圖片
在Windows系統中有許多常用的路徑,但是Program Files或System32等等。這些路徑其實Windows系統本身有提供 路徑環境變數 ,可在命令列視窗中使用。 在C#中也可以利用 Environment這個類別 來存取及轉換這些特別的路徑。 還有介紹如何 在PowerShell中取得這些特別路徑 的方式。

在用DatabaseMail寄送郵件時,如何在內容加入斷行字元

可以用 set @MailBody = 'xxxx' + char(13) + char(10) + 'yyyy' 的方式。 如果是用 set @MailBody = 'xxx' + '\r\n' 是不行的。

用PowerShell監控磁碟空間

在伺服器上經常會執行一些程式,這些程式或多或少都會需要將一些執行的過程記錄在log檔中。如果沒有定期去清除這些log檔的話,時間一久伺服器上的磁碟空間就會被用光。 不過,因為是伺服器上的自動排程程式,所以一般人一旦設定好就不再會去管理。久而久之可能就在某一天發生磁碟空間不足,造成程式無法執行的問題。 我想要監控伺服器的磁碟空間的應用程式應該是不少,不過最好的方式當然是能用Windows Server本身內建的功能是最好。 最近微軟提供了PowerShell的指令集工具。這個工具有很多的伺服器管理功能。當然也可以用來監控磁碟空間了。找了一下網路上,果然有人在分享已寫好的 用PowerShell監控磁碟空間的程式碼 。 即然有現成的當然就拿來改一下使用看看囉。 要執行的話,需要在PowerShell的命令列視窗中輸入 .\ 。要加個「.\」。不然,直接打檔名是無法執行的。 如果第一次執行有問題的話,應該也是 安全性的問題 。就要先執行以下的指令: Set-ExecutionPolicy RemoteSigned 如果你的WinServer 2008找不到PowerShell,是因為預設上是沒安裝的,請自行 由伺服器管理員安裝PowerShell 。 如果直接用命令列執行PowerShell指令檔,而不用先進入PowerShell的方式如下: powershell -command "& './CheckQuota.ps1'" 原本的版本中只能寄警告信通知一位管理員,後來我修改了一下,可以讀取一份清單,以便將警告訊息傳給多位管理員。程式碼如下: $computers=(Get-Content CheckComputerList.txt) #單位是MB $WARING='5000000000' $SMTP='email.polaris.com.tw' $TO='justin_Lin@polaris.com.tw;justin1021@gmail.com' $FROM='FMSQLAdmin@polaris.com.tw' $MonitorList=(Get-Content MonitorManager.txt) for

mantisbt session 儲存失敗

圖片
最近安裝了臭蟲追蹤系統。一開始的使用都還正常,但沒多久在執行登入時,就出現以下的警告訊息。看來應該是指定用來儲存PHP Session資訊的路徑有問題。 要修正這個問題,就是要去修改PHP伺服器上的設定檔,將session.save_path的參數指定到正確的位置,再重啟Apache就好了。 session.save_path = "C:\AppServ\php5\SessionDB"

解決SQL2008無法用ManagementStudio遠端登入的問題

圖片
最近在一台裝有Windows Server 2008 R2(x64)的伺服器上安裝了SQL 2008。安裝完後,在那台服器上使用ManagementStudio都一切正常。可是當我要用我的PC上的ManagementStudio來遠端登入時,就發生錯誤。 後來才知道 是防火牆的問題,要設定TCP/UPD port 。基本上只要設定好開啟所需的Port就可以正常地連線了。以下是如何在Win Server 2008 R2(x64)中設定防火牆的Port的方式。 以下是正常的連接方式: 但在未開啟防火牆時,就會發生無法連上資料庫伺服器的錯誤。

ReportingService 資料集(DataSet)重新整理時發生錯誤

圖片
最近在修改某份用ReportingService開發出來的報表時,發現有一個原本就有的資料集中,它使用的是呼叫預存程序來產生查詢結果的方式。我們針對這個預存程序修改了內容,並在資料集上按下「重新整理」後,它會出現一個如下的錯誤訊息。說 「無法產生查詢的欄位清單。請檢查查詢語法,或按一下查詢工具列上的 [重新整理欄位]。」 的。可是我們報表的參數都是正確的,而且原本也都是可以正常列印的。 後來發現,當出現這個訊息時,先不用理會它。再到資料集上按下「執行」(如下圖),並輸入正確的查詢參數,先執行一次正常的查詢後,再去重新按「重新整理」這次就一切都正常了。

執行緒的生命週期

圖片
使用執行緒方式開發程也有好一段時間了,最近才發現原來執行緒的生命週期也是一門學問。 在網路上正好看到 這張圖 ,就先保留下來作為參考囉。

Android手機跟GMail通訊錄的同步

最近發現有些我在Android手機上說定的通訊錄群組,它不會自動地同步到GMail的通訊錄中,只是好像第一次時會進行同步,但之後就完全不同步了。在GMail通訊錄中,也無法針對這些由Android手機同步上來的群組進行改名或刪除。 不過,在GMail上新增的群組設定,都可以正常地同步到Android手機中。所以最好的作法就是完全由GMail來編輯群組設定囉。

MS Server 2008 工作排程備份方式

一般來說在公司裏或多或少都會使用到伺服器,而且在伺服器上也會排定許多排程作業來執行。這些作業一旦排好,就會每日按時執行,久而久之大家就習以為常了。 不過,萬一伺服器掛了,整個作業系統要重灌時,那這些排程也得要一個個地重新人工建立。花時間還好(如果不急的話),但時間久了,誰還記得有哪些排程,要執行什麼,以及排程的時間是排在幾點呢? 有人會說,那就建立好一份文件啊。到時就一個個地建立就好。不過,文件最怕的就是沒有同步更新。到時要重建系統時,怕的是建好的不是當下最新的排程作業。 如果能將這些排程作業直接匯出保存,有需要時,再手動匯入的話,那就比較方便了。幸好MS Server 2008有支援將排程作業手動匯出的功能。只要定時去匯出就好了。 但是最好的方式還是說可以再設定另一個排程,自動地將目前的所有排程作業定期匯出並保存下來,這樣就更完美了。要達到這樣的目的就必須先查一下看是否有支援 將排程作業用指令檔的方式來匯出 的功能了。查了一下MSDN,還真的有這項功能耶。 可以用以下的指令來備份排程工作: schtasks /Query /XML > backup.xml 只是目前只能將所有作業匯出成一份xml檔,要還原時,還得一個個作業切開另存成一份獨立的xml檔來重新匯入。這點,就看有沒有空再來想辦法解決了。

MSSQL資料表欄位無法輸入某些中文字

圖片
最近同事發現在某個資料表的欄位上要輸入一個中文字「彣」時,輸入後都會顯示成「?」。有某些特定的中文字就是無法加入到這個欄位上。 後來我看了一下,發現這個欄位的型別是varchar,我想應該要改成nvarchar才能支援多國語言。後來改成nvarchar後,果然可以直接去修改資料表這個欄位的內容,直接輸入「彣」了。 不過,後來查了一下網路上的資料,發現在下SQL指令時,要能正確地輸入這種特殊字元的話,除了資料表的欄位必須設定成nvarchar外,還 必須在SQL指令上加上N'' ,例如: -- 在SQL指令上都加上N'' Insert TestIME VALUES( N'小彣',N'小彣') 以下是我的一些簡單的測試,發現就算是針對一些設定成varchar的欄位,也可以加上N'',不會有問題的。所以未來應該是只要是要設定字串的話,就是多加一個N''囉。 測試用資料表設計如下。一個欄位用nvarchar,另一個用varchar。 測試的語法如下: -- 測試在輸入時不加N INSERT TestIME VALUES( '小彣', '小彣') -- 測試在輸入時都加上N INSERT TestIME VALUES( N'小彣', N'小彣') -- 測試針對一般字完都加上N INSERT TestIME VALUES( N'小明', N'小明') select * FROM TestIME 執行後的結果如下: