当对企业级的高性能的数据库的要求和需求增加时,客户有时需要从文件?服务器环境的Microsoft Access Jet引擎迁移到客户?服务器环境的Microsoft SQL Server。随同微软Office 2000发行的Access 2000 Upsizing Wizard(升级向导)可以把Access表格和查询迁移到SQL Server 7.0。如果你使用Access的早期版本,你也可以通过升级到Access 2000,并使用升级向导把你的应用程序移植到SQL SERVER。
如果你不喜欢使用Access 2000和升级向导进行移植,那么这篇文章作为向迁移一个Access应用程序到SQL Server。要迁移Access应用程序,你需要首先把数据迁移到SQL Server 7.0,然后把Access查询移植到数据库或SQL文件,最后是移植应用程序。
移植中使用的SQL Server工具
SQL Server中的一些工具可以帮助你移植Access数据和应用程序
SQL Server企业管理器
SQL Server企业管理器允许对SQL Server和SQL Server对象的企业范围的设置和管理。SQL Server企业管理器提供了一个强大的任务安排引擎、管理警告能力、以及内建的复制管理界面。你还可以用SQL Server企业管理器来:
管理登录和用户权限 创建脚本 管理SQL SERVER对象的备份 备份数据库和事务日志 管理表、视图、存储过程、触发器、索引、规则、缺省设定和自定义数据类型
创建全文索引、数据库图表和数据库维护方案 输入输出数据 转换数据 执行不同的Web网络管理任务 缺省情况下,SQL Server企业管理器被SQL Server作为服务器软件的一部分安装在运行Windows NT操作系统的计算机上,同时作为客户软件的一部分安装在运行Windows NT和Windows 95操作系统的计算机上。你很可能要从SQL Server企业管理器的图形用户界面启动数据转换服务(Data Transformation Services,DTS)。
数据转换服务(DTS)
数据转换服务允许你在使用一个OLE DB结构的多个数据源之间输入和输出数据,这样的数据源有Microsoft Excel电子表格,以及在运行SQL Server 7.0的多台计算机之间执行数据库和数据库对象的传输。你还可以用DTS来执行数据转换,以便用它来通过一个在线事务处理系统建立数据仓库和数据商场。
DTS向导允许你交互的创建使用OLE DB和ODBC来进行输入、输出、确认和不同数据的转换的DTS包。向导还允许你在相关数据库之间拷贝计划和数据。
SQL SERVER查询分析器(Server Query Analyzer)
SQL SERVER查询分析器是一个图形化查询工具,它允许你可视化的分析一个查询方案,同时执行多重查询、查看数据、获得索引建议。SQL Server查询分析器提供显示方案(showplan)选项,可以用它来报告SQL Server查询优化器选择的数据获取方案。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)SQL Server轮廓(Server Profiler)
SQL SERVER轮廓实时捕捉服务器活动的连续的记录。SQL Server轮廓允许你监控通过SQL Server产生的事件,过滤基于用户指定准则的事件和直接跟踪到显示器、文件或者表的输出。使用SQL Server轮廓,你可以重放先前的捕捉记录。这个工具帮助应用程序开发人员鉴别可能使应用程序性能恶化的事务。当从一个基于文件的体系结构移植一个应用程序到一个基于客户/服务器的体系结构时,它是很有帮助的,因为最后的步骤包含针对应用程序的新客户/服务器环境优化该应用程序的操作。
移动表格和数据
使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤:
在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation
Services(数据转换服务),然后选择Import Data(导入数据)。
在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as th e Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。
在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证方式。
在Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables(复制表格)。
在Select Source Tables(选择源表格)对话框中,单击Select All(全部选定)。
移植Microsoft Access查询
你必须以这些格式之一迁移你现有的Access查询到SQL Server:
Transact-SQL脚本 Transact-SQL语句通常从数据库程序被调用,但是你可以使用包含在SQL Server
7.0中的SQL Server查询分析器在数据库中直接运行它们。SQL Server查询分析器帮助开发者针对开发数据库测试Transact-SQL语句,或运行Transact-SQL语句执行查询、数据操作(INSERT、UPDATE、DELETE)或数据定义(CREATE TABLE)。
存储过程 开发者可以把大多数源于Access查询(SELECT、INSERT、UPDATE和DELETE)的Tr ansact-SQL语句转换为存储过程。用Transact-SQL写的存储过程可以用来封装和标准化你的数据访问,存储过程实际上存储在数据库内。存储过程能带或者不带参数运行,可以从数据库程序调用,也可以从SQL Server查询分析器手动执行。
视图 视图作为虚拟的表格从一个或更多的表格显露指定的行和列。它们允许用户创建查询而不用直接实现那些复杂的底层查询。视图不支持参数。向视图加入一个更多的表格不能使用INSERT、UPDATE、或DELETE语句修改。视图可以用Transact-S QL语句调用,并且也可以在SQL Server查询分析器中的*.scripts中使用。SQL S erver视图和SQL-92标准不支持视图中的ORDER BY子句。
更多关于Transact-SQL、存储过程或者视图的信息,见SQL Server Books Onlin e。
Access查询类型
SQL Server移植选项和注释
一个SELECT语句可以被存储在Transact-SQL文件、存储过程或者视图中。
创建存储过程是实现把数据库应用程序开发同数据库设计的物理实现分离的最好方法。存储过程在一个地方创建,并且被应用程序调用。
如果底层数据库改变了,并且存储过程被仔细的修改以反映这些变化,则对存储过程的调用不会被“中断”。
CROSSTAB 交叉表经常用于摘要报告。
Access交叉表可以在SQL脚本中作为Transact-SQL SELECT语句实现,也可以作为存储过程或者一个视图实现。每次一个查询被列举的时候,数据节点将会重执行,请确保使用最新的数据。
根据不同的数据库需要,也许把交叉表中的数据存储为临时表比较合适(请参看下一行的MAKE TABLE)。临时表只需要很少的资源,但是只提供了创建临时表的时刻,数据的一个照相。
MAKE TABLE
Access的MAKE TABLE可以在Transact-SQL脚本或者存储过程中作为Transact-SQ L的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语句可以被存储在Transact-SQL脚本中;但是,实现UPDATE语句的推荐方法是创建一个存储过程。
APPEND
APPEND语句可以被存储在Transact-SQL脚本中;但是,实现APPEND语句的推荐方法是创建一个存储过程。
DELETE
DELETE语句可以被存储在Transact-SQL脚本中;但是,实现DELETE语句的推荐方法是创建一个存储过程。
把微软Access查询迁移到存储过程和视图
每个Access查询必须被置入这集合语句的集合:
CREATE PROCEDURE AS
SELECT, UPDATE, DELETE, INSERT, CREATE TABLE statement from Microsof t Access
GO
CREATE VIEW AS
GO
对每个Access查询:
打开Access,然后在SQL Server上打开SQL Server查询分析器。
在Access中,在数据库窗口,单击Queries(查询)标签,然后单击Design(设计)。
在View(视图)菜单上,单击SQL。
粘贴整个查询到SQL Server查询分析器。
测试语法和并且为以后使用保存Transact-SQL语句,或者在数据库中运行语句。
你可以有选择的保存Transact-SQL为脚本。
移植微软Access查询到Transact-SQL脚本
大多数Access查询应该被翻译成存储过程和视图。然而,应用程序开发人员很少运行一些语句可以作为一个Transact-SQL脚本存储,这是一个文件扩展名为.sql 的文本文件。这些文件可以从SQL Server查询分析器中运行。
如果你计划把你的一些Access查询转换为.sql文件,考虑把Transact-SQL语句分成几个脚本,具体操作要根据如何使用这些语句而定。例如,你可以把那些必须以同一频率运行的Transact-SQL语句组合到一个脚本中。另一个脚本可能包含那些只能在特定条件下运行的Transact-SQL语句。另外,那些必须按一定的顺序执行的Transact-SQL语句应该组合在一个离散脚本中。
要把一个Access语句转换为Transact-SQL文件:
复制该语句到SQL Server查询分析器。
使用蓝色的检查标记图标解析语句。
如果合适就执行语句。
MAKE TABLE 语句在SQL Server中有几种转换方式。开发人员可以创建下面任意一种:
视图 视图创建一个动态的、提供最新信息的虚拟临时表格的效果。这是I/O密集的,因为每次列举一个查询时就要重新加入数据表。
临时表。
临时表为一个连接用户会话创建一个数据快照。你可以创建局部和全局临时表。
局部临时表只能在当前会话中是可视的;全局临时表对所有会话都是可视的。局部临时表的前缀用单一的数字符号命名(#table_name),全局临时表的前缀用两个数字符号命名(##table_name)。对临时表的查询运行得很快,因为它们通常只使用一个表格而不是动态的连接几个表来获得一个结果集。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)关于临时表的更多信息,见SQL Server Books Online。
在SQL SERVER7.0中数据变换服务(DTS)允许你通过创建包实现临时表创建的标准化、自动化和定期计划执行。
例如,当你移植Access 2.0 Northwind示例数据库时,为季度数据报告而创建的交叉表被转换为一个视图或者是在常规基础上创建临时表的数据转换。关于DTS的更多信息,参见SQL Server Books Online。
附加设计考虑
下面是一些当你把你的Access应用程序移植到SQL Server时应该考虑的问题。