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

2017-07-29 08:58:00
zstmtony
原創
3828



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



SSMA For Access 全名為:Microsoft SQL Server Migration Assistant v5.3 for Access


1.Access 2003至Access 2010有一個非常好的Access升遷到Sql server的向導工具,但是從Access 2013版本開始,微軟取消了升遷Sqlserver功能

以前的Access 2000,Access 2002, Access2003 ,Access 2010 包含一個Access升遷到Sql server的功能,但是可惜的是,Access從2013版本開始(包括2016)取消了升遷Sqlserver功能,需要使用SSMA( SQL Server Migration Assistant)

微軟將這個升遷功能 集成到 SSMA工具里,可能主要是想集中在一起,如SSMA For Access,SSMA For Oracle 等等

使用 SQL Server Migration Assistant (SSMA)

一個更方便更定制化的工具, (Access 2013和Access 2016唯一的選擇),可以使用 SSMA創建你的SQL Server 數據庫,


2.SSMA 的優點是:


1.可以按照你自己的喜好去改變設置和定制化升遷選項
2.允許你去保存升遷包及以后隨時和多次運行這個升遷包
3.能夠適應 所有版本的  SQL Server 和 Access


3.SQL Server Migration Assistant (SSMA)下載地址:

不過注意,這個工具暫時只有英文版,全名為Microsoft SQL Server Migration Assistant 7.11 for Access

https://www.microsoft.com/en-us/download/details.aspx?id=54255(本頁面最后也可直接下載附件)



4.ACCESS數據庫遷移到SQLSERVER數據庫兩種方法(升遷過程圖文詳解)

轉自網上文章-未知作者


ACCESS2000文件

用ACCESS2007打開,并遷移到SQLSERVER2005里

打開ACCESS2007的數據庫工具

方法一:使用ACCESS2007自帶的數據庫遷移工具

1、打開ACCESS2007的數據庫遷移向導

http://files.jb51.net/file_images/article/201310/2013100915404898.jpg

http://files.jb51.net/file_images/article/201310/2013100915404899.jpg

2、點擊SQLSERVER按鈕,彈出升遷向導對話框

http://files.jb51.net/file_images/article/201310/20131009154048100.jpg

3、選擇新建數據庫

http://files.jb51.net/file_images/article/201310/20131009154048101.jpg

4、輸入計算機名,我的本地計算機名字叫joe,因為SQLSERVER安裝在本地,所以選擇使用可信連接就可以了

數據庫名稱默認就可以了

http://files.jb51.net/file_images/article/201310/20131009154048102.jpg

5、選擇所有表,移動到右邊框

http://files.jb51.net/file_images/article/201310/20131009154048103.jpg


6、把表索引也一起升遷到SQLSERVER里

http://files.jb51.net/file_images/article/201310/20131009154048104.jpg

7、由于沒有應用程序,這一步可以直接跳過

http://files.jb51.net/file_images/article/201310/20131009154048105.jpg

8、點擊完成按鈕開始遷移數據庫到SQLSERVER

http://files.jb51.net/file_images/article/201310/20131009154048106.jpg

9、開始遷移

http://files.jb51.net/file_images/article/201310/20131009154048107.jpg

http://files.jb51.net/file_images/article/201310/20131009154048108.jpg

http://files.jb51.net/file_images/article/201310/20131009154048109.jpg



10、刷新一下SQLSERVER2005里的對象資源管理器里的數據庫

遷移到SQLSERVER之后,SQLSERVER會自動在ACCESS數據庫的名稱后加SQL這三個字母

http://files.jb51.net/file_images/article/201310/20131009154048110.jpg

11、打開LygSQL中的某個數據表,看是否遷移成功

http://files.jb51.net/file_images/article/201310/20131009154048111.jpg

12、表約束也完整遷移成功

http://files.jb51.net/file_images/article/201310/20131009154048112.jpg



方法二:使用SQLSERVER2005自帶的數據導入導出向導

限制:SQLSERVER2005自帶的數據導入導出向導工具只支持ACCESS2003或以下文件

1、在SQLSERVER里新建一個與ACCESS數據庫同名的數據庫Lygl

http://files.jb51.net/file_images/article/201310/20131009154048113.jpg

2、選中Lygl數據庫,然后按右鍵—》任務-》導入數據

http://files.jb51.net/file_images/article/201310/20131009154048114.jpg

3、打開SQLSERVER導入導出向導

http://files.jb51.net/file_images/article/201310/20131009154048115.jpg


4、下一步

http://files.jb51.net/file_images/article/201310/20131009154048116.jpg

http://files.jb51.net/file_images/article/201310/20131009154048117.jpg

提示:如果ACCESS數據庫有密碼的話,點擊下一步會出錯,所以在點擊下一步之前請先去除ACCESS數據庫的密碼!

http://files.jb51.net/file_images/article/201310/20131009154048118.jpg

http://files.jb51.net/file_images/article/201310/20131009154048119.jpg

http://files.jb51.net/file_images/article/201310/20131009154048120.jpg

5、點擊下一步

http://files.jb51.net/file_images/article/201310/20131009154048121.jpg

6、再點擊下一步

http://files.jb51.net/file_images/article/201310/20131009154048122.jpg

7、再點擊下一步

勾選第一個方框就可以了,SQLSERVER會自動幫你勾選ACCESS數據庫中的所有表格

http://files.jb51.net/file_images/article/201310/20131009154048123.jpg

8、點擊下一步

http://files.jb51.net/file_images/article/201310/20131009154048124.jpg

9、最后點擊完成按鈕

http://files.jb51.net/file_images/article/201310/20131009154048125.jpg

http://files.jb51.net/file_images/article/201310/20131009154048126.jpg

http://files.jb51.net/file_images/article/201310/20131009154048127.jpg

http://files.jb51.net/file_images/article/201310/20131009154048128.jpg

10、刷新一下SQLSERVER對象資源管理器里的數據庫

http://files.jb51.net/file_images/article/201310/20131009154048129.jpg

11、打開表

http://files.jb51.net/file_images/article/201310/20131009154048130.jpg

數據都導入進來了

但是表約束沒有導入進來,這個比ACCESS自帶的數據庫遷移向導差了一點

http://files.jb51.net/file_images/article/201310/20131009154048131.jpg



整個遷移的過程就完成了





5.用SSMA移植Acceses到SQL Server可能遇到的幾點問題

轉自網上文章-未知作者,請作者看到 聯系


這些年來,Access數據庫一直在PC平臺占據主導地位,使用它建立了大量的部門數據庫  。隨著這些數據庫的應用,它們中的大多數已經慢慢地具有應急使命,現在需要的是加固成為一個安全的客戶端—服務器引擎  。

在微軟想要統治世界的偉大計劃中,更希望這種引擎是SQL Server  。隨著這種想法,微軟針對Access提供了免費的SQL Server移植工具——SSMA  。

對于開發者來說,移植工具已有很大的實惠  。但期望這種工具能夠移植整個應用程序是不現實的,因為Access有一些SQL Server所沒有的簡單工具(例如窗體和報表性能)  。但是我們有理由相信這種工具能做大部分工作,比如建立適當的表,轉移數據,把查詢轉換成視圖等  。

SSMA的運行需要在.NET Framework2.0版本以上,J#2.0可重組包以及至少1GB RAM  。

SSMA具有一個清晰的圖形用戶界面,分成四個面板  。在建立一個新工程之后,首先添加一個或多個Access數據庫,然后連接到適當的SQL Server數據庫,下一步就是把架構(schema)轉換成SQL Server  。

注意,這個過程并不是運行依靠SQL Server引擎的架構,而是簡單地生成了一個在SSMA中可見的,可用的SQL Server架構,同時生成一個錯誤、警告和信息標記的集合  。

從這點來看,該工具的能力就顯而易見  。作為一個開始,這些標記指出轉換問題,例如:不支持Access的一些函數如DateDiff,所以不能轉換(當然這些函數可以被轉換,但SSMA不能實現)  。

你可以瀏覽Access架構,觀察正在計劃的類型映射等等,當然如果你不喜歡這種缺省映射,也完全可以改變它,或者根據特殊的工程甚至特殊的表來做改變  。

查詢是一個比較特別的情形  。它們被轉換成SQL Server視圖:你可以編輯Access查詢然后產生適當的SQL Server代碼  。這樣的編輯是發生在SSMA的架構中,而不是在Access數據庫本身完成  。

你可以使用SSMA運行依靠數據庫的SQL Server架構,它建立了一種結構來保存數據以便你可以移植數據  。理論上聽起來很好,但是實際上是怎樣的呢?雖說嘗試從任意一個數據庫引擎移植到另一個都是麻煩的,且這個工具可以免費的為你做90%的工作,但它還存在一些缺陷  。

例如,雖然不是SQL標準的一部分,Access需要所有日期來包裝到hash記號中  。不幸的是,SSMA看起來沒有考慮到這點,這個疏忽的結果就是所有涉及到日期的查詢結果都不能成功轉換  。下面是一個錯誤信息的例子:

/* * SSMA error messages: * A2SS0058: Following SQL statement is not supported and cannot be converted: * * SELECT

DISTINCTROW EMPLOYEES.EmployeeNo, EMPLOYEES.FirstName, EMPLOYEES.LastName, EMPLOYEES.DateOfBirth, EMPLOYEES.DateEmployed *

FROM EMPLOYEES * WHERE ((EMPLOYEES.DateOfBirth)>#1/1/1970#); * */

PRINT ERROR: SSMA failed to convert the previous statement.

日期在數據庫中是很常見的,所以這個疏忽將會影響大多數數據庫轉換  。但要解決并不困難,如下:

SELECT EmployeeNo, FirstName, LastName, DateOfBirth FROM dbo.EMPLOYEES WHERE (DateOfBirth > CONVERT(DATETIME, 1970-01-01))

從例子中返回正確的數據集  。

(我們可以討論一下是否是這樣,例如:CONVERT(DATETIME, 1970-01-01 00:00:00, 102)可能更恰當,但是不管怎么說,我們可以轉換數據處理),如果我們可以手動地做,SSMA就應該可以為我們做這件事  。

還有更糟糕的問題:Access默認是在文本周圍使用雙引號,例如:
SELECT EMPLOYEES.EmployeeNo, EMPLOYEES.FirstName FROM EMPLOYEES WHERE ((EMPLOYEES.FirstName="Norma"));

SQL Server不是這樣,它使用單引號,如下:WHERE EMPLOYEES.FirstName=Norma;

然而,SSMA保留了上面這樣的雙引號代碼,沒做任何改變  。而且在架構產生期間并沒有引發錯誤提示,錯誤提示只發生在把架構加載到SQL Server數據庫的過程中  。那時,SSMA拋出一個錯誤提示說存在一個非法列名Norma,這樣視圖就不能加載到SQL Server中了  。以上顯示出SSMA并沒有做足夠的語法檢查  。

再強調一下,Access默認使用雙引號,而SSMA卻不能處理如此簡單平常的Access語法  。這就像一個法語到英語的翻譯者可以處理語言中的大多數詞,卻為單詞“Bonjour”感到束手無策一樣  。

再一個例子,Access允許為字段添加規則約束,例如一個名為“Title”的字段可以接受的值可能只有Mr., Mrs., Miss., Ms等  。但SQL Server不能準確地支持同樣的類型約束  。非常明顯SSMA轉換這種約束規則為一個表約束  。Brilliant,做的不錯,只是在代碼中丟失了字段名:

ALTER TABLE [dbo].[NAMES] ADD CONSTRAINT [SSMA_CC$NAMES$Title$validation_rule] CHECK (In (Mr.,Mrs.,Miss,Ms,Dr.,Prof.))

這不僅不能在架構轉載到SQL Server時運行,同時更不能產生一個錯誤消息  。最后一行的正確語法應該是:CHECK (Title In (Mr.,Mrs.,Miss,Ms,Dr.,Prof.))

那么,我們是否應該從機器上刪除SSMA呢?當然不,因為它確實完全自動地做了大量的工作,也提供了一個合理的環境,在那里可以看到問題區域并做出整理  。指出它的缺陷,只是期望SSMA能更好


5. ACCESS數據庫升遷到SQLSERVER 可能遇到的各種問題(ACCESS升遷Sql server時的特別注意事項):

ACCESS轉SQLSERVER后代碼需要修改的語句


原文:圖老師 (tmtony整理)


在軟件開發過程中經常會遇到數據庫升遷的問題,原因比較多,如acsess訪問速度比sql server慢、刪除數據記錄后access會留下空檔,文件越來越大(也可用壓縮修復的方式減小文件大小,但太麻煩),訪問速度越來越慢,甚至會數據庫損壞,損壞得比較輕的可以找第三方工具來修復,便嚴重時會導致數據庫無法修復,或修復后數據記錄會損壞。所以我們大有必要升遷我們現有的Access數據庫到SQL Server;
1,對于日期字段字段

access表示為:#1981-28-12#   SQLSERVER2000表示為:''1981-02-12''


2,SQL語句區別

select ,update 在對單表操作時都差不多, 但多表操作時update語句的區別ACCESS與SQLSERVER中的UPDATE語句對比:

SQLSERVER中更新多表的UPDATE語句:   UPDATE Tab1   SET a.Name = b.Name   FROM Tab1 a,Tab2 b   WHERE a.ID = b.ID;

同樣功能的SQL語句在ACCESS中應該是   UPDATE Tab1 a,Tab2 b   SET a.Name = b.Name   WHERE a.ID = b.ID;

即:ACCESS中的UPDATE語句沒有FROM子句,所有引用的表都列在UPDATE關鍵字后. 更新單表時:都為: UPDATE table1 set ab='12',cd=444 where ....


3,delete語句
access中刪除時用:delete * from table1 where a2 即只要把select 語句里的select 換成delete就可以了。
sqlserve 中則為: delete from table1 where a2 即沒有*號


4,as 后面的計算字段區別
access中可以這樣:select a,sum(num) as kc_num,kc_num*num as all_kc_num  即可以把AS后的字段當作一個數據庫字段參與計算。
sqlserver 中則為:select a,sum(num) as kc_num,sum(num)*num as all_kc_num  即不可以把AS后的字段當作一個數據庫字段參與計算。


5,[.]與[!]的區別
access中多表聯合查詢時:select tab1!a as tab1a,tab2!b tab2b from tab1,tab2  ,中間的AS可以不要。
sqlserve 中則:select tab1.a as tab1a,tab2.b tab2b from tab1,tab2  ,中間的AS可以不要。

6,聯合查詢時,
access中多表聯合查詢:'select a,b from( select a,b from tab1 where a3 union select c,d from tab2 ) group by a,b
sqlserve 中則'select a,b from( select a,b from tab1 where a3 union select c,d from tab2 ) tmptable group by a,b
即要加一個虛的表tmptable,表名任意。

7,access升級到sqlserver時,
可以用sqlserver的數據導入工具導入數據,但要做必要的處理。
access中的自動編號,不會自動轉換SQL中的自動編號,只能轉換為int型,要把它手工改成標識字段,種子為1,
把所有導入被sqlserver轉化成的以n開頭的字段類型的n去掉,如nvarchar-varchar.
把需要有秒類型的日期字段改成datatime類型(SQL會把所有的日期開轉化成smalldatetime型)

8, true與1=1
access用where true表示條件為真
sqlserver用where 1=1表示條件為真

9,判斷字段值為空的區別 普通空:
Access和sql server一樣 where code is null 或 where code is nol null 條件空:
Access:iif([num] is null,0,[num])  或 iif([num] is null,[num1],[num])
SQLServer: isnull([num],0) 或 isnull([num],[num1])

10,SQL語句取子串的區別
access:MID(字段,n1,[n2]),LEFT(字段,n),RIGHT(字段,n) 如:select left(cs1,4)+'-'+cs2 as cs3
SQLServer: SUBSTRING(expression, start, length)
如:select substring(cs1, 1, 2) + substring(cs1, 4, 2) + '-' + cs2 as cs3



其它相關:


6.win7 x64下用SSMA導access數據入mssql2008注意事項
主要涉及到win7 x64下用SSMA導access數據入mssql2008注意事項方面的內容,對于win7 x64下用SSMA導access數據入mssql2008注意事項感興趣的同學可以參考一下。

背景:老早在xp上一個access2003數據庫,現在要把里面的數據導入到64位win7的mssql2008中。一種方式使用access自帶的東東,但是在我的情況下特慢,所以選擇了SSMA for access。相較于mssql自帶的工具,這個可以在mssql中保留access中的所有結構和關系(網上搜索提示有3種方法可以執行access轉mssql),也是MS的東東,可以免費使用。但是在使用SSMA時會提示:required mdb-file *** is not loaded。究其原因是由于我的機子上還是安裝的是office2003,dao library缺失,這就導致不能成功轉導。方法是把office升級合適版本(我是升級到office2010)。


另外,如果原先的access棄之不用的話,要對SSMA進行一番設置。具體設置為:SSMA的tools---default project settings--Tables下的Add timestamp colums設置為Never。這樣就不會在轉導后的每個table中增加一個timestamp的field了!


7.這些年來,Access數據庫一直在PC平臺占據主導地位,使用它建立了大量的部門數據庫。隨著這些數據庫的應用,它們中的大多數已經慢慢地具有應急使命,現在需要的是加固成為一個安全的客戶端—服務器引擎。


在微軟想要統治世界的偉大計劃中,更希望這種引擎是SQL Server。隨著這種想法,微軟針對Access提供了免費的SQL Server移植工具——SSMA。


什么是SSMA? SQL Server Migration Assistant(SSMA)是微軟公司推出的數據庫升遷工具,可以幫助用戶輕松地從常用數據庫遷移數據到SQL Server。由于不同數據產品間的標準都不相同,所以借助SSMA,可以使原來復雜的數據遷移工作變得非常輕松。
微軟公司針對不同的數據庫產品推出了針對性的SSMA工具,主要產品分別面向Oracle、Sybase、Access、MySQL等數據庫。所以,當進行數據升遷之前,要確定進行升遷的數據庫類型,然后選擇合適的SSMA進行操作。


對于開發者來說,移植工具已有很大的實惠。但期望這種工具能夠移植整個應用程序是不現實的,因為Access有一些SQL Server所沒有的簡單工具(例如窗體和報表性能)。但是我們有理由相信這種工具能做大部分工作,比如建立適當的表,轉移數據,把查詢轉換成視圖等。

SSMA的運行需要在.NET Framework2.0版本以上,J#2.0可重組包以及至少1GB RAM。

SSMA具有一個清晰的圖形用戶界面,分成四個面板。在建立一個新工程之后,首先添加一個或多個Access數據庫,然后連接到適當的SQL Server數據庫,下一步就是把架構(schema)轉換成SQL Server。

注意,這個過程并不是運行依靠SQL Server引擎的架構,而是簡單地生成了一個在SSMA中可見的,可用的SQL Server架構,同時生成一個錯誤、警告和信息標記的集合。

從這點來看,該工具的能力就顯而易見。作為一個開始,這些標記指出轉換問題,例如:不支持Access的一些函數如DateDiff,所以不能轉換(當然這些函數可以被轉換,但SSMA不能實現)。

你可以瀏覽Access架構,觀察正在計劃的類型映射等等,當然如果你不喜歡這種缺省映射,也完全可以改變它,或者根據特殊的工程甚至特殊的表來做改變。

查詢是一個比較特別的情形。它們被轉換成SQL Server視圖:你可以編輯Access查詢然后產生適當的SQL Server代碼。這樣的編輯是發生在SSMA的架構中,而不是在Access數據庫本身完成




相關文章:

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

Access取消了升遷向導Sqlserver功能,需要使用SSMA


相關英文介紹:

Microsoft SQL Server Migration Assistant (SSMA) for Access is a tool to automate migration from Microsoft Access database(s) to SQL Server

Details
Version:
5.3

File Name:
SSMA_Access\SSMA for Access.5.3.0.exe

Date Published:
5/7/2014

File Size:
7.0 MB

SQL Server Migration Assistant (SSMA) is a free supported tool from Microsoft that simplifies database migration process from Access to SQL Server. SSMA for Access automates conversion of Microsoft Access database objects to SQL Server database objects, loads the objects into SQL Server, and then migrates data from Microsoft Access to SQL Server.

SSMA for Access v5.3 is designed to support migration from Microsoft Access 97 and higher to all editions of SQL Server 2005, SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 and SQL Server 2014.

System Requirements
Supported Operating System
Windows 7, Windows 8, Windows Server 2003, Windows Server 2008 R2, Windows Server 2012
?Windows 7, Windows 8.1, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Server 2012.


Requirements for the SSMA for Access client:  ?Microsoft Windows Installer 3.1 or a later version.
?The Microsoft .NET Framework version 3.5 or a later version. You can obtain it from the .NET Framework Developer Center.
?Access to and sufficient permissions on the computer that hosts the target instance of SQL Server.
?DAO provider version 12.0 or 14.0. You can install DAO provider from Microsoft Office 2010/2007 product or download it from Microsoft web site.
?Microsoft SQL Server Native Client (SNAC) version 10.5 and above. You can install SNAC from Microsoft SQL Server web site as part of SQL Server Feature Pack.
?4 GB RAM.


Install Instructions
After the download, you must extract the installation files before you can install SSMA for Access.
Installing the SSMA for Access Client 1.Double-click SSMA for Access.exe.
2.On the 'Welcome' page, click Next.
3.If you do not have the prerequisites installed, a message will appear that indicates that you must first install required components. Make sure that you have installed all prerequisites, and then run the installation program again.
4.Read the End User License Agreement. If you agree to the terms, select "I accept the agreement" option and click Next.
5.Read the 'Usage Report Settings' page, select or clear the feature reporting box, and then click Next.
6.On the 'Choose Setup Type' page, click Typical.
7.Click Install.


Additional Information
Licensing: SSMA is a FREE download, and is available for use by any customer or partner with no charge or any obligations.



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