The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何讓使用中的資料庫中斷所有連線以執行資料庫更新動作

最近有個專案由於需要對資料庫修正設定,必須開啟 SQL Server 2005 的查詢通知(Query Notification)功能,由於開啟查詢通知功能要啟用 Service Broker,而設定時需要中斷所有與該資料庫的連線才能設定成功,我們一般的實務作法是先將資料庫轉為「單人模式」再進行操作,但因為網站並沒有斷線,所以當透過 Management Studio 的 GUI 介面對資料庫切換至單人模式後,這個「單人」卻立即被網站的連線給搶走!

... 繼續閱讀 ...

SQL Server 透過 TCP/IP 遠端連線時如何使用非 1433 埠號

最近客戶提供了一台 SQL Server 2008 的測試機給我們,不過特別的是他們提供的 SQL Server 2008 並非使用預設的 1433 埠號(Port)。一般來說,網路連線到非預設埠號時,都會使用冒號 ( : ) 分隔,不過當我在 SQL Server Management Studio 中輸入 192.xxx.xxx.111:14333 這樣的格式連線時,卻會出現以下錯誤:

... 繼續閱讀 ...

讓 SQL Server 告訴你有哪些索引應該被重建或重組

我去年有一段時間睡覺前都在看 SQL Server 2005 證照的書(MCTS 70-431),從中學到許多資料庫實際運作的技術細節,例如: 索引的結構。當資料庫中的索引碎裂(index fragmentation)程度過高時,索引的效率就會大大降低,為了避免這個問題發生,就必須定時替資料庫健檢(維護資料庫),也就是進行索引重建(rebuild)或索引重組(reorganize)。

... 繼續閱讀 ...

在 SQL Server 中如何成功卸離資料庫

有時後我們為了要將資料庫的資料檔(*.mdf)與紀錄檔(*.ldf)複製出來,會需要先暫時卸離資料庫(Detach Database),因為卸離資料庫需要有資料庫的獨佔存取權,但是不管是在測試機或正式機上,資料庫往往都會因為還有連線存在導致資料庫無法卸離,對於這點我通常有兩種作法。

... 繼續閱讀 ...

SQL Server中秘密的PWDENCRYPT與PWDCOMPARE函數

前幾天有個客戶的網站出問題(不是我們開發的),請我們幫他看,主要的問題是他們的網站會員在進行查詢密碼時,會員收到信的時候在密碼的欄位竟然會出現 System.Binary[] 字樣。而我進去資料庫中查看時,發現該會員資料表中的密碼欄位是 varbinary 格式,而我當然不知道他儲存的是什麼值,進而查看他們資料庫中的 Stored Procedure 對於密碼欄位的操作方法,這才發現他們用來驗證會員是否正確登入的方法是使用 PWDCOMPARE 函數。

... 繼續閱讀 ...

手邊有一張速查表(Cheat Sheets)是件很方便的事

我個人有習慣收集一些網路上別人整理的速查表,因為程式開發的細節真的太多了,要能全部背起來不太可能,也沒什麼意義,甚至於有人說程式設計就是一件查詢、複製、貼上的工作而已。對我來說,寫程式首重觀念與經驗,有了完整而正確的觀念,就算記不得要怎麼寫,查詢一下就馬上能寫了;而有了經驗,對於一些難解的 Bug 自然能夠迅速解開。

... 繼續閱讀 ...

如何變更 SQL Server 預設的資料檔路徑與備份檔路徑

當你安裝好 SQL Server 2005/2008 之後,通常相關檔案的預設安裝路徑都會在 C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL 目錄下,而該目錄下有兩個很重要的目錄,分別是 DATA (資料檔儲存目錄) 與 Backup (備份檔儲存目錄),如果你希望將這些重要檔案儲存在其他磁碟機時,直接透過 SQL Server Management Studio (SSMS) 就可以修改 DATA (資料檔儲存目錄) 的預設路徑,不過卻無法透過 SSMS 修改預設備份檔的路徑。

... 繼續閱讀 ...