將Access數據庫移植到SQL Server。本站提示廣大學習愛好者:(將Access數據庫移植到SQL Server)文章只能為提供參考,不一定能成為您想要的結果。以下是將Access數據庫移植到SQL Server正文
跟著用戶關於企業級高機能數據庫的需求的增加,用戶經常要從Microsoft Access Jet引擎的文件-辦事器情況下轉換到Microsoft SQL Server的客戶-辦事器情況。Microsoft Office 2000中的Access 2000 Upsizing Wizard可完成將數據表和查詢轉移到SQL Server 7.0中。假如您用的是Access的較早的版本,您可以先將它進級為Access 2000,然後再應用個中的Upsizing Wizard,從而將您的運用移植到SQL Server中。
假如您其實不太情願采取Access 2000 和Upsizing Wizard來完成移植,本文可以作為將Access 2000移植到SQL Server的一個指南。轉移一個Access上的運用起首須要將數據轉移到SQL Server,然後將查詢轉移進數據庫,或是轉移為SQL文件以備稍後履行。最初要采用的步調是移植運用法式。
數據庫移植頂用到的SQL Server 對象
SQL Server治理器(SQL Server Enterprise Manager)
SQL Server治理器 許可對SQL Server和SQL Server中的對象停止企業級的設置裝備擺設和治理。SQL Server治理器供給一個強無力的scheduling引擎,高度的容錯力和一個嵌入式的復制治理界面。應用SQL Server治理器可以完成以下功效:
治理銜接和用戶允許
創立劇本法式
治理SQL Server對象的備份
備份數據和事務處置日記
治理表、視圖、存儲進程、觸發器、索引、規矩、默許值和用戶界說的數據類型
樹立全文本索引、數據庫圖表和數據庫保護籌劃
輸出和輸入數據
轉換數據
履行各類收集治理義務
在以Microsoft Windows NT為操作體系的盤算機中,SQL Server Manager由SQL Server Setup停止裝置,並被默許為辦事器組件,而在運轉著Windows NT 和Microsoft Windows 95的機械上,它將被默許為客戶方組件。您將從SQL Server Manager的圖形用戶界面中啟動數據轉移辦事(DTS,Data Transformation Services)。
數據轉移辦事(Data Transformation Services ,DTS)
數據轉移辦事許可您在多種異構數據源之間輸出和輸入數據,這些數據源采取基於數據庫的OLE系統構造;或在應用SQL Server 7.0的多個盤算機之間轉移數據庫和數據庫對象;您還可以經由過程應用數據轉移辦事,更便捷地在一個在線事務處置體系(OLTP)中樹立數據倉庫和數據中間。
DTS Wizard許可您交互地創立DTS包,經由過程OLE DB和ODBC來輸出、輸入、驗證和轉移數據。DTS Wizard還許可您在關系型數據庫之間拷貝圖解(schema)和數據。
SQL Server 查詢剖析器(Query Analyzer)
SQL Server 查詢剖析器是一種圖形化的查詢對象,經由過程它您可以剖析一個查詢,同時履行多個查詢,檢查數據和獲得索引建議。SQL Server 查詢剖析器供給了showplan選項,可用來顯示SQL Server查詢優化器所選擇的數據提取辦法。
SQL Server Profiler
SQL Server Profiler可以及時地捕捉數據庫辦事器運動的持續記載。SQL Server Profiler許可您監控SQL Server發生的事宜,過濾基於用戶指定尺度的事宜,或將操作步調輸入到屏幕、文件或數據表。應用SQL Server Profiler,您可以從新履行所捕捉的上一次操作。這類對象可以贊助運用法式開辟者辨認那些能夠會下降運用法式機能的事務處置。在將一個基於文件系統構造的運用法式移植到客戶/辦事器構造中時該特征是很有效的,由於它的最初一步包含對面向新的客戶/辦事器情況的運用法式停止優化。
轉移表和數據
應用DTS Wizard將您的Access數據轉移到SQL Server,可采用以下步調:
在 SQL Server Manager(Enterprise Manager)的對象菜單中,鼠標指向“Data Transformation Services”, 然後點擊“Import Data.”
在“選擇數據源”( Choose a Data Source)的對話窗口中,選擇Microsoft Access為數據源,然後輸出您的.mdb文件名(mdb為文件擴大名)或許選擇閱讀文件。
在“選擇數據目的”(Choose a Destination)的對話窗口中,選擇“Microsoft OLE DB Provider for SQL Server”,再選擇好數據庫辦事器,然後點擊所需的認證形式。
在“指定表備份或查詢”( Specify Table Copy or Query)的對話窗口中,點擊“拷貝表”(Copy tables)。
在“選擇數據源”的對話窗口中,點擊“選擇一切項”( Select All)。
移植Microsoft Access查詢
您可以將Access的查詢以上面的格局之一轉移至SQL Server中:
事務處置SQL劇本法式(Transact-SQL s cripts )
事務處置SQL語句平日是由數據庫法式挪用的,然則您也能夠應用SQL Server 7.0中包括的SQL Server 查詢剖析器直接運轉它們。SQL Server 查詢剖析器可贊助開辟者測試事務處置SQL語句,或運轉那些履行查詢處置、數據操作(拔出,修正,刪除)和數據界說(創立表)的事務處置SQL語句。
存儲進程(Stored procedures )
開辟者可以將年夜部門發生自Access查詢(查找,拔出,修正,刪除)的事務處置SQL語句轉移至存儲進程。用事務處置SQL語句書寫的存儲進程可以用來對您的數據存取打包,並使之尺度化,並且存儲進程現實上是存儲在數據庫中的。存儲進程可以帶參數,也可不帶參數,可以由數據庫法式挪用或許由SQL Server查詢剖析器手動履行。
視圖(Views )
視圖是從一個或多個表中顯示特定的行和列的虛擬表。它們許可用戶可以不直接履行組成查詢基本的龐雜銜接而樹立查詢。視圖不支撐參數的應用。銜接多個數據表的視圖不克不及用INSERT, UPDATE或 DELETE語句來修正。視圖由事務處置SQL語句挪用,也可用於SQL Server查詢剖析器中運轉的法式段。SQL Server視圖和SQL-92尺度不支撐視圖中的ORDER BY排序子句。如欲懂得事務處置SQL,存儲進程和視圖的其他信息,請參閱SQL Server 在線參考書。
Access查詢類型的SQL Server移植選擇與建議
一個SELECT語句可以存儲在事務處置SQL文件、存儲進程或是視圖中。樹立存儲進程是將數據庫運用開辟與數據庫設計的物理實行離開的最好辦法。存儲進程可在一處創立而由運用法式挪用。
假如存儲進程所基於的數據庫變更了,而存儲進程經由細心的修正以反響這些變更,則對存儲進程的挪用將不會遭到損壞。
穿插表(CROSSTAB)
穿插表常常用於總結報表。
一個Access的穿插表可以經由過程SQL法式段、存儲進程或視圖中的事務處置SQL語句來履行。每當收回一個查詢時,數據銜接被重現履行以確保比來的數據獲得應用。
依據現實運用情形,比擬適合的辦法是將穿插表中的數據存儲為一個暫時表(參考上面的MAKE TABLE),暫時表對資本的需求比擬少,然則暫時表在樹立的同時只供給對數據的一個快照(snapshot)。
創立表(MAKE TABLE)
Access中的“MAKE TABLE”( 創立表)可以經由過程事務處置SQL劇本法式或存儲進程中的事務處置SQL說話的建表語句“CREATE TABLE”來履行。語法以下所示:
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語句可以存儲在事務_SQL劇本法式中,但是比擬好地履行UPDATE語句的辦法是創立一個存儲進程。
APPEND(添加)
ALLEND語句可以存儲在事務_SQL劇本法式中,但是比擬好地履行APPEND語句的辦法是創立一個存儲進程。
移植Microsoft Access的查詢到存儲進程和視圖
每一個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
對每一個Access查詢應履行:
翻開Access,然後在SQL Server中,翻開SQL Server查詢剖析器。
在Access的數據庫窗口中點擊“Queries”tab鍵,然後點擊“Design”按鈕。
在“View”菜單上點擊“SQL”按鈕。
將全部查詢粘貼到SQL Server查詢剖析器中。
測試語法,保留事務處置SQL語句以備後用,或許在數據庫中履行這些語句。您可以選擇將事務處置SQL語句保留到一段劇本法式中。
移植Microsoft Access查詢到事務處置SQL語句
年夜部門的Access查詢應當轉換成存儲進程和視圖。但是,有一些運用法式開辟者不太經常使用的語句可以存儲為事務處置SQL劇本,一種以sql為文件擴大名的文本文件。 這些文件可以在SQL Server查詢剖析器中運轉。
假如您盤算將一些Access查詢轉換為sql文件的話,可以斟酌依據它們應用的方法有差別地將這些事務處置SQL語句分離放在幾個劇本法式中。例如,您可以將必需以異樣頻率運轉的事務處置SQL語句歸類到統一個劇本中。另外一個劇本中則應包括一切只在某些前提下運轉的事務處置SQL語句。另外,必需以必定次序履行的事務處置SQL語句應該歸類到一個不持續的劇本中。
將Access語句轉移到事務處置SQL 文件
將語句拷貝到SQL Server查詢剖析器中
應用藍色的多選項圖標剖析語句
在恰當時刻履行該語句
要履行Access中的創立表(MAKE TABLE)的查詢義務的開辟者在SQL Server中有幾種選擇。開辟者可創立以下對象之一:
一個視圖
視圖具有靜態的虛擬表的後果,可供給比來的信息。這是一個輸出/輸入強化器,由於每當收回一個查詢時它都請求對數據表重現樹立銜接。
一個暫時表
暫時表為已銜接的用戶會話樹立一個快照。您可以樹立部分的或全局的暫時表。部分暫時表只在以後會話中可見,而全局暫時表則在一切會話都是可見的。在部分暫時表的名字前加上單個數字的前綴((#table_name)),而在全局暫時表的名字前加上兩位數字的前綴(##table_name)。對暫時表的查詢履行起來異常快,由於它們獲得一個成果集的時刻平日只用一個表,而不是將多個表靜態地銜接在一路來。
如欲懂得暫時表的其他信息,請參閱SQL Server在線參考書。
SQL Server 7.0中的數據轉換辦事(DTS)許可您經由過程創立包來完成暫時表樹立的尺度化、主動化和進度支配。例如,當您移植Access 2.0中的Northwind 典范數據庫時,用於季度數據報表的穿插表可改變為一個視圖或許一個可在標准基本上樹立暫時表的數據轉換。如欲懂得關於DTS的其他信息,請參閱SQL Server在線參考書。
其他設計上的斟酌
上面是當您將您的Access運用移植到SQL Server時必需斟酌的一些其他成績:
應用參數
帶參數的SQL Server存儲進程須要一種分歧於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