打印本文 关闭窗口 | |
将Access数据库移植到Microsoft SQL Server 7.0 | |
作者:不详 文章来源:不详 点击数 更新时间:2003/8/22 15:01:20 文章录入:ahui 责任编辑:ahui | |
|
|
摘要:本文描述了将Access数据库转换到SQL Server 数据库的过程和工具 简介 随着用户对于企业级高性能数据库的需求的增长,用户时常要从Microsoft Access Jet引擎的文件-服务器环境下转换到 如果您并不太愿意采用Access 2000 和Upsizing Wizard来实现移植,本文可以作为将Access 2000移植到SQL Server的一 数据库移植中用到的SQL Server 工具 SQL Server管理器(SQL Server Enterprise Manager) SQL Server管理器 允许对SQL Server以及SQL Server中的对象进行企业级的配置和管理。SQL Server管理器提供一个强有 管理连接和用户许可 创建脚本程序 管理SQL Server对象的备份 备份数据和事务处理日志 管理表、视图、存储过程、触发器、索引、规则、默认值以及用户定义的数据类型 建立全文本索引、数据库图表和数据库维护计划 输入和输出数据 转换数据 执行各种网络管理任务 在以Microsoft Windows NT为操作系统的计算机中,SQL Server Manager由SQL Server Setup进行安装,并被默认为服务 数据转移服务(Data Transformation Services ,DTS) 数据转移服务允许您在多种异构数据源之间输入和输出数据,这些数据源采用基于数据库的OLE体系结构;或在使用SQL DTS Wizard允许您交互地创建DTS包,通过OLE DB和ODBC来输入、输出、验证和转移数据。DTS Wizard还允许您在关系型数 SQL Server 查询分析器(Query Analyzer) SQL Server 查询分析器是一种图形化的查询工具,通过它您可以分析一个查询,同时执行多个查询,查看数据和获取索引 SQL Server Profiler SQL Server Profiler可以实时地捕获数据库服务器活动的连续记录。SQL Server Profiler允许您监控SQL Server产生的 转移表和数据 使用DTS Wizard将您的Access数据转移到SQL Server,可采取以下步骤: 在 SQL Server Manager(Enterprise Manager)的工具菜单中,鼠标指向“Data Transformation Services”, 然后点击 在“选择数据源”( Choose a Data Source)的对话窗口中,选择Microsoft Access为数据源,然后输入您的.Mdb文件 在“选择数据目标”(Choose a Destination)的对话窗口中,选择“Microsoft OLE DB Provider for SQL Server”, 在“指定表备份或查询”( Specify Table Copy or Query)的对话窗口中,点击“拷贝表”(Copy tables)。(XMW) 在“选择数据源”的对话窗口中,点击“选择所有项”( Select All)。(XMW) 移植Microsoft Access查询 您可以将Access的查询以下面的格式之一转移至SQL Server中: 事务处理SQL脚本程序(Transact-SQL scripts ) 事务处理SQL语句通常是由数据库程序调用的,但是您也可以使用SQL Server 7.0中包含的SQL Server 查询分析器直接运 存储过程(Stored procedures ) 开发者可以将大部分产生自Access查询(查找,插入,修改,删除)的事务处理SQL语句转移至存储过程。用事务处理SQL 视图(Views ) 视图是从一个或多个表中显示特定的行和列的虚拟表。它们允许用户可以不直接执行构成查询基础的复杂连接而建立查 Access查询类型的SQL Server移植选择与建议 一个SELECT语句可以存储在事务处理SQL文件、存储过程或是视图中。建立存储过程是将数据库应用开发与数据库设计的物 如果存储过程所基于的数据库变化了,而存储过程经过仔细的修改以反应这些变化,则对存储过程的调用将不会受到破 交叉表(CROSSTAB) 交叉表经常用于总结报表。(XMW) 一个Access的交叉表可以通过SQL程序段、存储过程或视图中的事务处理SQL语句来执行。每当发出一个查询时,数据连接 根据实际应用情况,比较合适的方法是将交叉表中的数据存储为一个临时表(参考下面的MAKE TABLE),临时表对资源的 创建表(MAKE TABLE) Access中的“MAKE TABLE”( 创建表)可以通过事务处理SQL脚本程序或存储过程中的事务处理SQL语言的建表语句 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语句的方法是创建一个存储过程。(XMW) APPEND(添加) ALLEND语句可以存储在事务_SQL脚本程序中,然而比较好地执行APPEND语句的方法是创建一个存储过程。(XMW) 移植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查询分析器。(XMW) 在Access的数据库窗口中点击“Queries”tab键,然后点击“Design”按钮。(XMW) 在“View”菜单上点击“SQL”按钮。(XMW) 将整个查询粘贴到SQL Server查询分析器中。(XMW) 测试语法,保存事务处理SQL语句以备后用,或者在数据库中执行这些语句。您可以选择将事务处理SQL语句保存到一段脚 移植Microsoft Access查询到事务处理SQL语句 大部分的Access查询应该转换成存储过程和视图。然而,有一些应用程序开发者不太常用的语句可以存储为事务处理SQL脚 如果您打算将一些Access查询转换为sql文件的话,可以考虑根据它们使用的方式有区别地将这些事务处理SQL语句分别放 将Access语句转移到事务处理SQL 文件 将语句拷贝到SQL Server查询分析器中 使用蓝色的多选项图标分析语句 在适当时候执行该语句 要执行Access中的创建表(MAKE TABLE)的查询任务的开发者在SQL Server中有几种选择。开发者可创建下列对象之一: 一个视图 视图具有动态的虚拟表的效果,可提供最近的信息。这是一个输入/输出强化器,因为每当发出一个查询时它都要求对数据 一个临时表 临时表为已连接的用户会话建立一个快照。您可以建立局部的或全局的临时表。局部临时表只在当前会话中可见,而全局 如欲了解临时表的其他信息,请参阅SQL Server在线参考书。(XMW) SQL Server 7.0中的数据转换服务(DTS)允许您通过创建包来实现临时表建立的标准化、自动化和进度安排。例如,当您 其他设计上的考虑 下面是当您将您的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. FROM Employees INNER JOIN (Orders INNER JOIN [Order Subtotals] ON Orders.[Order ID] = [Order Subtotals]. 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 |
|
打印本文 关闭窗口 |