當程式開發人員開始拋棄技術時,是否意味著噩夢的開始?拋棄了SQL Server 2000才發現客戶的簡單問題真的很難解決

來源:互聯網
上載者:User

這個話題起源於今天面對一個客戶的報表問題,用預存程序寫的報表語句,跑在SQL Server 2000上面。客戶說有一個地方抱錯,而自己開發機器這邊,死活找不到一個SQL Server 2000,全部都是SQL Server 2005/2008 R2。客戶的這個問題是這樣的,它是一個預設定序的問題

CREATE TABLE #BOM(BOM_NO NVARCHAR(50)START_DATE  DATETIME)CREATE TABLE #PART(BOM_NO NVARCHAR(50)PART_NAME  NVARCHAR(50)PART_NO  NVARCHAR(50))SELECT PART_NAME,BOM_NO FROM #BOM A, #PART BWHERE A.BOM_NO=B.BOM_NO

有兩個暫存資料表,物料清單和物料清單明細,由於建立時沒有使用定序,在執行下面的讀取語句時,有定序異常。

問題不複雜,但是因為找不到SQL Server 2000這個資料庫,也不敢貿然的把自認為對的SQL預存程序發過去,於是折騰了這麼一回,實在有些不值得。

首先要回公司找SQL Server 2000的安裝程式,找不到,於是在網上搜尋,找到了,下載下來,在安裝時,因為有安裝SQL Server 2005的預設執行個體,改成安裝SQL Server 2000的具名執行個體,安裝成功後,在系統管理中,輸入SQL2K\DEV,結果程式報錯。原因是這樣的,我們寫的SQL連接字串是這樣的

server=SQL2K\DEV;database=Northwind;uid=sa;pwd=holiday;

在系統管理中,它會用SqlConnectionBuilder 讀取一次,把DataSource提取出來,也就是SQL2K\DEV,這是個SQL Server 的具名執行個體,不是網路機器名,系統程式用Ping命令嘗試Ping這個SQL2K\DEV,自然是ping不通。

代碼大概如下面所示

bool available = false;SqlConnectionStringBuilder conection = new SqlConnectionStringBuilder(ConnectionString);string machineName = conection.DataSource;Ping ping = new Ping();PingReply reply = ping.Send(machineName, 4000);

Ping命令失敗,肯定會先報異常,雖然後面的連接字串是正確的。

這樣,只好卸載了SQL Server 2005,重裝SQL Server 2000,改成預設執行個體。SQL 串連的問題到此解決了。

 

另一個問題是,我們開發都是在用SQL Server 2005, 開發部這邊,所有的ERP資料庫都是SQL Server 2005的,沒有SQL Server 2000的資料庫,這樣就麻煩了,我知道SQL Server有匯入匯出功能,但是原生SQL Server 2005已經被我卸載了,只好在另一台機器中,把原來的SQL Server 2005的資料庫附加上來,匯出到我原生SQL Server 2000上,對於SQL Server的匯入匯出,總有些問題。比如IDENTITY的問題,主鍵丟失,等等。

開發部的Demo資料庫都是SQL Server 2005版本的,這是個很大的麻煩。即使這樣,也沒有解決好問題,就只好向客戶要SQL Server 2000版本的資料庫,向客戶要資料庫要經過審批,還要過濾掉敏感的價格,供應商資料,幾個GB的資料,傳回來也很耗費時間的。

就這樣,一天的時間,都沒有做什麼事情,白白浪費了一天。

 

SQL Server有個不相容的問題,高版本的資料庫,在低版本中是無法開啟的,即使你有下面的設定

即使你的Compatibility Level是SQL Server 2000,當前的這個資料庫在SQL Server 2000中仍然是無法開啟的。它僅僅代表的是SQL 文法方面的相容。

同樣,SQL Server 2005的資料庫在SQL Server 2008中是無法開啟的。

SQL Server 2000的查詢分析器可以串連到SQL Server 2005的資料庫執行個體,但是不能執行任何的UPDATE語句,提示版本不夠,這個問題在SQL Server 2005中得到改進。2005的Management Studio,可以串連到SQL Server 2008並執行修改語句。

 

同樣是SQL Server資料庫引擎,SQL Server 2000已經足夠好用了,還有大量的客戶在用這個版本的SQL Server。所以,在選擇你的SQL Server資料庫時,我以為,從低版本的開始要好很多。新的客戶我們肯定要求客戶選擇SQL Server 2005,但是舊的客戶,技術人員,即使是老闆,也沒有能力說服客戶升級到SQL Server 2005,這是不必要的成本浪費。僅以我們開發人員的角度來說,自己用到SQL Server 2005的,大部分還是它的資料庫引擎,其他的功能幾乎沒有用到。只不用它用起來方便,Managment Studio功能強大,所以我們的習慣就是用SQL Server 2005,甚至是更新的SQL Server 2008。

 

以此為借鑒,希望能對你有協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.