Access升遷到Sql server有些數據表遷遷總是失敗的解決辦法(表被跳過或導出失敗)

2017-07-28 10:40:00
zstmtony
原創
2077

Access升遷到Sql server有些數據表遷遷總是失敗(表被跳過或導出失敗)



來源:Access交流網

作者:tmtony


access自身有一個非常好的升遷工具,叫做Access升遷向導(Upsizing Wizard),可以利用升遷向導把整個Access數據庫中的表升遷到SQL Server中,

首先要注意:

1. Access 2003或 access2007不能直接升遷到sqlserver2008 , 在Access2003 及 Access2007 這2個版本環境下,無法用升遷向導將access表到SQL Server 2008的。

因為會提示以下錯誤: 升遷向導 只適用于Microsoft Sql Server(6.50 SP5 或更高版本)。請登錄到 Sql server 數據源。


2.如果是Access 2003或Access 2007 可以考慮遷移到sql server 2000 或 Sql server 2005 ,然后再用Sql server將數據庫備份,再還原到Sql server 2008 或 Sql  server 2012 或 Sql server 2016



3.可考慮使用 微軟的SSMA 遷移工具

SSMA( SQL Server Migration Assistant) For Access(Access 升遷向導替代工具)



最近在幫客戶將一個Access2007的accdb數據升遷到Sql server是,發現有一個表死活升遷不了,使用的是Access內置的Sql server升遷工具

開始 以為是Access2007的問題,后來改為Access 2003的mdb再升遷Sql server也是失敗

總是提示: 表:XX表名 表被跳過或導出失敗


解決過程:

1. 查看數據表的字段,發現有些表的默認值或掩碼 或格式的設置,擔心這些會不會與Sql server不兼容。刪除了以下的相關設置:


工作代碼ID 小數位數0

標準工時  小數位數 2

原料不良  小數位數 0

工作時間  小數位數 4  掩碼0.000

效率      格式 百分比

再進行升遷,還是不成功,錯誤如上。


2.再檢查數據表的索引,發現有一個索引的索引名與字段名不同,且索引名有 / 這個特殊字符,修改了這個索引名


再嘗試繼續升遷,還是同樣的錯誤。


這時突然想起以前有一次幫一個香港客戶升遷繁體Access 97數據庫到Sql server時遇到一個問題,就是數據表里的日期有一些亂碼或不正確的日期。


3.馬上將這個升遷失敗的數據表打開,查看日期字段的內容,果不其然,日期有問題,有非法的日期內容,如下圖所示

改正這些錯誤的日期,再重新升遷,終于成功!



升遷成功后的提示畫面


所以從Access Migrate 到Sql server時一定要注意數據內容本身有否問題

另補充一個特別重要的經驗:

除了要按日期順排序外,也要降序排序看看日期內容有否問題。有些日期是太小,有些日期是太大而導致無法導入



另還要檢查 有否 2月 有 2月30日的,其它月份 有32日的

另還要檢查 Sql server中是否已經存在同名的表名

另一個經驗,當不知道是什么原因導致Access升遷到sql server失敗時,最快的方法,是逐個刪除一些字段,看看刪除哪個字段之后,升遷成功了,就可判斷是這個字段的數據出現問題了。逐個排除法。

還有可能是sql server數據庫有問題,會導致所有表升遷不了,要嘗試一下升遷到一個新的數據庫是否正常,提成除sql server這個數據庫的問題


再補充一個經驗:

如果是日期字段(但內容是保存時間的)經常會出現升遷不了,出錯,找來找去找不到原因。解決辦法很簡單,只要把時間按升序排序

如果這些時間排在00:00:00 前面的 時間肯定有問題,刪除這些記錄或手工改一下記錄就可成功移植了。

正常 排序 ,空的在最前面,然后是00:00:00 但這些錯誤的時間會排在00:00:00 前面,有可能是有隱藏的日期如1899/01/01 之類的日期隱藏了


補充閱讀:


在Access的早期版本中,Microsoft就開發了Upsizing Wizard,通過該向導可以很容易地將Access數據表轉換成SQL Server數據表。當進行Access數據表升遷時,該向導提供了易于操作的界面用于選擇數據表和指定附加選項。但是,該向導并不能對所有的版本進行升遷。目前,有一款新的轉換工具——SQL Server遷移助手(SQL Server Migration Assistant,SSMA),它不僅可以完成簡單的上傳任務,而且還可以將Access中的一些特定選項(如Allow Zero Length屬性)轉換成SQL Server中類似的屬性。此外,SSMA也可以在需要轉換時給出一些智能推薦,如在表中添加rowversion列能夠確保行的唯一性。


由于SSMA更適合現在的表升遷的需要,因此沒有理由再使用原來的Upsizing Wizard。SSMA可以從Microsoft下載中心免費下載。另外,讀者可以在本書的后面發現,通過Access Web應用也可以將Access數據導入到SQL Server表中,而且不需要配置步驟,要比SSMA和Upsizing Wizard更簡單。


    分享
    北京十一选五基本走势