主頁(yè) > 知識(shí)庫(kù) > 將Access數(shù)據(jù)庫(kù)移植到SQL Server

將Access數(shù)據(jù)庫(kù)移植到SQL Server

熱門標(biāo)簽:網(wǎng)站排名優(yōu)化 服務(wù)外包 地方門戶網(wǎng)站 百度競(jìng)價(jià)排名 AI電銷 鐵路電話系統(tǒng) Linux服務(wù)器 呼叫中心市場(chǎng)需求

隨著用戶對(duì)于企業(yè)級(jí)高性能數(shù)據(jù)庫(kù)的需求的增長(zhǎng),用戶時(shí)常要從Microsoft Access Jet引擎的文件-服務(wù)器環(huán)境下轉(zhuǎn)換到Microsoft SQL Server的客戶-服務(wù)器環(huán)境。Microsoft Office 2000中的Access 2000 Upsizing Wizard可實(shí)現(xiàn)將數(shù)據(jù)表和查詢轉(zhuǎn)移到SQL Server 7.0中。如果您用的是Access的較早的版本,您可以先將它升級(jí)為Access 2000,然后再使用其中的Upsizing Wizard,從而將您的應(yīng)用移植到SQL Server中。 



如果您并不太愿意采用Access 2000 和Upsizing Wizard來實(shí)現(xiàn)移植,本文可以作為將Access 2000移植到SQL Server的一個(gè)指南。轉(zhuǎn)移一個(gè)Access上的應(yīng)用首先需要將數(shù)據(jù)轉(zhuǎn)移到SQL Server,然后將查詢轉(zhuǎn)移進(jìn)數(shù)據(jù)庫(kù),或是轉(zhuǎn)移為SQL文件以備稍后執(zhí)行。最后要采取的步驟是移植應(yīng)用程序。 

數(shù)據(jù)庫(kù)移植中用到的SQL Server 工具 

SQL Server管理器(SQL Server Enterprise Manager) 
SQL Server管理器 允許對(duì)SQL Server以及SQL Server中的對(duì)象進(jìn)行企業(yè)級(jí)的配置和管理。SQL Server管理器提供一個(gè)強(qiáng)有力的scheduling引擎,高度的容錯(cuò)力和一個(gè)嵌入式的復(fù)制管理界面。使用SQL Server管理器可以實(shí)現(xiàn)以下功能: 

管理連接和用戶許可 
創(chuàng)建腳本程序 
管理SQL Server對(duì)象的備份 
備份數(shù)據(jù)和事務(wù)處理日志 
管理表、視圖、存儲(chǔ)過程、觸發(fā)器、索引、規(guī)則、默認(rèn)值以及用戶定義的數(shù)據(jù)類型 
建立全文本索引、數(shù)據(jù)庫(kù)圖表和數(shù)據(jù)庫(kù)維護(hù)計(jì)劃 
輸入和輸出數(shù)據(jù) 
轉(zhuǎn)換數(shù)據(jù) 
執(zhí)行各種網(wǎng)絡(luò)管理任務(wù) 

在以Microsoft Windows NT為操作系統(tǒng)的計(jì)算機(jī)中,SQL Server Manager由SQL Server Setup進(jìn)行安裝,并被默認(rèn)為服務(wù)器組件,而在運(yùn)行著Windows NT 和Microsoft Windows 95的機(jī)器上,它將被默認(rèn)為客戶方組件。您將從SQL Server Manager的圖形用戶界面中啟動(dòng)數(shù)據(jù)轉(zhuǎn)移服務(wù)(DTS,Data Transformation Services)。 


數(shù)據(jù)轉(zhuǎn)移服務(wù)(Data Transformation Services ,DTS) 
數(shù)據(jù)轉(zhuǎn)移服務(wù)允許您在多種異構(gòu)數(shù)據(jù)源之間輸入和輸出數(shù)據(jù),這些數(shù)據(jù)源采用基于數(shù)據(jù)庫(kù)的OLE體系結(jié)構(gòu);或在使用SQL Server 7.0的多個(gè)計(jì)算機(jī)之間轉(zhuǎn)移數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象;您還可以通過運(yùn)用數(shù)據(jù)轉(zhuǎn)移服務(wù),更便捷地在一個(gè)在線事務(wù)處理系統(tǒng)(OLTP)中建立數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)中心。 


DTS Wizard允許您交互地創(chuàng)建DTS包,通過OLE DB和ODBC來輸入、輸出、驗(yàn)證和轉(zhuǎn)移數(shù)據(jù)。DTS Wizard還允許您在關(guān)系型數(shù)據(jù)庫(kù)之間拷貝圖解(schema)和數(shù)據(jù)。 

SQL Server 查詢分析器(Query Analyzer) 
SQL Server 查詢分析器是一種圖形化的查詢工具,通過它您可以分析一個(gè)查詢,同時(shí)執(zhí)行多個(gè)查詢,查看數(shù)據(jù)和獲取索引建議。SQL Server 查詢分析器提供了showplan選項(xiàng),可用來顯示SQL Server查詢優(yōu)化器所選擇的數(shù)據(jù)提取方法。 

SQL Server Profiler 
SQL Server Profiler可以實(shí)時(shí)地捕獲數(shù)據(jù)庫(kù)服務(wù)器活動(dòng)的連續(xù)記錄。SQL Server Profiler允許您監(jiān)控SQL Server產(chǎn)生的事件,過濾基于用戶指定標(biāo)準(zhǔn)的事件,或?qū)⒉僮鞑襟E輸出到屏幕、文件或數(shù)據(jù)表。運(yùn)用SQL Server Profiler,您可以重新執(zhí)行所捕獲的上一次操作。這種工具可以幫助應(yīng)用程序開發(fā)者識(shí)別那些可能會(huì)降低應(yīng)用程序性能的事務(wù)處理。在將一個(gè)基于文件體系結(jié)構(gòu)的應(yīng)用程序移植到客戶/服務(wù)器結(jié)構(gòu)中時(shí)該特性是很有用的,因?yàn)樗淖詈笠徊桨▽?duì)面向新的客戶/服務(wù)器環(huán)境的應(yīng)用程序進(jìn)行優(yōu)化。 


轉(zhuǎn)移表和數(shù)據(jù) 
使用DTS Wizard將您的Access數(shù)據(jù)轉(zhuǎn)移到SQL Server,可采取以下步驟: 

在 SQL Server Manager(Enterprise Manager)的工具菜單中,鼠標(biāo)指向“Data Transformation Services”, 然后點(diǎn)擊“Import Data.” 
在“選擇數(shù)據(jù)源”( Choose a Data Source)的對(duì)話窗口中,選擇Microsoft Access為數(shù)據(jù)源,然后輸入您的.mdb文件名(mdb為文件擴(kuò)展名)或者選擇瀏覽文件。 
在“選擇數(shù)據(jù)目標(biāo)”(Choose a Destination)的對(duì)話窗口中,選擇“Microsoft OLE DB Provider for SQL Server”,再選擇好數(shù)據(jù)庫(kù)服務(wù)器,然后點(diǎn)擊所需的認(rèn)證模式。 
在“指定表備份或查詢”( Specify Table Copy or Query)的對(duì)話窗口中,點(diǎn)擊“拷貝表”(Copy tables)。 
在“選擇數(shù)據(jù)源”的對(duì)話窗口中,點(diǎn)擊“選擇所有項(xiàng)”( Select All)。 


移植Microsoft Access查詢 
您可以將Access的查詢以下面的格式之一轉(zhuǎn)移至SQL Server中: 

事務(wù)處理SQL腳本程序(Transact-SQL s cripts ) 
事務(wù)處理SQL語句通常是由數(shù)據(jù)庫(kù)程序調(diào)用的,但是您也可以使用SQL Server 7.0中包含的SQL Server 查詢分析器直接運(yùn)行它們。SQL Server 查詢分析器可幫助開發(fā)者測(cè)試事務(wù)處理SQL語句,或運(yùn)行那些執(zhí)行查詢處理、數(shù)據(jù)操作(插入,修改,刪除)和數(shù)據(jù)定義(創(chuàng)建表)的事務(wù)處理SQL語句。 


存儲(chǔ)過程(Stored procedures ) 
開發(fā)者可以將大部分產(chǎn)生自Access查詢(查找,插入,修改,刪除)的事務(wù)處理SQL語句轉(zhuǎn)移至存儲(chǔ)過程。用事務(wù)處理SQL語句書寫的存儲(chǔ)過程可以用來對(duì)您的數(shù)據(jù)存取打包,并使之標(biāo)準(zhǔn)化,而且存儲(chǔ)過程實(shí)際上是存儲(chǔ)在數(shù)據(jù)庫(kù)中的。存儲(chǔ)過程可以帶參數(shù),也可不帶參數(shù),可以由數(shù)據(jù)庫(kù)程序調(diào)用或者由SQL Server查詢分析器手動(dòng)執(zhí)行。 

視圖(Views ) 
視圖是從一個(gè)或多個(gè)表中顯示特定的行和列的虛擬表。它們?cè)试S用戶可以不直接執(zhí)行構(gòu)成查詢基礎(chǔ)的復(fù)雜連接而建立查詢。視圖不支持參數(shù)的使用。連接多個(gè)數(shù)據(jù)表的視圖不能用INSERT, UPDATE或 DELETE語句來修改。視圖由事務(wù)處理SQL語句調(diào)用,也可用于SQL Server查詢分析器中運(yùn)行的程序段。SQL Server視圖和SQL-92標(biāo)準(zhǔn)不支持視圖中的ORDER BY排序子句。如欲了解事務(wù)處理SQL,存儲(chǔ)過程和視圖的其他信息,請(qǐng)參閱SQL Server 在線參考書。 


Access查詢類型的SQL Server移植選擇與建議 
一個(gè)SELECT語句可以存儲(chǔ)在事務(wù)處理SQL文件、存儲(chǔ)過程或是視圖中。建立存儲(chǔ)過程是將數(shù)據(jù)庫(kù)應(yīng)用開發(fā)與數(shù)據(jù)庫(kù)設(shè)計(jì)的物理實(shí)施分開的最佳方法。存儲(chǔ)過程可在一處創(chuàng)建而由應(yīng)用程序調(diào)用。 
如果存儲(chǔ)過程所基于的數(shù)據(jù)庫(kù)變化了,而存儲(chǔ)過程經(jīng)過仔細(xì)的修改以反應(yīng)這些變化,則對(duì)存儲(chǔ)過程的調(diào)用將不會(huì)受到破壞。 

交叉表(CROSSTAB) 
交叉表經(jīng)常用于總結(jié)報(bào)表。 

一個(gè)Access的交叉表可以通過SQL程序段、存儲(chǔ)過程或視圖中的事務(wù)處理SQL語句來執(zhí)行。每當(dāng)發(fā)出一個(gè)查詢時(shí),數(shù)據(jù)連接被重現(xiàn)執(zhí)行以確保最近的數(shù)據(jù)得到使用。 

根據(jù)實(shí)際應(yīng)用情況,比較合適的方法是將交叉表中的數(shù)據(jù)存儲(chǔ)為一個(gè)臨時(shí)表(參考下面的MAKE TABLE),臨時(shí)表對(duì)資源的需求比較少,但是臨時(shí)表在建立的同時(shí)只提供對(duì)數(shù)據(jù)的一個(gè)快照(snapshot)。 

創(chuàng)建表(MAKE TABLE) 
Access中的“MAKE TABLE”( 創(chuàng)建表)可以通過事務(wù)處理SQL腳本程序或存儲(chǔ)過程中的事務(wù)處理SQL語言的建表語句“CREATE TABLE”來執(zhí)行。語法如下所示: 
SELECT [ ALL | DISTINCT ] 
[ {TOP integer | TOP integer PERCENT} [ WITH TIES] ] 
select_list> 
[ INTO new_table ] 
[ FROM {table_source>} [,…n] ] 
[ WHERE search_condition> ] 
[ GROUP BY [ALL] group_by_expression [,…n] 
[ WITH { CUBE | ROLLUP } ] 
CREATE TABLE mytable (low int, high int) 

UPDATE(修改) 
UPDATE語句可以存儲(chǔ)在事務(wù)_SQL腳本程序中,然而比較好地執(zhí)行UPDATE語句的方法是創(chuàng)建一個(gè)存儲(chǔ)過程。 

APPEND(添加) 
ALLEND語句可以存儲(chǔ)在事務(wù)_SQL腳本程序中,然而比較好地執(zhí)行APPEND語句的方法是創(chuàng)建一個(gè)存儲(chǔ)過程。 


移植Microsoft Access的查詢到存儲(chǔ)過程和視圖 

每個(gè)Access查詢都必須用以下的一系列語句替換: 
CREATE PROCEDURE NAME_HERE> AS 
 SELECT, UPDATE, DELETE, INSERT, CREATE TABLE statement from Microsoft Access > 
GO 

CREATE VIEW NAME_HERE> AS 
Place (SELECT only, with no parameters) Microsoft Access Query> 
GO 

對(duì)每個(gè)Access查詢應(yīng)執(zhí)行: 

打開Access,然后在SQL Server中,打開SQL Server查詢分析器。 
在Access的數(shù)據(jù)庫(kù)窗口中點(diǎn)擊“Queries”tab鍵,然后點(diǎn)擊“Design”按鈕。 
在“View”菜單上點(diǎn)擊“SQL”按鈕。 
將整個(gè)查詢粘貼到SQL Server查詢分析器中。 
測(cè)試語法,保存事務(wù)處理SQL語句以備后用,或者在數(shù)據(jù)庫(kù)中執(zhí)行這些語句。您可以選擇將事務(wù)處理SQL語句保存到一段腳本程序中。 

移植Microsoft Access查詢到事務(wù)處理SQL語句 

大部分的Access查詢應(yīng)該轉(zhuǎn)換成存儲(chǔ)過程和視圖。然而,有一些應(yīng)用程序開發(fā)者不太常用的語句可以存儲(chǔ)為事務(wù)處理SQL腳本,一種以sql為文件擴(kuò)展名的文本文件。 這些文件可以在SQL Server查詢分析器中運(yùn)行。 

如果您打算將一些Access查詢轉(zhuǎn)換為sql文件的話,可以考慮根據(jù)它們使用的方式有區(qū)別地將這些事務(wù)處理SQL語句分別放在幾個(gè)腳本程序中。例如,您可以將必須以同樣頻率運(yùn)行的事務(wù)處理SQL語句歸類到同一個(gè)腳本中。另一個(gè)腳本中則應(yīng)包含所有只在某些條件下運(yùn)行的事務(wù)處理SQL語句。此外,必須以一定順序執(zhí)行的事務(wù)處理SQL語句應(yīng)當(dāng)歸類到一個(gè)不連續(xù)的腳本中。 

將Access語句轉(zhuǎn)移到事務(wù)處理SQL 文件 

將語句拷貝到SQL Server查詢分析器中 
使用藍(lán)色的多選項(xiàng)圖標(biāo)分析語句 
在適當(dāng)時(shí)候執(zhí)行該語句 

要執(zhí)行Access中的創(chuàng)建表(MAKE TABLE)的查詢?nèi)蝿?wù)的開發(fā)者在SQL Server中有幾種選擇。開發(fā)者可創(chuàng)建下列對(duì)象之一: 

一個(gè)視圖 
視圖具有動(dòng)態(tài)的虛擬表的效果,可提供最近的信息。這是一個(gè)輸入/輸出強(qiáng)化器,因?yàn)槊慨?dāng)發(fā)出一個(gè)查詢時(shí)它都要求對(duì)數(shù)據(jù)表重現(xiàn)建立連接。 

一個(gè)臨時(shí)表 
臨時(shí)表為已連接的用戶會(huì)話建立一個(gè)快照。您可以建立局部的或全局的臨時(shí)表。局部臨時(shí)表只在當(dāng)前會(huì)話中可見,而全局臨時(shí)表則在所有會(huì)話都是可見的。在局部臨時(shí)表的名字前加上單個(gè)數(shù)字的前綴((#table_name)),而在全局臨時(shí)表的名字前加上兩位數(shù)字的前綴(##table_name)。對(duì)臨時(shí)表的查詢執(zhí)行起來非???,因?yàn)樗鼈內(nèi)〉靡粋€(gè)結(jié)果集的時(shí)候通常只用一個(gè)表,而不是將多個(gè)表動(dòng)態(tài)地連接在一起來。 
如欲了解臨時(shí)表的其他信息,請(qǐng)參閱SQL Server在線參考書。 

SQL Server 7.0中的數(shù)據(jù)轉(zhuǎn)換服務(wù)(DTS)允許您通過創(chuàng)建包來實(shí)現(xiàn)臨時(shí)表建立的標(biāo)準(zhǔn)化、自動(dòng)化和進(jìn)度安排。例如,當(dāng)您移植Access 2.0中的Northwind 范例數(shù)據(jù)庫(kù)時(shí),用于季度數(shù)據(jù)報(bào)表的交叉表可轉(zhuǎn)變?yōu)橐粋€(gè)視圖或者一個(gè)可在規(guī)范基礎(chǔ)上建立臨時(shí)表的數(shù)據(jù)轉(zhuǎn)換。如欲了解關(guān)于DTS的其他信息,請(qǐng)參閱SQL Server在線參考書。 

其他設(shè)計(jì)上的考慮 
下面是當(dāng)您將您的Access應(yīng)用移植到SQL Server時(shí)必須考慮的一些其他問題: 

使用參數(shù) 
帶參數(shù)的SQL Server存儲(chǔ)過程需要一種不同于Access查詢的語法格式,例如: 
Access 2.0格式: 
查詢名:Employee Sales By Country, in NWIND.mdb: 

PARAMETERS [Beginning Date] DateTime, [Ending Date] DateTime; 
SELECT Orders.[Order ID], [Last Name]  ", "  [First Name] AS Salesperson, Employees.Country, Orders.[Shipped Date], [Order Subtotals].Subtotal AS [Sale Amount] 
FROM Employees INNER JOIN (Orders INNER JOIN [Order Subtotals] ON Orders.[Order ID] = [Order Subtotals].[Order ID]) ON Employees. = Orders. 
WHERE (((Orders.[Shipped Date]) Between [Beginning Date] And [Ending Date])) 
ORDER BY [Last Name]  ", "  [First Name], Employees.Country, Orders.[Shipped Date]; 

SQL Server 7.0格式: 

CREATE PROCEDURE EMP_SALES_BY_COUNTRY 
@BeginningDate datetime, 
@EndingDate datetime 
AS 
SELECT Orders.[Order ID], [Last Name] + ", " + [First Name] AS Salesperson, Employees.Country, 
Orders.[Shipped Date], [Order Subtotals].Subtotal AS [Sale Amount] 
FROM Employees INNER JOIN (Orders INNER J

標(biāo)簽:仙桃 蘭州 衡水 崇左 黃山 銅川 湖南 湘潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《將Access數(shù)據(jù)庫(kù)移植到SQL Server》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266