随着时间的推移,大多数数据库应用程序会不断扩展、变得复杂,并且需要支持更多的用户。 在 Microsoft Office Access 应用程序的生命周期中,可能需要考虑将应用程序大小调整为 Microsoft SQL Server 数据库,以优化性能、可伸缩性、可用性、安全性、可靠性和可恢复性。
本文内容
关于调整 Access Microsoft Office的大小
大小调整是一个过程,即将某些或所有 数据库对象 从 Access 数据库迁移到新的或现有的 SQL Server 数据库或新的 Access 项目 (.adp) 。
将数据库大小调整为 SQL Server
-
高性能和可伸缩性 在许多情况下,SQL Server Access 数据库提供更好的性能。 SQL Server还提供对非常大的 TB 大小的数据库的支持,这远大于 Access 数据库 2 GB 的当前限制。 最后,SQL Server在单个进程中使用多个本机线程并行处理查询 (处理用户请求) 在添加更多用户时最大程度地减少额外的内存需求,从而非常高效地工作。
-
提高可用性 SQL Server允许在数据库使用时对数据库执行动态备份(增量备份或完整备份)。 因此,不必强制使用户退出数据库即可备份数据。
-
提高了安全性 使用受信任的连接,SQL Server Windows 系统安全性集成,以提供对网络和数据库的单一集成访问,同时利用这两个安全系统的最佳功能。 这样,管理复杂的安全方案就容易得多。
-
即时可恢复性 如果发生系统故障 (例如操作系统崩溃或断电) ,SQL Server 具有自动恢复机制,在数分钟内将数据库恢复到最后一个一致性状态,无需数据库管理员干预。
-
基于服务器的处理 在SQL Server/服务器配置中使用此参数可以减少网络流量,在将结果发送到客户端之前,可以在服务器上处理数据库查询。 让服务器执行处理通常要高效得多,尤其是在处理大型数据集时。
应用程序还可以使用用户定义的函数、存储过程和触发器来集中和共享应用程序逻辑、业务规则和策略、复杂查询、数据验证和引用完整性代码,而不是在客户端上。
向上放大的方法
"大小调整向导"会将数据库对象及其包含的数据从 Access 数据库移到新的或现有的 SQL Server 数据库。
有三种方法可以使用"调整大小向导":
-
将 Access 数据库中的所有数据库对象向上放大到 Access 项目,以便可以创建客户端/服务器应用程序。 此方法需要对代码和复杂查询进行一些额外的应用程序更改和修改。
-
仅将 Access 数据库中的数据或数据定义向上SQL Server数据库。
-
创建 Access 数据库前端到 SQL Server 数据库后端,以便可以创建 前端/后端应用程序 。 此方法几乎不需要应用程序修改,因为代码仍在使用 Access 数据库引擎 (ACE) 。
在更新 Access 数据库之前
在将 Access 数据库向上SQL Server数据库或 Access 项目之前,请考虑执行以下操作:
-
备份数据库 虽然"调整大小向导"不会从 Access 数据库中删除任何数据或数据库对象,但建议在向上调整之前创建 Access 数据库的备份副本。
-
确保有足够的磁盘空间 设备上必须有足够的磁盘空间,其中包含已更新的数据库。 当有大量磁盘空间可用时,"调整大小向导"效果最佳。
-
创建唯一索引 链接表必须具有唯一索引,在 Access 中可更新。 "调整大小向导"可以向上调整现有唯一索引,但无法创建不存在的索引。 如果希望能够更新表,请确保在调整大小之前向每个 Access 表添加唯一索引。
-
在数据库上为自己分配SQL Server权限
-
若要更新到现有数据库,需要 CREATE TABLE 和 CREATE DEFAULT 权限。
-
若要生成新数据库,需要在 Master 数据库中的系统表上具有 CREATE DATABASE 权限和 SELECT 权限。
-
Access 2007 Upsizing Wizard 经过优化,可处理 Microsoft SQL Server 2000 和 SQL Server 2005。
使用"调整大小向导"
-
在" 数据库工具" 选项卡 上的"移动 数据" 组中,单击SQL Server。
将启动"调整大小向导"。
步骤 1:选择更新到现有数据库或新数据库
在向导的第一页上,指定是将 Access 数据库更新为现有 SQL Server 数据库,还是创建新的 SQL Server 数据库。
-
使用现有数据库 如果选择此选项,然后单击"下一步",Access 会显示"选择数据源"对话框,以便可以创建到现有数据库的 ODBC SQL Server连接。
关于 ODBC 数据源
数据源是数据源,与访问该数据所需的连接信息相结合。 数据源的示例包括 Access、SQL Server、Oracle RDBMS、电子表格和文本文件。 连接信息示例包括服务器位置、数据库名称、登录 ID、密码以及说明如何连接到数据源的各种 ODBC 驱动程序选项。
在 ODBC 体系结构中,应用程序 ((例如 Access 或 Microsoft Visual Basic 程序) )连接到 ODBC 驱动程序管理器,而 ODBC 驱动程序管理器又使用特定的 ODBC 驱动程序 (例如 Microsoft SQL ODBC 驱动程序) 连接到数据源 ((在这种情况下为 SQL Server 数据库) )。 在 Access 中,可以使用 ODBC 数据源将外部数据源连接到无内置驱动程序的 Access。
要连接这些数据源,必须执行以下操作:
-
在包含数据源的计算机上安装相应的 ODBC 驱动程序。
-
定义数据源名称 (DSN),具体方法是使用“ODBC 数据源管理器”将连接信息存储到 Microsoft Windows 注册表或 DSN 文件中,或者使用 Visual Basic 代码中的连接字符串将连接信息直接传送到 ODBC 驱动程序管理器。
机器数据源
计算机数据源使用用户定义的名称将连接信息存储在 Windows 注册表中的特定计算机上。 只能在定义机器数据源的计算机上使用机器数据源。 机器数据源分为两种类型,用户和系统。 用户数据源只能由当前用户使用,并且只对该用户可见。 系统数据源可由计算机上的所有用户使用,并且对计算机和系统范围内服务上的所有用户均可见。 需要提供增强的安全性时,机器数据源尤其有用,因为只有登录的用户才可以查看机器数据源,并且远程用户无法将它复制到另一台计算机上。
文件数据源
文件数据源(也称为 DSN 文件)将连接信息存储在文本文件中,而不是 Windows 注册表中,并且其使用通常比机器数据源更灵活。 例如,可以将文件数据源复制到具有正确 ODBC 驱动程序的任何计算机,以便应用程序可以依赖与它使用的所有计算机一致且准确的连接信息。 也可以将文件数据源置于一台服务器上,在网络上的多个计算机之间共享,并轻松地将连接信息保留在一个位置。
文件数据源也可以是不可共享的。 不可共享的文件数据源驻留在单个计算机上,并指向计算机数据源。 可以使用不可共享的文件数据源访问来自文件数据源的现有机器数据源。
连接字符串
在模块中,可以定义用于指定连接信息的带格式连接字符串。 连接字符串将连接信息直接传递给 ODBC 驱动程序管理器,它通过消除系统管理员或用户在使用数据库之前首先创建 DSN 这一要求来帮助简化应用程序。
-
-
创建新数据库 如果选择此选项,然后单击"下一步",Access 会显示一个页面,您可以在其中输入有关新数据库SQL Server信息。
-
要SQL Server数据库使用什么? 键入要使用的服务器的名称。
-
使用受信任的连接 可以使用受信任的连接,也就是说,SQL Server Windows 操作系统安全性集成,以提供单一登录到网络和数据库。
-
登录 ID 和密码 如果不使用受信任的连接,请在服务器上键入具有 CREATE DATABASE 权限的帐户的登录 ID 和密码。
-
想要将新的数据库SQL Server什么? 键入新数据库SQL Server的名称。 如果 Access 与现有的数据库名称冲突,则修改名称,并将编号后缀 (mydatabase 1,例如) 。
-
步骤 2:选择要放大的表
在此步骤中,选择要更新到数据库的 Access SQL Server表。 选择要放大的表,然后使用箭头按钮将其移动到"导出到SQL Server列表。 或者,可以双击某个表,将其从一个列表移动到另一个列表。
" 可用表" 列表包括所有链接表,SQL Server数据库中已有的表SQL Server表。 指向已选择SQL Server大小调整的数据库的链接表会自动显示在"导出到 SQL Server列表框中 ,无法删除。 此外,还会排除当前在 导航窗格 不可见的表,包括隐藏的表和系统表。
提示: 名称以"_local"的任何表都排除在可用表列表中,以防止调整已放大的表。 如果要再次调整这些表,请重命名这些表,然后再通过删除后缀"_local"来运行"调整大小向导"。
步骤 3:指定要放大的属性和选项
在此步骤中,选择要将哪些表属性向上SQL Server数据库。 默认情况下,会选择所有属性来调整大小。
注意: 默认情况下,"调整大小向导"会将 Access 字段名称转换为法定SQL Server字段名称,并将 Access 数据类型转换为SQL Server数据类型。
要放大哪些表属性?
下表列出了可以调整其大小的属性,并介绍了"调整大小向导"如何处理每个属性:
属性 |
操作(如果已选择) |
|||||||||||||||
索引 |
"大小调整向导"会向上调整所有索引。 "大小调整向导"将 Access 主键转换为SQL Server,并将其标记为SQL Server键。 如果选择将向上调整的 SQL Server 表链接到 Access 数据库,则调整大小向导还会将前缀"aaaaa"添加到索引名称。 这是因为 Access 选择在可用索引列表中按字母顺序作为主键的索引,而"aaaaa"前缀可确保选择正确的索引。 所有其他索引将保留其名称,但非法字符替换为"_"字符除外。 唯一和非唯一的 Access 索引将成为唯一的非唯一SQL Server索引。 链接表必须具有唯一索引,在 Access 中可更新。 "调整大小向导"可以向上调整现有唯一索引,但无法创建不存在的索引。 如果要在调整表大小后能够更新表中的数据,请确保在调整大小之前向每个 Access 表添加唯一索引。 |
|||||||||||||||
验证规则 |
"调整大小向导"将以下各项放大为更新和插入触发器:
触发器是一系列与 SQL 表关联的 Transact-SQL Server 语句。 一个表可以有三个触发器,每个触发器分别用于可以修改表中的数据的命令:UPDATE、INSERT 和 DELETE 命令。 执行命令时,会自动执行触发器。 "调整大小向导"使用触发器而不是SQL Server规则来强制实施字段级别验证,SQL Server规则不允许显示自定义错误消息。 每个验证规则不一定与触发器具有一对一对应关系。 每个验证规则可能成为多个触发器的一部分,并且每个触发器可能包含用于模拟多个验证规则功能的代码。 将 Access字段的 Required 属性设置为 true 时,如果没有对字段 (的默认绑定,则用户无法插入记录并将必填字段保留为 null) 或在更新记录时将该字段设为 null。 必填字段将向上调整为不允许空值的SQL Server。 验证文本 Access 数据库 验证文本 属性将转换为 Access 项目 验证文本 属性。 这样,在出现约束违规时,可以显示 Access 友好的错误消息。 |
|||||||||||||||
默认值 |
"调整大小向导"将所有默认值属性向上调整为美国国家标准协会 (ANSI) 对象。 |
|||||||||||||||
表关系 |
"调整大小"向导会向上调整所有表关系。 可以通过使用更新、插入或删除触发器,或者使用"声明的参照完整性" (或"一元"来决定如何增加表关系和参照) 。 使用与 Access 引用完整性相同的方式,一对多关系 ("一对多"关系) 的主键约束和外键约束的外键约束 (通常是一对多关系) 的"多"端。
|
要包括哪些数据选项?
-
向表添加时间戳字段 SQL Server使用时间戳字段来指示记录已更改 (但更改时) 请创建唯一值字段,然后在更新记录时更新此字段。 对于链接表,Access 使用时间戳字段中的值来确定更新记录之前是否已更改记录。 一般情况下,时间戳字段提供最佳性能和可靠性。 如果没有时间戳字段,SQL Server必须检查记录中所有字段,以确定记录是否已更改,这会降低性能。
下表描述了此列表中可用的设置:
设置 |
说明 |
是,让向导决定 |
如果原始 Access 表包含浮点 (单一或双精度) 、备注或 OLE 对象 字段,则大小调整向导会为这些字段在生成的 SQL Server 表中创建新的时间戳字段。 |
是,始终 |
"调整大小向导"会针对所有向上调整的表创建时间戳字段,不管这些表包含哪些字段类型。 这提高了可能不包含 Memo、OLE 对象或浮点字段,但包含其他类型的字段的向上化 Access 表的性能。 |
否,从不 |
"调整大小向导"不会向表添加时间戳字段。 |
重要: 在链接SQL Server表中,Access 不会检查确定 Memo 或 OLE 对象字段是否已更改,因为这些字段的大小可能很多 MB,并且比较可能过于网络密集型且耗时。 因此,如果只更改了文本或图像字段并且没有时间戳字段,Access 将覆盖更改。 此外,浮点字段的值在未更改时可能看起来已发生更改,因此在没有时间戳字段的情况下,Access 可能会确定记录在未更改时已更改。
-
仅创建表结构,不放大任何数据 默认情况下,"调整大小"向导会SQL Server数据。 如果选择" 仅创建表 结构",则不要向上调整任何数据复选框,只会对数据结构进行向上调整。
步骤 4:选择如何对应用程序进行向上设置
在向导的下一页上,可以选择三种不同的方法之一来更新 Access 数据库应用程序。 在 要执行哪些应用程序更改?下,选择以下选项之一:
-
创建新的 Access 客户端/服务器应用程序 如果选择此选项,则"调整大小向导"将创建新的 Access 项目。 "调整大小向导"会提示输入一个名称(默认为当前 Access 数据库名称),添加"CS"后缀,然后将项目存储在与现有 Access 数据库相同的位置。
"调整大小向导"将创建 Access 项目文件,然后将 Access 数据库中的所有数据库对象向上调整为 Access 项目。 如果不保存密码和用户 ID,则首次打开 Access 项目时,Access 会显示"数据链接属性"对话框,以便连接到 SQL Server 数据库。
-
将SQL Server链接到现有应用程序 如果选择此选项,"调整大小向导"会修改 Access 数据库,以便查询、窗体、报表和数据访问页使用新 SQL Server 数据库中的数据,而不是 Access 数据库中的数据。 "向上调整大小向导"将重命名带有后缀"_local"的 Access 表。 例如,如果更新名为"员工"的表,则此表Employees_local Access 数据库中的名称。 然后,"调整大小"向导会创建名为"员工SQL Server链接表。
注意: 完成调整大小操作后,不再使用重命名为"_local"后缀的表。 但是,建议保留本地表,直到验证调整成功。 以后,可以删除本地表来减小 Access 数据库的大小。 请务必在删除任何表之前备份数据库。
基于原始"员工"表的查询、窗体、报表和数据访问页现在将使用链接的SQL Server"表。 原始本地表中的许多字段属性都由新的本地表继承,包括 Description、Caption、Format、InputMask 和DecimalPlaces。
-
无应用程序更改 如果只想将数据复制到 SQL Server 数据库,而不想对现有 Access 数据库应用程序进行任何其他更改,请选择此选项。
保存密码和用户 ID 默认情况下,"大小调整向导"会创建现有应用程序中的链接表,或创建 Access 项目,而不保存用户名和密码。 这意味着,每次登录到数据库时,系统会提示用户提供SQL Server密码。
如果选择" 保存密码和用户 ID",则用户可以连接到 SQL Server 数据库而无需登录。 如果选择" 创建新的 Access 客户端/服务器应用程序",Access 项目将用户名密码存储在 OLE DB 连接字符串中。
注意: 如果已使用MSysConf表配置链接的 SQL Server 表来拒绝保存密码,则"不更改应用程序"选项将禁用此选项。
"调整大小向导"报表
单击" 完成"时,"调整大小向导"将创建一个报表,其中详细说明了创建的所有对象,并报告过程中遇到的任何错误。 "调整大小向导"在"打印预览"中显示报表,然后您可以打印或保存报表,例如,作为 XPS 或 PDF 文件。 关闭"打印预览"窗口时,报表不会另存为 Access 对象。
"调整大小向导"报表包含以下信息:
-
调整参数大小,包括选择向上调整的表属性,以及调整大小的方法。
-
表信息,包括 Access 和 SQL Server名称、数据类型、索引、验证规则、默认值、触发器以及是否已添加时间戳的值的比较。
-
遇到的任何错误(例如数据库或事务日志已满、权限不足、设备或数据库未创建、跳过表、默认或验证规则、未强制实施关系、查询跳过 (因为它无法转换为 SQL Server 语法) ,以及窗体和报告中的 控件 和 记录源 转换错误。
数据库对象如何放大
以下数据和数据库对象会放大:
-
数据和数据类型 所有 Access 数据库数据类型都转换为其 SQL Server。 该向导通过将 Unicode 字符串标识符添加到所有字符串值并将 Unicode n 前缀添加到所有数据类型,将 Access 数据库文本转换为 Unicode。
-
查询
-
选择没有 ORDER BY 子句或参数将转换为视图的查询。
-
操作查询将转换为存储过程操作查询。 Access 在参数声明代码后添加 SET NOCOUNT ON,以确保存储过程运行。
-
选择仅引用表的 (也称为基本查询) 参数或 ORDER BY 子句的查询将转换为用户定义的函数。 如有必要,TOP 100 PERCENT 子句将添加到包含 ORDER BY 子句的查询。
-
使用命名参数的参数查询保留 Access 数据库中使用的原始文本名称,并转换为存储过程或内联用户定义的函数。
注意: 可能需要手动转换未更新的查询,例如SQL查询、数据定义查询和交叉表查询。 可能还需要手动对嵌套太深的查询进行向上调整。
-
-
窗体、报表和控件 SQL、窗体、报表或控件的RecordSource、ControlsSource和RowSource属性中的声明会保留到位,不会转换为存储过程或用户定义的函数。
-
启动属性 "调整大小向导"会向上调整以下启动属性:
StartUpShowDBWindow
StartUpShowStatusBar
AllowShortcutMenus
AllowFullMenus
AllowBuiltInToolbars
AllowToolbarChanges
AllowSpecialKeys
UseAppIconForFrmRpt
AppIcon
AppTitle
StartUpForm
StartUpMenuBar
StartupShortcutMenuBar -
模块和宏 "调整大小向导"不会对模块或宏做出任何更改。 可能需要修改应用程序,以充分利用SQL Server的功能。 有关详细信息,请参阅 MSDN 文章"优化链接到 Microsoft Office的应用程序SQL Server。