摘要
本文描述了將Access數據庫轉換到SQL Server 數據庫的過程和工具 簡介 隨著用戶對於企業級高性能數據庫的需求的增長
用戶時常要從Microsoft Access Jet引擎的文件
服務器環境下轉換到Microsoft SQL Server的客戶
服務器環境
Microsoft Office
中的Access
Upsizing Wizard可實現將數據表和查詢轉移到SQL Server
中
如果您用的是Access的較早的版本
您可以先將它升級為Access
然後再使用其中的Upsizing Wizard
從而將您的應用移植到SQL Server中
如果您並不太願意采用Access
和Upsizing Wizard來實現移植
本文可以作為將Access
移植到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
的機器上
它將被默認為客戶方組件
您將從SQL Server Manager的圖形用戶界面中啟動數據轉移服務(DTS
Data Transformation Services)
數據轉移服務(Data Transformation Services
DTS) 數據轉移服務允許您在多種異構數據源之間輸入和輸出數據
這些數據源采用基於數據庫的OLE體系結構
或在使用SQL Server
的多個計算機之間轉移數據庫和數據庫對象
您還可以通過運用數據轉移服務
更便捷地在一個在線事務處理系統(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 scripts ) 事務處理SQL語句通常是由數據庫程序調用的
但是您也可以使用SQL Server
中包含的SQL Server 查詢分析器直接運行它們
SQL Server 查詢分析器可幫助開發者測試事務處理SQL語句
或運行那些執行查詢處理
數據操作(插入
修改
刪除)和數據定義(創建表)的事務處理SQL語句
存儲過程(Stored procedures ) 開發者可以將大部分產生自Access查詢(查找
插入
修改
刪除)的事務處理SQL語句轉移至存儲過程
用事務處理SQL語句書寫的存儲過程可以用來對您的數據存取打包
並使之標准化
而且存儲過程實際上是存儲在數據庫中的
存儲過程可以帶參數
也可不帶參數
可以由數據庫程序調用或者由SQL Server查詢分析器手動執行
視圖(Views ) 視圖是從一個或多個表中顯示特定的行和列的虛擬表
它們允許用戶可以不直接執行構成查詢基礎的復雜連接而建立查詢
視圖不支持參數的使用
連接多個數據表的視圖不能用INSERT
UPDATE或 DELETE語句來修改
視圖由事務處理SQL語句調用
也可用於SQL Server查詢分析器中運行的程序段
SQL Server視圖和SQL
標准不支持視圖中的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] ]
[ INTO new_table ] [ FROM {} […n] ] [ WHERE ] [ 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 AS < SELECT, UPDATE, DELETE, INSERT, CREATE TABLE statement from Microsoft Access > GO CREATE VIEW AS GO 對每個Access查詢應執行 打開Access然後在SQL Server中打開SQL Server查詢分析器 在Access的數據庫窗口中點擊Queriestab鍵然後點擊Design按鈕 在View菜單上點擊SQL按鈕 將整個查詢粘貼到SQL Server查詢分析器中 測試語法保存事務處理SQL語句以備後用或者在數據庫中執行這些語句您可以選擇將事務處理SQL語句保存到一段腳本程序中 移植Microsoft Access查詢到事務處理SQL語句 大部分的Access查詢應該轉換成存儲過程和視圖然而有一些應用程序開發者不太
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22057.html