【问题标题】:Upsizing a split Access database升迁拆分的 Access 数据库
【发布时间】:2010-09-16 02:41:18
【问题描述】:
我需要升级一个拆分的 Access 数据库,即当前在两个 mdb 文件、前端和后端之间拆分的数据库。我看到许多网页本质上说“运行升迁向导”。我的第一个非常基本的问题:
我应该在前端 mdb 还是后端 mdb 中运行此向导?
我假设我不想链接主 mdb -> 后端 mdb -> sql server。我是否应该在后端 mdb 上运行向导,然后在前端 mdb 中将链接表更改为指向 sql server 而不是后端 mdb?如果是这样,这是如何完成的?当我右键单击并进入链接表管理器的前端表(链接到后端 md)时,它似乎只让我选择一个新的 mdb 文件。
【问题讨论】:
标签:
sql-server
ms-access
split
upsizing
【解决方案1】:
我同意你的第一个猜测:你会想在后端 mdb 上运行向导。
一旦在 SQL Server 中,正如您所猜测的那样,您需要链接前端以使用 SQL Server 数据。一种方法是为您的新 SQL Server 数据库设置 ODBC 数据源并在链接表管理器中选择它。
- 打开数据源 (ODBC) 快捷方式:在 XP Pro 中,它位于管理工具下的控制面板中。 (如果您没有看到它,您可能没有创建数据源的权限,因此您必须与您的网络人员合作才能执行此操作。)这将打开 ODBC 管理器。
- 在文件 DSN 选项卡上,单击添加...。您将看到可用驱动程序的列表。选择 SQL Server,然后单击下一步。 (如果前端只在您的机器上使用,您可以创建一个系统 DSN。)
- 找到一个通用位置并命名您的数据源。
- 单击下一步并完成。这将设置数据源的第一部分,并将打开 SQL Server 数据源向导。
- 为数据源命名并选择您在其上放置升级后的后端数据库的服务器。
- 根据需要更改其余设置(您可能不需要更改太多,但这些更改的范围可能需要第二个问题),然后单击完成。
设置好数据源后,Get External Data 应该让您可以选择它作为您的数据源。 (在 2007 年,您可以从外部数据功能区到达那里。ODBC 数据源在更多下可用。)
根据 Matt 的后续问题进一步扩展:
如何做到这一点是一种设计选择。我建议扩大后端 mdb 的大小,因为这样您就可以保留 Access 中的任何表格等;如果您的数据在 SQL Server 中,我认为这不是一个过渡。
在升迁之前,您的表已链接到后端数据库,并且链接表管理器会显示这些链接。设置 ODBC 数据源并链接这些表后,它将显示该链接。您将以两种不同的方式查看链接,因为它们实际上是不同类型的链接(Access 与 ODBC),即使这些链接在您的前端 mdb 中看起来可能相同。
【解决方案2】:
我个人发现升迁向导在确定正确的数据类型方面做得非常糟糕。我会使用我需要的数据类型在 SQL Server 中自己创建表,然后将数据从 Access 移动到现有表中。否则,当您真正需要小数时可以使用 varchar 或 float 时,您将被文本数据困住。
移动数据后,我将删除 Access 表并链接到 SQL Server 表。
如果没有数据库的备份副本,请不要做任何事情。
【解决方案3】:
作为一个标准的偏执狂,我只会制作现有文件的备份副本并在前端运行升迁向导。如果发生任何不良情况,只需使用备份副本覆盖即可恢复更改。
【解决方案4】:
更新前端,它会在升迁之前导入后端表。一周前我做了这个,结果很成功。
但是,任何使用 -1 而不是 Yes 的查询都会失败。在没有主键的表上删除任何完整的表都将失败,并且您将获得与仅使用传递 SQL 查询截断表不同的行为。 trunc 会删除所有行,Access 版本可能会留空。
您还需要在具有自动编号列数据类型的表上打开记录集的任何位置包含 dbSeeChanges。 SQL 将这些更改为身份数据类型,然后在您尝试打开表之前抱怨。祝你好运。
【解决方案5】:
在前端做这一切
您可以简单地将表导出到 SQL Server。
然后您可以删除前端中的链接表。
然后链接到 SQL Server 的连接
检查:
- 当您打开表时,您会得到记录
- 您的所有查询都会运行
- 编译你的代码
您还必须考虑如何发布前端。如果您使用的是 dsn 文件,则需要将其提供给每个用户。
您需要确定最终用户如何访问 SQL Server。您是否使用存储在连接中的用户名和密码进行单次登录?
您还可以将后端数据库拆分为多个 Access 数据库并在前端链接它们。