The Will Will Web

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

移動服務所需的檔案時應連帶複製完整的 NTFS ACLs 資訊

在幾年前曾經有一次因為擅自移動了 Hyper-V 裡所有的 VM 設定檔與 VHD 虛擬硬碟到另一顆硬碟,結果導致 Hyper-V 無法正常開啟該虛擬機,後來發現原來是檔案的 NTFS 相關資訊沒有複製過去的關係而導致 Hyper-V 的權限不足以致於無法正確開啟 VM 執行。前幾天又遇到了類似的情況,我為了將 SQL Server 完整的系統檔案、紀錄、系統資料庫與使用者資料庫都完整的移至另一台硬碟,這次就知道要小心複製這些檔案,以免又因為權限不足而導致 SQL Server 無法開啟。

... 繼續閱讀 ...

如何找出 SQL Server 2008 資料庫裡是否建立了多餘的索引

講到 SQL Server 2008 效能調校,這可是一門大大的學問,但是若能掌握一些基本的 SQL Server 資料庫運作原理,要能成為 SQL Server 效能調校的專家其實並不困難。我們都知道學習這些原理並不難,看書就會了,難的是如何才能在實務管理工作上真正的融會貫通、靈活運用這些已知的知識,再搭配一些方便的工具幫你快速取得所要的重要資訊,進而做出效能調校的判斷與改善現有資料庫的效能問題。今天我打算來分享一個分析索引使用量統計的技巧,來改善資料庫「寫入」效率的問題。

... 繼續閱讀 ...

如何把 SQL Server 標準版當成 SQL Server Express 來用

大家會不會看到這標題覺得很奇怪,怎麼會有人安裝了 SQL Server 標準版了,還會想拿來當成 SQL Server Express 來用呢?其實真正的需求是這樣的,當我們要設定 SQL Server 連線參數時,在指定 Data Source 的時候會指定伺服器名稱,而有客戶的 ASP.NET 網站竟然把連線參數寫死在程式裡,而且廠商倒閉了以致於沒有原始檔可以修改後重新編譯,當時的資料庫的 Data Source 是採用 (local)\SQLEXPRESS 為伺服器名稱,現在的卻重新安裝了 SQL Server 標準版,所以根本連不上伺服器,這時學會這個技巧就很重要了。

... 繼續閱讀 ...

如何清除 Management Studio 登入時的伺服器名稱歷史清單

我的 SQL Server Management Studio 已經使用了非常久了,由於工作上經常要連接到不同的資料庫執行個體,所以每次開啟 Management Studio 實在伺服器名稱那邊的歷史清單項目就非常多,數量多倒還沒關係,重點是這些清單裡已經有許多資料庫由於電腦名稱變更過已經連不到了,而且還沒提供介面可清空或管理這些歷史連線清單(MRU List),我花了時間研究終於找到清空這些歷史清單的方式。

... 繼續閱讀 ...

如何在 SQL Server 資料庫設計「一對一」表格關聯

我們在做資料庫設計時,通常都會需要設計表格之間的關聯,不過一般來說都是設定一對多的表格關聯,如果是多對多的表格關聯通常都會多設計一張表格來儲存兩個表格之間多對多的關聯關係。但是如果我們今天單純的只是想設計一些擴充欄位到另一個獨立的表格裡,這時我們在 SQL Server 裡還需要設計關聯嗎?還是在程式中自己知道就好不需要設計關聯呢?其實是需要的,只是很少人知道可以這樣設計而已!

... 繼續閱讀 ...

將 SQLEXPRESS 從 SQL 2005 升級 SQL 2008 的注意事項

像我從 Visual Studio 2008、Visual Studio 2008 SP1、Visual Studio 2010 一直到現在的 Visual Studio 2010 SP1 一路升級上來,在眾多開發工具與開發環境裡有個軟體的版本一直不會變,那就是開發工具內建的 SQLEXPRESS 執行個體,如果你一開始安裝了Visual Studio 2008 就會預設先安裝好 SQL Server 2005 Express Edition 進去,之後升級 Visual Studio 並不會連帶升級 SQLEXPRESS 執行個體的版本,若你單純的想移除 SQLEXPRESS 後改裝新版會引發一些不必要的錯誤,這裡我整理了些問題與注意事項供各位參考。

... 繼續閱讀 ...

Entity Framework 如何呼叫 SQL 裡沒有回傳參數的預儲程序

其實早在 Entity Framework 4.0 之前就已經提供了從 ObjectContext 呼叫 預儲程序 (Stored Procedure) 的能力,不過早期的 Entity Framework V2 版本支援度不夠,以致於只要是這個預儲程序的回傳值的型別不是 實體 (Entity) 的話,就會無法直接從 ObjectContext 進行叫用,這個架構上的問題直到 V4 這個版本才正式解決,以下就是從 Entity Framework 呼叫預儲程序的方法。

... 繼續閱讀 ...

SQL Server 如果本機管理者與 sa 帳戶都無法登入怎麼辦?

前天公司的開發用資料庫主機的硬碟異常,為了拯救資料所以我把整個資料庫主機重灌了,安裝好之後意外的把資料庫裡的本機管理者登入權限移除 (BUILTIN\Administrators),隔天公司其他人由於原本的帳號都登入不了,因此改用 sa 嘗試登入 (重灌後密碼變了),結果卻嘗試到連 sa 帳戶都被鎖定,你說我該怎樣解決呢?^^

... 繼續閱讀 ...