The Will Will Web

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

如何利用「資料庫發行精靈」將新版 SQL 資料庫降級成舊版

不知道各位有沒有遇過一種狀況,那就是原本 SQL Server 2005 的資料庫,將資料庫卸離 (Detach) 後丟進新版的 SQL Server 版本掛載 ( 例如 SQL 2008 或 SQL 2008 R2 ),然後突然間有同事說他的資料庫是舊版的,而你怎樣都再也無法將資料庫卸離後掛載到舊版的 SQL Server 了?!這問題似乎不是很多人知道怎樣處理,今天特別撰文說明整個轉移資料庫的流程,而且此功能已經內建於 Visual Studio 2010 之中,使用上非常方便,只是若沒人提起這功能,自己要找到這功能還真有點困難。^^

... 繼續閱讀 ...

如何在 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 帳戶都被鎖定,你說我該怎樣解決呢?^^

... 繼續閱讀 ...

伺服器被 sysprep 一般化後導致 SQLAgent 無法啟動的問題

昨天試著準備一台含有 SQL Server 的 VHD 基礎磁碟,在主機與資料庫都安裝設定好且都測試無誤後使用 sysprep 一般化處理過,試圖準備出一個非常乾淨且內含 SQL Server 的基礎磁碟,不過在開機完並設定伺服器基本參數後發現了我的 SQL Server 2005 的 SQL Server Agent 服務無法啟動,花了些時間才釐清問題,因此留下筆記。

... 繼續閱讀 ...

資料庫專案無法寫入目標資料庫時的解法 (調整欄位大小時)

Visual Studio 2010 Premium 企業版 資料庫專案 功能在進行 結構描述比較 (Schema Compare) 時,當你的來源資料庫特定表格某個欄位的欄位大小變更時(變小)可能會引發「無法成功更新目標結構描述。如需詳細資訊,請參閱 [錯誤清單] 視窗。」的錯誤(The target schema could not be updated successfully. For more information, see the Error List window.),此時就必須用今天的方法來解決。

... 繼續閱讀 ...

DBCC CHECKTABLE 無法檢查表格名稱中有小數點的情況

在我們代管眾多客戶的 SQL Server 資料庫中其中有個客戶的資料庫非常特殊,他們的資料表命名都會有小數點在內,例如:[dbo].[Order.Profile],至於為什麼這樣命名已經不可考 (我猜是為了讓表格在 Management Studio 裡排序的比較整齊吧?!),這樣的設計在開發上的確沒有什麼問題,只要適切的加上中括弧 ( [xxxx] ) 即可,但是在管理面來說,就不是那樣可愛了,像我昨天為了要執行 DBCC CHECKTABLE 來檢查資料表時就試了好久無法成功,直到詢問微軟技術支援中心才得到解答。

... 繼續閱讀 ...

VPN 連線後 SQL Server 發生「無法產生 SSPI 內容」錯誤

由於開發人員的電腦環境都比複雜的,像我們公司內部就有架設 AD ( Active Directory ) 而登入到客戶的 VPN 環境下也有自己的 AD,像我之前寫過的【主機於 AD 環境下設定 VPN 時需注意 DNS 設定是否正確】文章就是因為撥接上 VPN 之後所發生的問題,原本以為問題就這樣解決,但是事實並非如此,當我撥接上 VPN 之後若要再用 Windows 驗證的方式連接公司內部 SQL Server 時,卻會發生【 無法產生 SSPI 內容。 (Microsoft SQL Server) 】的錯誤,直到剛剛才找到解決之道。

... 繼續閱讀 ...