All posts tagged 'sql server' | The Will Will Web

The Will Will Web

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

讓 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 修改預設備份檔的路徑。

... 繼續閱讀 ...

SQL Server 與 Oracle 各種版本比較、功能比較、特性比較

我在工作上偶爾會需要整理各資料庫與資料庫各版本的比較表給客戶看,讓客戶瞭解而各種資料庫或資料庫各版本間的差異、價格、功能、...等。不過 SQL Server 2008 卻讓我花了好些時間才收集完相關的比較資訊,埋藏在 MSDN 裡面,且還分了好幾篇文章。我覺得納悶的是:為什麼這些比較資訊不整理放在 SQL Server 2008 產品官網中呢?!

... 繼續閱讀 ...

解決【規劃的新資料庫擁有者已經是資料庫的使用者】問題

之前我有寫過一篇開發 ASP.NET 使用 SQL Server 2000 要注意權限是否足夠,但同樣的問題今天又有同事遇到了,不過當我要將該使用者設定為該資料庫的擁有者時,SQL 2000 卻回應我「規劃的新資料庫擁有者已經是資料庫的使用者」錯誤訊息,不過用這段訊息去搜尋什麼也找不到,通常我都將特定的關鍵字翻譯成英文後再去查詢就會查到了,而這段話的英文其實是 "The proposed new database owner is already a user in the database",當然,我也因此找到了解答。

... 繼續閱讀 ...

更新 SQL 2005 SP2 之後發現 SQLExpress 無法啟動的情況

由於我的電腦十分特殊,安裝了 SQLEXPRESS 資料庫 + SQL Server 2005 標準版的 Tools,可能是因為這樣導致我最近的 Windows Update 出現的 SQL Server 2005 SP2 的更新項目,但更新了好幾次,每次都失敗,最後所幸就不更新了。不過,今天卻發現我有一個專案跑不起來,這個專案用的資料庫是放在 App_Data 底下的,也就是用 User Instance 的方式啟動資料庫,啟動 User Instance 的先決條件是本機的 SQLEXPRESS 資料庫必須啟動,這時才發現我的 SQLEXPRESS 資料庫啟動不了。

... 繼續閱讀 ...