最近一個多月,甚是悠哉,無事可做。上線的網站系統也沒接到客戶的回報,反而覺得無聊之極了。上周五早上,一上QQ,就收到客戶發來消息,管理平台無法登陸了。心裡一驚,立馬開始查找故障原因。翻看了系統日志,提示資料庫連接配接逾時(見下圖)。

打開vs,運作程式,同樣報錯,資料庫連接配接逾時。找到報錯位置的SQL語句,隻是很簡單的一條查詢語句。連接配接字元串也沒有問題,怎麼會報錯呢?百思不得其解,于是乎,打算到查詢分析器執行一下這條SQL語句,看看結果如何。接着,出現了下面的情況。
搜迪斯内,原來是Sql Server 2008過期了!一般我們會安裝開發版或者企業版的試用版Sql Server 2008,試用期是180天。通常的做法是,去百度搜一個密鑰,運作Sql Server 2008的安裝程式,選擇版本更新,下面的步驟和全新安裝一樣,輸入企業版或者開發版密鑰即可。就在這個問題出現的前幾天,我本機上的Sql Server 2008也過期了,我就是通過輸入企業版密鑰版本更新解決的。
Sql Server 2008安裝密鑰
開發版(Developer): PTTFM-X467G-P7RH2-3Q6CG-4DMYB
企業版(Enterprise): JD8Y6-HQG69-P9H84-XDTPG-34MBB
一般來說,這些步驟完成之後,Sql Server 2008就可以繼續使用了。 我在更新過程中也沒遇到什麼問題,順利更新完成。然而,當我再次打開Sql Server Management Studio的時候,還是提示版本過期。沒遇過這種情況,隻好百度解決辦法。看到網上有一種方案是,第一次正常更新,然後打開系統資料庫,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft
SQL Server\100\ConfigurationState,把鍵值CommonFiles的值改成3,然後再次重複一次更新,更新時選擇隻更新共享元件即可。于是,我立馬打開系統資料庫修改了鍵值,然後開始再次進行更新,結果安裝過程報錯,報錯資訊“無法生成臨時類(result=1)。error
CS1567:生成Win32資源出錯:另一個程式正在使用此檔案,程序無法通路。”(見下圖)。懷疑可能是伺服器上安裝的安全狗導緻的,于是乎直接解除安裝了,終于不報這個錯誤了。這裡可能是因為安全防護軟體的安全政策禁止了在系統敏感目錄下建立檔案導緻的。倘若遇到類似無法建立檔案的權限錯誤,請關閉安全防火軟體或關閉系統防火牆。
然而,這個問題解決之後又出現了其他的奇怪錯誤資訊“參數錯誤。”(見下圖)。不管怎麼樣都不行,就連修複程式也沒法進行下去。
這裡補充一下安裝中可能遇到情況,例如下圖這種錯誤提示:由于登陸失敗而無法啟動服務。這是因為更新的執行個體MSSQLSERVER主服務沒有啟動導緻的。我這裡無法啟動的原因是,登陸身份賬号登陸失敗,導緻服務啟動。這是由于安全狗的賬号保護禁用了服務登陸所使用的賬号,這個賬号是在Sql Server安裝時自動建立的,建議禁用掉,使用本地系統賬号登陸即可。
不論是更新Sql Server還是修複Sql Server預設執行個體MSSQLSERVER,皆以失敗告終。隻好尋求其他解決辦法:安裝免費授權的Express Edition(學習版)。在微軟中國網站查詢一下各版本的授權情況:http://www.microsoft.com/china/sql/2008/howtobuy/(如下圖)。
接着,在微軟中國官網下載下傳了Sql Server 2008 Express(如下圖),進行安裝,安裝執行個體名為SQLEXPRESS。安裝過程,一切正常。
但是,問題又來了。打開Sql Sserver Management Studio時,依舊提醒版本過期。為什麼會這樣呢?因為MSSQLSERVER和SQLEXPRESS兩個執行個體是共享的同一個SSMS。接着嘗試單獨下載下傳Express的SSMS進行安裝,如下圖。
安裝過程和安裝新執行個體SQLEXPRESS是差不多,安裝時選擇向執行個體SQLEXPRESS中添加功能(如下圖)。
安裝完成,悲劇依舊,在程式清單裡面已經找不到執行個體SQLEXPRESS的獨立SSMS,看來這個SSMS還是和執行個體MSSQLSERVER共享的。這意味着無法在伺服器上打開查詢分析器了。于是乎,嘗試在本機上遠端登入資料庫。盡管版本已經過期,但是遠端登陸執行個體MSSQLSERVER成功。這裡思考:雖然伺服器無法打開SSMS,但是本機可以遠端登入,隻需要把執行個體MSSQLSERVER的資料庫導入到執行個體SQLEXPRESS即可。通過IP/執行個體名,即IP/SQLEXPRESS,使用安裝時設定的sa賬号登陸。悲劇的,登陸失敗,而且是大家都很眼熟的40錯誤(見下圖)。
通過檢視配置管理器發現,執行個體SQLEXPRESS的資料庫主服務沒有開啟,嘗試開啟卻失敗。更換其他身份進行登陸,同樣無法啟動服務。百思不得其解,百度一番,懷疑可能是因為服務端口沖突導緻的。打開Sql Server配置管理器,将執行個體SQLEXPRESS的網絡配置中的協定開啟狀态配置的和執行個體MSSQLSERVER的一樣即可。重點在于執行個體SQLEXPRESS的網絡配置中TCP/IP協定的配置内容,最後一項中的TCP端口為空,且動态端口為2104(這個是安裝時随機的端口,可能每個人的都不太一樣。)。
這裡将動态端口删除,設定TCP端口為1434(這裡随便設定,但是盡可能設定大一點的端口,以免和系統内的其他程式服務所使用的端口沖突)。再去啟動執行個體SQLEXPRESS資料庫主服務時,終于成功了。再次通過本機遠端登入執行個體SQLEXPRESS,也成功了。這裡登入的伺服器名可以是IP/SQLEXPRESS或者IP,端口格式,比如IP,1434(見下圖)。
這樣就可以同時登入兩個執行個體MSSQLSERVER和SQLEXPRESS了(見下圖),然後通過Sql Server導入和導出工具,把執行個體MSSQLSERVER下的資料庫遷移到執行個體SQLEXPRESS中去,最後修改一下web程式的web.config中資料庫連接配接字元串伺服器名即可。到此,Sql Server 2008版本過期的問題就解決了。
補充一些内容,還有一種方式可以實作不需要修改配置檔案中的資料庫連接配接字元串,即可保證程式正常運作。那就是将執行個體MSSQLSERVER的TCP端口修改1434,将執行個體SQLEXPRESS的TCP端口修改為1433即可。當我們使用IP通路資料庫時,他會通過預設的資料庫端口1433連接配接資料庫,一般Sql Server安裝的預設執行個體名都是MSSQLSERVER(Express學習版除外)。我們把這兩個執行個體的TCP端口對調一下,那麼當我們使用IP通路資料庫時,實際上通路的是IP/SQLEXPRESS。這樣做可以實作不需要修改程式,即可讓程式正常運作。 另外,我這個過程的最後,忽然發現Sql
Server配置管理器不見了!于是,我使用“SQLServerManager”搜尋了一下伺服器的檔案,找到一個SQLServerManager10.msc的程式,打開之後同樣也是Sql
Server配置管理器,這個可能是安裝SQLEXPRESS時安裝上去的。
原本,故事到這裡應該是可以結束了的。但是,在我重新使用企業版密鑰進行版本更新安裝之後,居然又成功的将執行個體MSSQLSEREVR更新到了企業版。立馬打開Sql Server Management Studio,居然可以打開了。使用windows身份登入,成功将兩個執行個體登入了(見下圖)。
萬萬沒想到,轉了一大圈之後,又回到了最初的夢想。而且,夢想還是是實作了。 總結一下:Sql Server版本過期,可以通過網上公開的企業版密鑰進行版本更新安裝解決,這個過程中建議關閉所有安全防護軟體的防火牆,安全政策,最好是能夠退出安全防火軟體,停止其服務。遇到錯誤資訊提示,多嘗試幾次。當然,實在不行,安裝一個免費授權的Express學習版也不錯,前提是你不需要使用到開發版或企業版中那些高大上的功能,同時你的資料庫檔案不超過4GB。否則,還是老老實實安裝Enterprise Edition企業版或者Standard
Edition标準版Sql Sever吧。下面摘抄一段來自微軟中國官網的文字。
建立網站時,常常需要一個位置存儲資料。資料可以是通路者輸入的資料、有關産品或服務的資訊、新聞文章、讨論或其他所有可能的資訊集合。絕大多數網站從資料庫讀取資料并向資料庫寫入資料,這種方式似乎近期内不會有大的變化。
有許多資料庫系統可供選擇:有收費上千的,也有其他一些免費的,價格不同,所提供的功能也不同。Microsoft 的進階資料庫解決方案– Microsoft® SQL Server®2008
聲名遠播。這是一款功能齊全的資料庫伺服器,服務規模最大,支援高可用性的配置,容錯性高,包含規格一流的分析工具。如果您要建構一個服務于上千并發使用者的業務關鍵應用,上述功能對您來說再合适不過了。但是,對開發一個硬體存儲較小的網站而言,這些功能則有些“大材小用”了,您認為呢?
實際上,SQL Server 2008 有多個版本,以便适用于各種應用場景。對于開發 Web 應用,SQL Server 2008 Express Edition是一個理想選擇。它提供了與其他版本的 SQL Server 幾乎相同的進階資料庫引擎,同時有幾個擴充性限制(隻能使用單處理器和 1 GB RAM,資料庫容量限制為4 GB)。資料庫引擎與其他SQL Server 版本完全相容,如果客戶或主機托管服務提供商要求與
SQL Server Web 版本、标準版或企業版的可擴充性,基于SQL Server Express Edition 建構的任何應用部署到其他生産環境中完全可以正常運作。(尤其需要注意,SQL Server 2008 Express 與 SQL Server 2008 Web 版的功能比對。您的托管服務提供商很可能使用該版本,是以您不可能使用托管供應商不支援的功能。)
SQL Server Express Edition 與Microsoft 開發工具緊密內建,比如 Visual Studio 和 Visual Web Developer Express,它還支援進階資料類型,比如本機 XML、空間資料和 FILESTREAM 資料等。事實上,當您了解 SQL Server Express 最重要的功能時,您會驚訝的看到,它包括的 SQL Server 功能如此之多,并且無論對于開發和部署,都是免費提供的。
有三款 SQL Server Express Edition 版可供選擇:
· SQL Server 2008 Express Edition with Tools:該版本包含資料庫引擎和 SQL Server Management Studio Basic,該工具包含了建立、編輯和管理資料庫所需的所有功能。
· SQL Server 2008 Express Edition with Advanced Services:該版本包含資料庫引擎、Management Studio,以及 Full-text Search(用于搜尋文本多的資料)和 Reporting Services(用于根據您的資料建立功能強大的報表)。
· SQL Server 2008 Express Edition (Runtime Only):該版本隻包含資料庫
引擎。
您也可以單獨下載下傳 SQL Server Management Studio 2008 Express。如果您已有了 Runtime Only 版本,或者在一台獨立計算機安裝以進行遠端管理,單獨下載下傳就很有價值。
可以從 http://www.microsoft.com/express/sql/download 免費下載下傳所有這些版本。
本文來自部落格園,作者:搖曳de風筝,轉載請注明原文連結:https://www.cnblogs.com/pinzi/p/4224966.html