必威注册电子书籍教程中心网文荟萃客户留言繁體中文
设为首页
加入收藏
联系必威注册
您当前的位置:92动力网 -> 教程中心 -> 基础教程 -> Access -> 教程内容 退出登录 用户管理
栏目导航
· 输入法· QQ相关
· 注册表· MSN相关
· 硬件指南· Excel
· Word· WPS
· OfficeXP· Access
· Outlook· Powerpoint
热门教程
· 如何在Visual Basic...
· 使用Visual Basic操...
· 使用VB6.0设计Activ...
· VB动态调用外部函数...
· 建立一个程序员自己...
· 如何编写高质量的VB...
· [图文] 为更新到Visual Bas...
· 再谈在VB中调用VC++...
· 用VB语言编程实现JP...
· 用DTS实现SQL数据库...
相关教程
· [图文] Win2000 server上安...
· 将sql server中的数...
· 启动和停止WebLogic...
· 启动和停止WebLogic...
· 设计模式之Observer...
· DB2 UDB 7、ORACLE ...
· 给大家一个在SERVER...
· 2001-01-31 Borland...
· 基于ADSI的NT帐号及...
· 我的小木马---serve...

将Access数据库移植到SQL Server
作者:Admin聽聽来源:ASP教程聽聽发布时间:2004-3-11 20:20:19聽聽发布人:admin

减小字体 增大字体


随着用户对于企业级高性能数据库的需求的增长,用户时常要从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]聽]聽

[聽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的数据库窗口中点击“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
[] [返回上一页] [打 印] [收 藏]
∷相关教程评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图 - 管理登录
Copyright 2019 必威注册. All Rights Reserved .
浙ICP备05047688号