最近實施一箇中型的門戶網站,在項目編碼已經結束測試完成後,發佈服務器上,由於之前用到只有SQl2000,當前基於開發的SQL2005+VS2008,環境是.NET 3.5版本,這個時候就出現許多問題.一一描述並提供解決方案:
A:版本問題—這是你第一個必須面對的而且是核心問題:
由於在實施中用到Row_Number()函數進行簡單的數據分頁,很明顯只有SQl2005以上版本才支持,首先讓咱們來看看數據庫版本的具體劃分:
版本得到方法以下:
sql
1--得到當前數據庫版本方法: 2A:Select @@Version —返回當前數據版本號(微軟定義) 3--完整得到版本信息 4B:SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition') 5上述得到完整版本信息: 6 7(1)產品版本編號('productversion')(例如:9.00.1399.06 或者8.00.534) 8(2)產品級別('productlevel')(例如:RTM正式版) 9(3)版本('edition')(例如:Enterprise Edition-企業版) |
SQL2000版本號查詢結果:數據庫
SQl2005版本號查詢結果:服務器
在微軟官方上看到版本區分以下:SQL2000和SQL2005版本號對好比下:ide
安裝SQL2005時若是具備引導程序問題不大,若是壓縮包中只是Server和Tools文件夾時:須要注意安裝順序很是重要,應該首先安裝Tools目錄下而後在安裝Server目錄服務器引擎,若是隻安裝Tools客戶端工具,沒有安裝Server目錄下數據引擎狀況下,會致使sql2005默認連接的是SQL2000數據引擎也就是8.0版本,致使Row—Nummber等函數不支持的現象發生.問題關鍵是安裝SQL 9.0版本數據庫引擎既Server目錄下,並從新生成一個新的數據庫實例而非默認實例:
這樣作主要目的是在SQlClint容易區分不一樣版本下不一樣的數據庫實例,連接時取新創建的數據庫實例引擎,執行T—SQL語句正確執行,查看版本是9.0,這點是頗有必要,若是SQL語句出現不可預料的錯誤,數據引擎版本問題是很隱蔽而關鍵的問題,這也是我不斷在前面不斷區分和識別數據版本的用心所在。
安裝完SQL2005後,開始準備用SQL2000客戶端工具鏈接SQL2005,結果報告不能用SQL2000客戶端工具鏈接,只能用SQL2005客戶端工具鏈接,後證實SQL2005客戶端工具能夠同時鏈接SQL2000和SQL2005。
B:多版本下連接數據庫
當數據庫創建後另一個問題就是多版本下連接數據庫:其實在同一臺機器上同時安裝多個版本的數據包括orcal理論上都是能夠的,函數
1--默認連接字符串 2public static readonly string connString = "Data Source=.;Initial Catalog=IssueDB;Uid=sa;Pwd=chen";//能夠經過配置文件讀取,請查MSDN |
如上連接會報錯的,由於先安裝的SQL2000後裝上SQL2005,DataSource經過.默認來指向的是SQL2000數據庫引擎,回報出沒法找到IssueDB這個數據庫對象,一樣默認數據庫通訊端口1433也被SQL2000佔用,後來經過官方資料證實:SQL2000服務器用的端口始終是1433端口,而SQL2005使用的是動態端口,
在多版本下創建SQl2005一個新的數據庫實例後,鑑於項目須要建議開闢新的通訊端口,連接字符竄寫法以下:工具
1--開闢一個新端口(固然在使用前應測試該端口是否被佔用)鏈接字符竄 2public static readonly string connString = "Data Source=5A40BDACC26449F\\SQLEXPRESS:5048;Initial Catalog=IssueDB;Integrated Security=True"; 3 4//5048爲新開闢端口 |
SQl2005配置步驟以下:
(1):在 "程序—>配置工具—>SQlServer配置管理器"運行起來:選擇SQl Native Client配置下客戶端協議 如圖顯示:測試
(2)選中Tcp/ip選擇屬性配置 截圖以下:網站
修改完成後須要從新關閉再次啓動SQlserver服務配置纔有效,經過程序鏈接數據庫SQl2005,連接正常.
編碼