Asp.Net: 從Php+Mysql到Asp.Net+SqlServer

最近遇到需要將一個Php網站,一個老舊的部分功能只被老舊的IE8才支持的網站,要重新用起來維護起來,衡量了一下在就網站做修改的功夫基本與新建一個網站持平,於是乎,就有了從php到asp.net的代碼轉換,和mysql到sqlserver的數據庫轉換的問題。

首先呢,代碼轉換是沒有現成的工具的,也不可能有,不是從技術上而是從需求上,所以轉換隻能是靠程序員人工轉運代碼。代碼都是相同的,這個對於有幾年經驗的程序員都不是難事。前端代碼可以大部分重用,如果不想花時間精力的話,當然頁眉頁腳菜單登陸等常規的就不一定要轉換了,可以用自己現成有的。JS部分可能會造成一些麻煩,因爲有些跟邏輯相關。

代碼要跑起來首先得有數據庫,網上可以查到不少mysql轉到sql server的方式,首先要安裝mysql-connector-odbc,這裏默認會給出最新版,但最新版可能裝不上,那麼可以選擇老一點的版本,點擊那個“Looking for previous GA versions”,就可以選擇5.2.7之類的以前的版本了,筆直就換成了這個版本成功裝上的。後面的創建DSN部分也還好,Data Source Name隨便明明,筆者把命名爲和數據庫名稱一樣叫eshinetest,後面方便,description留空,IP寫127.0.0.1,user是root,密碼別填錯了,正確的話就能夠選Database了,點擊Test應該可以正確連接。然後就是在sql server數據庫創建鏈接服務器了,這裏筆者倒騰了大半天,最後的鏈接語句類似下面,

EXEC sp_addlinkedserver  @server = 'eshinetest', @srvproduct='eshinetest', @provider = 'MSDASQL', @datasrc = 'eshinetest'
GO
EXEC sp_addlinkedsrvlogin  @rmtsrvname='eshinetest', @useself='false', @locallogin='sa',@rmtuser='root',@rmtpassword='數據庫密碼'

反正名字都用eshinetest,不管哪個field正確的可能性都會大些,如此便可以展開目錄了,看到正確的數據庫了,否則只能看到default並且展開報錯。
然後這個鏈接數據庫右擊並沒有提供多少選項,需要自己寫sql語句來搬運到sql server,筆者新建了個叫test1的數據庫,執行

SELECT * INTO test1.dbo.adad  FROM OPENQUERY (eshinetest ,'select * from eshinetest_bak.adad' ) 

這裏eshinetest是鏈接服務器,eshinetest_bak是這個鏈接服務器下面的數據庫,adad是裏面的表,test1.dbo.這個也必須寫否則會出錯。按這種方式把所有的表都執行一次,就可以生成數據庫結構並把數據也插入進去。
還沒完,生成的數據庫表沒有主鍵,id也不是自增,自己要設置一下,某些字段類型如果自己想調整的話也可以調一下,比如datetime2想改成datetime。

最後提一句習慣sqlserver不熟悉mysql的,可以下載navicat_premium這個客戶端查看mysql數據。裏面也有導出功能還可以導出成access2007文件讓sql server導入,不過筆者導出的時候遇到錯誤就沒這麼做了大家可以嘗試一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章