激情欧美日韩一区二区|国产18在线播放|黄的日本免费大片|国产色在线 | 亚洲|青青操夜夜操

數據庫遷移,從Access導入到Sql Server需要注意哪些事項

歡歡歡歡 發表于 2016-11-21 11:38

前陣子由于數據訪問量大,以及條件允許,將網站原來的Access數據庫換成了Sql Server,記錄下自己在換數據庫的時候的一些步驟和心得。

切換之前大概想了協議愛,大概要涉及到這些地方:
 
換到sql server服務器上的步驟:
1,在C#代碼層面上將所有Oledb切換到SqlParameter
2,分頁公共方法的修改:原來access使用的分頁方法雖說在Sql Server也能用,但是效率肯定不及Sql Server原生的ROW_NUMBER。
3,頂層的一些查詢語句:原來可能會在業務層上寫一些查詢語句的片段,現在就不能用了,比如說Access的“是/否”字段,不能再設置為True/False,而要改成1/0了
4,測試
5,切換數據庫(導入表結構數據,設置主鍵等)

在執行第5步時, 首先百度到的就是這篇文章,幫了大忙了:http://www.cnblogs.com/hnyei/archive/2012/05/29/2523728.html

本以為可以很輕松的搞定,但是在實際操作的時候還是遇到了問題:

需求:

1,歷史數據的主鍵不能更改,這個涉及到Seo,如果ID改了好多被百度收錄的內容就沒有了

2,導入數據的時候能盡可能的簡單,盡量下一步下一步的操作而不產生大量的體力勞動

3,發布時間不能太長,將網站訪問異常的時間盡量縮短。

問題:

1,Sql Server在導入數據的時候,會自動將表結構帶過來,但是自增長,主鍵和字段默認值是不會帶過來的!!!!

解決方案:

如果要帶自增長鍵,必須要一個表一個表設置,而且這種設置還不能保存成腳本,只對本次導入有效!顯然這種方式是不可行的,因為我不能一次導入成功,肯定要實驗很多次,如果每次都這樣設置會非常麻煩。看來只能寫腳本了,畢竟可反復執行!

寫腳本的話,主鍵和默認值很好寫,如下

alter table dra_DramaVer
add CONSTRAINT PK_dra_DramaVer PRIMARY KEY CLUSTERED 
(
ID
)
GO
ALTER TABLE [dbo].[dra_DramaVer] ADD  CONSTRAINT [DF_dra_DramaVer_ShowOrder]  DEFAULT ((0)) FOR [ShowOrder]
GO
但是讓主鍵自增長就難了!!百度了半天,最后得出的結論是:一個表一旦建好了,將某個字段改為自增長唯一的方式就是將這個字段刪掉,然后重新新建,這在我目前這種需求下是不能被接受的,那樣的話歷史數據的主鍵字段就會全部被重置,違背了需求1。
最后不得已,只能在導入完數據之后,一個一個表的編輯,將主鍵的自增長加上。
這就是這次導入數據的全部經驗,寫出來希望和大家探討出更好的方案。