从 MS Access 编程转向 SQL Server 时的主要考虑因素

Sim*_*979 9 sql-server-2005 ms-access

我是一个 100% 自学的 MS Access 程序员(我工作的主要部分是编程),我现在正在构建更大的数据库;仍然使用 MS Access 作为 UI,但使用 SQL Server 来存储所有数据并完成更多“工作”。

本质上我的问题是;对于 SQL Server,我需要了解哪些在使用 Access 时我可能没有学习或不需要的主题?

不是找你告诉我怎么做,更多的是你认为最重要的事情我应该去研究——有很多科目和很多细节,不想找自己长沿着一条不那么有价值的道路走下去......

脑残粉:

  • 维护:什么是最重要的(检查数据库,减少数据库,更新统计信息,重建等)
  • 索引 - 我不知道多少,有没有一本好书/博客等可以教我向上的基础知识?
  • 我错过的其他任何东西(可能有很多,因为我说我是 SQL Server 的新手......)

如果它有助于我为一家中型零售商工作,而我主要工作的数据库涵盖以下内容:

  • 报表平台(从主系统汇总销售/收货/库存等并提供快速报表)
  • 第三方与我们的商店通过寄存器放置的内容之间的协调工具(从第三方导入数据并交叉引用交易日志)
  • 存储与我们的促销活动有关的所有数据;产品、价格、预测、实际结果等

Gor*_*son 5

随着您对 SQL Server 的了解越来越多,您会发现(令您高兴的是)许多您可以在 SQL Server 中在数据库级别执行的操作,而之前必须在应用程序级别的 Access 中执行这些操作。一些例子包括:

触发器:在表级别定义的过程,用于在表上有 INSERT/UPDATE/DELETE 时自动发生事情。

存储过程:有点类似于 Access 宏和Sub你在 Access 中构建的那些小 VBA 过程,以执行“有用的东西”,除了在 SQL Server 中它们是数据库本身的一部分。因此,您可以编写一次存储过程 (SP) 并(几乎)在任何地方使用它,甚至可以跨共享同一数据库的应用程序使用。

函数:这些有点类似于Function您在 Access 中编写的用于合并到查询中的小 VBA ,不同之处在于 SQL Server 函数(如 SP)与数据库的绑定更加紧密。此外,SQL Server 函数可以是标量值(返回单个标量值)或表值(返回行集)。

有趣的 SQL 技巧: SQL Server 中有许多SQL 功能在 Access (Jet/ACE) SQL 中不支持。“通用表表达式”(CTE)和“RANKPARTITION”是在我开始时给我“'啊哈'时刻”的那些。

我可以继续,但这些是我记得很早就发现的让我“在 SQL Server 中思考”的东西。

不要误会我的意思,我仍然认为如果使用得当,Access 是一个很好的工具,应该认真考虑作为一种方式

  • 针对 SQL Server 后端构建(或只是模拟)前端应用程序,以及

  • 执行数据清理、创建临时查询和报告以及对 SQL Server 数据执行类似任务。

最后,即使你将工作与SQL Server 2005我强烈建议你的SQL Server 2008(或2012)快递的副本学习,因为在SQL Server Management Studio中(即自动完成和IDE增强的主要交互式调试)。请注意您可能遇到的任何更新(2008+)功能,不要依赖它们来处理您的生产代码。(或者,将它们用作从 SQL Server 2005 升级的推销要点....)