将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

(0)

相关推荐

  • 将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 

  • Access数据库升级为SQL数据库的注意事项和方法

    很多Access和SQL Server开发人员都经常面临着将一个Access数据库升级到SQL Server数据库的问题.由于存在现有的Access升级向导,这一转变的过程就会变得相当简单,尤其是当你建立一个与SQL Server数据相联系的ADP的时候.然而,向导并不是十全十美的,需要解决的问题还是大有存在. 首先,有些对象并不是简单的升级,所以这时你不得不人为地处理.第二,很多Access特性──比如一些查询类型,对象,以及特定的数据类型在你没有做好升级之前的准备的情况下就会导致错误的产生.

  • ASP.NET2.0数据库入门之SQL Server

    因为Access并不真正为高性能应用程序服务,所以一个希望有多个同时连接用户的站点必须部署一个比Access更适合的数据源.本文将讲述如何从Microsoft SQL Server(一种企业级RDMS)中获取数据. SQL Server完全版包括了三个部分.第一个是引擎,用于实际组织数据以及针对命令响应进行读取和写入操作.第二个是开发人员的工具软件包,用于对数据库进行操作,例如Query Analyzer和Data Transformation Services.最后一个是用于管理数据的工具,包

  • MSSQL2005在networkservice权限运行附加数据库报(Microsoft SQL Server,错误: 5120)

    附加数据库出错: 无法打开物理文件 "XXXXXXXXXXXXX".操作系统错误 5:"5(拒绝访问.)". (Microsoft SQL Server,错误: 5120) 解决方法:目录(即文件夹)权限不够,将SQLServer2005MSSQLUser$计算机名$MSSQLSERVER用户组加入,改为完全控制,注意一定要是完全控制才可以.

  • 如何在SQL Server 2005数据库中导入SQL Server 2008的数据

    1. 生成for 2005版本的数据库脚本 2008 的manger studio  -- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例  -- 右键要转到2005的库  -- 任务  -- 生成脚本  -- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2005的库  -- 勾选"为所选数据库中的所有对象编写脚本"5-- 在接下来的"选择脚本选项"中, 将"编写创建数据库的

  • java连接mysql数据库 java连接sql server数据库

    在java的应用中,我们经常会对数据库进行必要的操作,下来我们就了解一下如何用java连接mysql数据库 以及java连接sql server数据库 一.mysql import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestOne {

  • Access 导入到SQL Server 2005的方法小结

    方法一: 名称:DTS(这个在MSSQL2000里边也有) 操作:在命令提示符窗口中运行 DTSWizard.exe SQL Server 导入和导出向导提供了生成 Microsoft SQL Server 2005 Integration Services (SSIS) 包最简单的方法.SQL Server 导入和导出向导可以访问各种数据源.可以向下列源复制数据或从其中复制数据: ·Microsoft SQL Server ·文本文件 ·Microsoft Office Access ·Mic

  • SQL SERVER 与ACCESS、EXCEL的数据转换方法分享

    在Transact-SQL语句中,我们主要使用OpenDataSource函数.OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助.利用下述方法,可以十分容易地实现SQL SERVER.ACCESS.EXCEL数据转换,详细说明如下: 一.SQL SERVER 和ACCESS的数据导入导出 常规的数据导入导出: 使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤: 1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Tra

  • SQL SERVER 与ACCESS、EXCEL的数据转换

    熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作.在Transact-SQL语句中,我们主要使用OpenDataSource函数.OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助.利用下述方法,可以十分容易地实现SQL SERVER.ACCESS.EXCEL数据转换,详细说明如下: 一.SQL SERVER 和ACCESS的数据导入导出 常规的数据导入导出: 使用DTS向导

  • ASP通过ODBC连接SQL Server 2008数据库的方法

    创建数据库连接文件[dsn文件]的方法 创建 ODBC DSN 文件 在创建数据库脚本之前,必须提供一条使 ADO 定位.标识和与数据库通讯的途径.数据库驱动程序使用 Data Source Name (DSN) 定位和标识特定的 ODBC 兼容数据库,将信息从 Web 应用程序传递给数据库.典型情况下,DSN 包含数据库配置.用户安全性和定位信息,且可以获取 Windows NT 注册表项中或文本文件的表格. 通过 ODBC,您可以选择希望创建的 DSN 的类型:用户.系统或文件.用户和系统

随机推荐