网乐原科技

直播中

news center新闻中心
首页 > 资讯中心 > 软件技术

将 Access 2009 数据库迁移到 SQL Server

发布时间:2008-03-14     阅读数: 次       来源:网乐原科技
本页内容
前提条件 前提条件
引言 引言
SQL Server 工具 SQL Server 工具
体系结构 体系结构
可伸缩性和性能 可伸缩性和性能
使用数据 使用数据
结论 结论
术语 术语

前提条件

本文中进行的所有比较均假定使用了以下软件:

Microsoft Access 2002 或更高版本

Microsoft SQL Server 2000 Standard Edition 或 Enterprise Edition

还假设您的数据当前存储在 Access 数据库 (.mdb) 文件中,而不是在 SQL Server 上,而且您没有使用支持本文中介绍的许多 SQL Server 功能的 Access 数据项目 (ADP)。

本文的目标读者

本文的目标读者是熟悉 Access 功能,且正在考虑将后端基础结构(数据和查询)迁移到 Microsoft SQL Server 的 Access 开发人员、Microsoft Visual Basic 开发人员和 .NET 开发人员。

读者需要熟悉以下 Access 功能:

基本 SQL

以多种格式导入和导出数据

备份和恢复数据

实现安全性


本文通过比较 Access 和 SQL Server 的功能,希望能对新的 SQL Server 开发人员有所帮助。

返回页首返回页首

引言

Microsoft Access 开发人员通常由于性能、安全性和稳定性因素而考虑迁移到 SQL Server,此过程称为升级 (upsizing)。在从 Access 迁移到 SQL Server 时,开发人员会发现几点主要的差异。关键是要注意到这些差异并采取相应的措施,确保从 Access 无缝且无错误地迁移到 SQL Server。

Microsoft SQL Server 是一个企业级数据管理系统。它集成了行业标准的安全性、可伸缩性和可管理性。此外,它还支持可扩展标记语言 (XML) 和 Internet 查询。

提示:这里不讨论从 Access 迁移到 SQL Server 的过程。 有关迁移的详细信息,请参阅 Migrating Your Access Database to Microsoft SQL Server 7.0。(注意:这篇文章是针对 SQL Server 7.0 编写的,尚未进行更新。)

提示:这里不讨论数据复制和数据库安全性之间的差异。
有关在 SQL Server 中实现复制的详细信息,请参阅 SQL Server 2000 SDK 文档中的 Implementing Replication
有关 SQL Server 安全性的详细信息,请参阅 SQL Server 2000 SDK 文档中的 Managing Security Accounts

返回页首返回页首

SQL Server 工具

使用 Access 数据库窗口中的主菜单,您可以创建查询、设计数据库或浏览数据。要从数据库中导出数据,请单击 File(文件),然后单击 Export(导出)。要将数据导入到数据库中,请单击 File(文件)-> Get External Data(获取外部数据),然后单击 Import(导入)。

SQL Server 提供了一套功能强大的工具,它们简化了浏览、查询、导入和导出数据的过程。它们是:

SQL Server 企业管理器

SQL Server 查询分析器

数据转换服务

SQL Server 事件探查器

用于设计数据库和查询以及浏览数据的 SQL Server 工具

在 SQL Server 中,您可以使用两个工具来执行数据库维护任务、浏览和编辑数据。这两个工具分别是 SQL Server 企业管理器和 SQL Server 查询分析器。计划将窗体迁移到 .NET 的 Access 窗体开发人员还会发现 Microsoft Visual Studio .NET 非常有用,因为它提供了一种集成的方法,使您可以在一个开发环境中创建和管理 SQL Server 数据库和数据访问窗体。

SQL Server 企业管理器

SQL Server 企业管理器是与 SQL Server 捆绑安装的应用程序,用于设计和管理数据库(如图 1 所示)以及浏览数据(如图 2 所示)。企业管理器还提供以下功能:

管理表/字段/数据、表关系、存储过程、视图、触发器、函数和用户定义的数据类型。

创建数据库关系图

创建数据库备份和恢复数据

管理数据库登录和对象权限

以使用数据转换服务 (DTS) 的多种格式导入和导出数据


1SQL Server 企业管理器在设计和管理数据库方面可以代替 Access 主对话框。


2:使用企业管理器可以像在 Access 中一样浏览和编辑数据。

SQL Server 查询分析器

SQL Server 查询分析器是一个完善的图形查询工具,可以代替 Access 主查询设计器。您可以通过它完成以下操作:

创建和调试查询

运行多个同步查询

查看数据

导出数据(单击 Query [查询],然后单击 Results to File [将结果保存到文件])

优化查询(单击 Query [查询],然后单击 Show Execution Plan [显示执行方案])

调试高级查询(单击 Tools [工具] -> Object Browser [对象浏览器],然后单击 Debug [调试])

提示:查询分析器不仅支持上述功能,还可以突出显示语法,使您可以很容易地查看和调试查询(如图 3 所示)。尽管可以在企业管理器中编写存储过程(如所图 4 示),但 Access 开发人员会发现查询分析器的功能更丰富。


3:查询分析器可以代替 Access 查询设计器,还增加了诸如突出显示语法和查询调试等功能。


4:在企业管理器中编写高级存储过程没有在查询分析器中容易

Access 中“使用向导创建查询”的功能在 SQL Server 中没有对应的功能。必须使用查询设计器或 SQL Server 语句来创建查询。

Visual Studio .NET

使用 Visual Studio .NET,您可以像在企业管理器中一样管理数据库和数据库对象,如图 5 所示。根据您使用的 Visual Studio .NET 版本,您可以创建允许您执行以下操作的数据库项目:

设计和执行存储过程、视图、触发器和函数

浏览表

查看数据

此功能对 .NET 开发人员很有用,因为它提供了一种集成的数据库管理方法。开发人员可以在一个应用程序中开发应用程序并管理数据库。


5Visual Studio .NET 提供了一种集成的数据管理方法

有关哪些版本的 Visual Studio .NET 支持哪些数据库管理功能的详细信息,请参阅 Visual Database Tools Editions

用于导入和导出数据的 SQL Server 工具

数据转换服务

数据转换服务 (DTS) 允许您在使用基于 OLE DB 体系结构的多种数据源(例如 Microsoft Excel)中导入和导出数据。DTS 不仅可以代替 Access 的导入和导出功能(如图 7 所示),还提供了以下功能:

在 SQL Server 数据库中导入和导出数据

以多种格式导入和导出数据,这些格式包括 Excel(.xls 文件)、逗号分隔值(.csv 文件)和 Microsoft Access,请参阅图 6。

执行数据转换


6:使用 DTS 以多种数据格式导入和导出数据。

DTS 的功能比 Access 中的导入和导出命令更强大。在 Access 导入过程中需要执行多个步骤才能完成的许多任务(例如,要执行数据转换,需要填充临时表并运行多个查询)在 DTS 中只需一个步骤即可完成。可以执行数据转换,例如,使用 SQL 查询将数据从一个表复制到另一个表中,或在插入目标表之前执行 VBScript 代码以转换部分数据,如图 8 所示。


7DTS 可以代替 Access 导入和导出向导,还可以进行高效的数据转换。


8DTS 可以执行高效的数据转换,而 Access 则需要更长的时间才能完成同样的操作。

SQL Server 事件探查器

SQL Server 事件探查器是优化数据库性能的重要工具。该工具非常有用,尤其是从只适用于客户端的系统(例如 Access)迁移之后。它可以显示服务器上执行的所有命令(例如,已打开和关闭连接)和数据库事务,如图 9 所示,这可以帮助您识别特别耗时或耗费资源的事务。


9SQL Server 事件探查器可以监视数据库活动,从而帮助您优化性能。

有关使用这些 SQL Server 工具的详细信息,请参阅 Migrating Your Access Database to Microsoft SQL Server 7.0。(注意:这篇文章是针对 SQL Server 7.0 编写的,尚未进行更新。)

返回页首返回页首

体系结构

Access 体系结构与 SQL Server 体系结构相比有几个不同点、相似点和缺点。它们的不同点体现在以下几个方面:

数据访问模型

表设计

关系

索引

数据查询类型

SQL Server 还为优化和简化数据处理提供了强大的功能,包括:

触发器

临时表

用户定义的函数

系统要求

最低系统要求

由于 SQL Server 比 Access 具有更丰富的功能和更好的可缩放性,因此它对系统的要求要略高一点。表 1 对这两个系统的最低系统要求进行了比较。

表 1:SQL Server 和 Access 的最低系统要求
  Access SQL Server

处理器

Pentium 75 MHz

Pentium 166 MHz

内存

8 MB,每个同时运行的应用程序需增加 4 MB,运行 Microsoft Windows XP 需增加 128 MB

128 MB RAM 或更多

硬盘空间

30 MB

270 MB(完全安装)

操作系统

Microsoft Windows Server 2003、Windows XP、Windows 2000、Windows NT 4.0 Service Pack 6 (SP6)、Windows Millennium Edition、Windows 98 Second Edition、Windows 98 或 Windows 95

Microsoft Windows Server 2003、Windows XP、Windows 2000、Windows NT 4.0、Windows 98 Second Edition、Windows 98、Windows 95 或 Windows CE

实际系统要求

表 1 列出的最低要求在典型的操作环境中是不现实的。系统要求主要取决于数据量和并发用户的数量。

如果有 10 个并发用户和一个 1 GB 的数据库,建议使用表 2 中指定的系统在生产环境中运行 Access 或 SQL Server。

表 2:建议的 SQL Server 和 Access 系统要求
  建议使用

处理器

Pentium III 650 MHz

内存

384 MB

硬盘空间

2 GB

操作系统

Microsoft Windows Server 2003 或 Windows 2000

SQL Server 版本

SQL Server 2000 有六个版本:

Enterprise Edition

Standard Edition

Personal Edition

Developer Edition

Desktop Engine MSDE)

SQL Server CE(与 Windows CE 兼容的版本)

表 3 显示了不同 SQL Server 版本的操作系统要求。

表 3:不同 SQL Server 版本的操作系统要求
操作系统 Enterprise Edition Standard Edition Personal Edition Developer Edition Desktop Engine (MSDE) SQL Server CE

Windows Server 2003 Standard Edition

Windows Server 2003 Enterprise Edition

Windows Server 2003 Datacenter Edition

Windows XP Professional

Windows CE

Windows 9x

引擎实现

Access 中的 Jet 数据库引擎与 SQL Server 的不同之处在于,它不能像 SQL Server 那样作为一项服务持续运行,而是在用户每次使用 Access 或其他某些数据访问方法打开 Jet 数据库文件(.mdb 文件)时启动。当用户关闭 .mdb 文件并且不再使用该文件时,Jet 引擎将从内存中卸载。

主要区别在于,如果用户当前没有访问 .mdb 文件,则可以使用 Windows 将该文件复制或移动到其他位置。在 SQL Server 中,SQL Server 服务是持续运行的,而且连接到在其中注册的 SQL Server 数据库文件(.mdf 文件)。要复制 .mdf 文件,必须先停止 SQL Server 服务,或者将 .mdf 文件与当前的 SQL Server 服务拆离,然后才能移动它。

数据访问模型

Access 是只适用于客户端的关系型数据库管理系统 (RDBMS)。这意味着所有数据处理(例如排序和筛选)都是在一台计算机上完成的。

Access 开发人员通常通过拆分数据库来模拟客户端/服务器方法。通常,在多个并发用户使用 Access 的环境中,将在每台客户端计算机上设置一个 Access 数据库。此数据库包含窗体、报表、保存的查询和 Microsoft Visual Basic for Applications (VBA) 窗体代码。所有数据都存储在中央服务器的 Access 数据库中,而在请求时才发送给客户端计算机。此方案需要大量网络资源和客户端资源。图 10 显示了这种结构。


10:拆分 Access 数据库(红色表示负载)

在此方案中,服务器上不执行任何数据处理。当客户端请求数据时,将把整个数据集通过网络发送给客户端,任何处理都是在客户端计算机上完成的。

例如,一家财务公司的数据库中有一个 Accounts Receivable 表(Access .mdb 文件),其中存储了一百万条记录。某个 Access 应用程序要显示应收帐款的总和(一个计算的字段)。要完成此操作,Access 必须通过网络传输整个表,而在工作站上执行计算。

这将为服务器和网络带来严重的性能问题。多次请求大量数据将占用大量服务器资源,而通过网络连接传输整个数据集将大大降低网络速度。

相反,SQL Server 是一个纯客户端/服务器 RDBMS。这意味着客户端和服务器可以共同分担处理负载。客户端(例如 .NET Windows 应用程序)使用参数发送数据请求,服务器执行排序和筛选操作,然后只将经过筛选的数据集返回客户端。图 11 显示了这种结构。


11SQL Server 可以将处理任务分散到客户端和服务器上,有助于减少网络通信量和服务器负载。

因为 SQL Server 在服务器上处理所有的筛选和排序操作,所以只返回指定的结果集。这有助于大大减少网络通信量,因为在客户端和服务器之间传输的数据比较少。这还有助于减少服务器的处理负载,因为服务器不需要像在 Access 中那样返回大量记录。

数据类型

Access 数据类型和 SQL Server 数据类型之间有几点不同之处。这些数据类型中的大多数会在升级时自动转换,但升级之后,您需要在 SQL Server 数据库中进行验证,这一点很重要。表 4 显示了 Access 数据类型和 SQL Server 数据类型之间的不同之处。请注意,还有某些不受支持的数据类型。

表 4:比较 Access 数据类型和 SQL Server 数据类型
Jet (Access) SQL Server

Text

char、nchar、varchar、nvarchar

Memo

text、ntext

Byte

tinyint

Integer

smallint

Long Integer

integer

Single

real

Double

float

Replication ID

uniqueidentifier

Decimal

decimal

Date/Time

smalldatetime、datetime、timestamp

Currency

smallmoney、money

AutoNumber

int + 标识属性

Yes/No

bit

OLE 对象

image

Hyperlink

<无对应项>

<无对应项>

binary、varbinary

提示:在 Access 中,只要用户开始编辑新记录,系统就会自动生成自动编号的列。在 SQL Server 中,只有在保存记录时才会生成自动编号的列。在 Access 中重新设计基于自动编号值的现有逻辑时,一定要谨慎。

用户定义的数据类型

SQL Server 允许用户定义自定义数据类型,称为用户定义的数据类型 (UDDT)。UDDT 基于现有的 SQL Server 数据类型。还可以直接为类型添加约束,以执行以下操作:

指定默认值。(默认值是指没有为记录指定值时,由系统自动在字段中输入的值。)

设置最大字段大小。

设置字段是否可以为空。

在表中指定其属性将来有可能发生变化的字段时,UDDT 将非常有用。例如,如果您为基本 SQL Server 数据类型 varchar(15)(长度为 15 个字符的字符串)定义了一个唯一标识符字段,然后定义了可以接受 varchar(15) 参数类型的所有相关的存储过程,那么,更改该字段的长度或数据类型将成为一个棘手的维护问题。要反映数据类型的变化,必须更改所有存储过程和表。

更好的做法是创建一个名为 CodeType 的 UDDT,而在 UDDT 中定义长度和基本数据类型。所有存储过程和表定义都使用该 UDDT,所以,如果字段大小增加,只需更改 UDDT 的定义。

UDDT 是通过企业管理器定义的,如图 12 所示。


12:指定在 SQL Server 数据库对象中使用的 UDDT

表设计

表的表示方式在 Access 和 SQL Server 中是相似的。这两个数据库管理系统 (DBMS) 都是关系型的,也就是说,相关数据都存储在通过唯一标识符链接的逻辑表中。表的设计界面在 Access 和 SQL Server 中也是相似的,如图 13 所示。


13Access SQL Server 中相似的表设计

关系

在 Access 中,可以为表中的字段指定规则,这样,当一个表中的值发生变化时,相关表中的值将自动更新(级联更新)。

在 SQL Server 中,可以通过企业管理器中的关系图设计器创建相同的规则(如图 14 所示)。SQL Server 支持五类约束:

NOT NULL指定列不能包含空值。

CHECK限制列中可以输入的值。下列代码将创建一个 Employee 表,并为 Salary 字段添加 CHECK 约束,使该字段的值在 10,000 和 1,000,000 之间。

CREATE TABLE Employee
    (
EmployeeID          int        PRIMARY KEY,
Name               char(50),
Address          char(50),
Salary         money,
CONSTRAINT chk_Salary CHECK (Salary BETWEEN 10000 and 1000000)
       )

UNIQUE确保表列中的所有值都是唯一的。此约束通常用于 ID 列。

PRIMARY KEY标识一列或一个列集合,其值唯一标识表中的某个行。

FOREIGN KEY设置表之间的关系。下列代码将创建一个 EmployeePosition 表,该表引用上面创建的 Employee 表中的 EmployeeID。

CREATE TABLE EmployeePosition
    (
EmployeePositionID    int  


网乐原科技

客服热线:0771-5761507

QQ:53290011

QQ邮箱:53290011@qq.com

工作时间:周一到周五 9:00-18:00

地址:广西南宁市江南万达写字楼C16栋1309室

物联网开发

关注我们

微信小商店 腾讯QQ客服 微信客服