我如何说服他们需要从ms访问sql server或类似的东西升级

时间:2008-10-21 02:35:26

标签: sql-server ms-access

我在与一个沉迷于ms访问的高度根深蒂固的开发人员的工作中遇到了一个真正的问题。用户抱怨随机崩溃,锁定错误,冻结,应用程序放缓(特别是在2007年),但似乎非常抵制移动它。大部分时间他们都责怪计算机,并且无法确信这是因为它是一个mdb坐在网络驱动器上而且没有任何关于硬件坐在他们面前的全新。

有一个前端vb程序挂了它,但我不认为它需要花费几个星期的时间来调整,事实上我可能会重新编写它,因为它有一年前的杂乱代码显影剂。

我最好的论据是说服他们我们需要移动它吗?

是否有其他人遇到与开发人员陷入困境的类似问题?

15 个答案:

答案 0 :(得分:11)

随机,崩溃,锁定错误,冻结,慢速(原文如此)如何?

在网上快速搜索可找到一些有用的资料:

很难说服那些不愿意学习并且不愿接受新想法的人。你可以继续谈论速度问题,并发问题,安全问题......但最终,有些人永远不会听。过头了。用这十年的工具重写它并展示它们。拒绝参与该项目并进一步参与。我不知道政治局势是什么,但从技术上讲,从你所描述的内容来看,MS访问对你所做的事情是错误的。

答案 1 :(得分:3)

进入一个周末,将数据库复制到sql server,将应用程序的连接字符串更改为sql server,重新测试应用程序,然后卸载ms-access ...无处不在。

然后不说任何关于它的事情,让他认为问题“自我修复”并且用户仍在使用ms-access

答案 2 :(得分:3)

对我而言,这取决于您拥有多少并发用户以及数据库的大小。如果您有超过5个并发用户,那么您应该考虑使用数据库服务器。网络流量开始失控,每添加一个并发用户就会变得更糟。

我已经创建了可靠的基于访问的系统多年。如果你有随机崩溃,锁定问题和减速,那么你没有做正确的事情。在访问中创建应用程序时,我通常会在网络上拥有mdb本地mdb。要获得良好的性能,关键是要为获取所需数据而优化适当的索引和查询。无论是使用单独的应用程序,访问权限还是针对sql server运行的某些应用程序,您都需要主动正确处理记录锁定。你不能盲目地让访问锁定你的记录。

答案 3 :(得分:3)

忘记关于数据库大小的争论,在我听到它提出的90%的情况下转移到客户端 - 服务器平台是一个不明智的理由。

您最好的论据是基于低技术水平解释的功能: (1)您可以在不启动用户的情况下备份和执行数据库维护(这会导致代价高昂的停机时间)。

(2)如果数据被意外删除/损坏或损坏,则恢复速度更快。同样,风险更小,停机时间更短。这始终是商业案例的良好基础。

(3)如果(并且仅当)您预计需要进行相当大的扩展,升级将更好地允许。

(4)如果您需要运行自动化作业/更新,SQL可以更优雅地完成这项任务。

记住SQL的禁忌症,很容易就这个平台获得技术高手,但是你必须平衡收益和成本。 SQL是Helluva维护成本更高,因为它需要专用硬件,昂贵的许可证(服务器操作系统和数据库),并且通常至少是兼职DBA,这将花费你至少$ 75K(如果你运气和工作爱荷华州的Podunk)。

答案 4 :(得分:2)

我能给你的最好的建议是确保你有一个良好的态度,并被称为做高质量工作和完成工作的人。听起来你在这种情况下没有任何控制权,所以你需要的是影响力。

找到一种方法来解决问题(可能是一个对所涉人员的威胁较小的问题)。让它快速无瑕地工作。让它工作得很好,人们在需要完成任务时就会开始向你求问。快速完成,您应该能够做到,因为您将使用正确的工具来完成工作。

是一个善于与之合作的人,而不是知道其他人应该如何编写代码的PITA。能够给出你可能做的不同的答案和原因,但不要自动认为你的想法总是最好的。也许有一些你不知道的权衡 - 额外CAL的预算没有钱,我们还有其他需要先做的应用程序。这听起来不像你的情况,但在做出建设性的批评之前寻找机会去理解可以帮助人们接受。

另一件事是,这可能与情况的技术方面无关,而与其他开发人员的不安全感有关。 “这就是我所知道的。如果我们改变它,我将无法理解它,然后我会在哪里。”寻找帮助其他人成长的方法 - 当他遇到问题时,找到有助于他开发出良好技术解决方案的资源。建议您所在部门的每个人都接受一些新技术培训。谁知道,一个好的SQL Server课程和那个人可以成为组织中的SQL Server布道者,因为现在这就是他所知道的。

最后,知道何时减少损失,可以这么说。如果您发现自己无法对此情况采取任何措施,请不要添加抱怨。转到你可以控制的东西,并尽可能地做。也许将来你会处于这样一种状态,你可以在这种情况下拥有控制权或影响力,并且能够做些什么。如果你发现自己所处的公司比大多数公司功能失调,那就找到一种方法可以转移到环境更好的地方。

答案 5 :(得分:2)

将Access数据库转换为在SQL Server中拥有表/视图,同时仍然使用Access应用程序作为前端,这是可能的,而且实际上相当容易。

从那里,您的Access痴迷的开发人员仍然可以享受所有VBA代码的乐趣。同时,在后端,您添加索引等,以加快一切。也许有一天你会很幸运,他会询问存储过程。然后,应用程序只是一个前端,谁在乎它写的是什么?您的数据在SQL Server中是安全的。

您可以自己完成此操作,但只需离开生产应用程序ALOOOOOOOOOOOOONE。复制一份,并转换该副本。然后,为几个用户托管它以测试驱动器..让你的版本的Access应用程序显示“TEST APP”用大红色字母。如果您的开发人员询问您正在做什么,您可以说实话 - 您正在测试是否仅转换表/视图可能对整个应用程序有所帮​​助。

通过这种方式,您可以获得两全其美,让开发人员满意,让用户更快乐(希望如此),如果你正确地玩,你的老板会知道你处理了一个棘手的人事问题,你的技术实力和你的成熟。

答案 6 :(得分:1)

我曾经遇到类似的问题,我不会犹豫,称他为完全白痴。

无法让他们相信访问权限。最后,强迫这个问题比“好”更容易,残忍地善待。

答案 7 :(得分:1)

如果他们抗拒那么你总是可以超越他们的头脑。管理层必须了解崩溃和稳定性相关问题。向他们提出一个改善稳定性的计划,他们至少可以倾听。然后,他们可能希望与所有开发人员进行会谈以进行讨论,因此请使用大量弹药进行讨论。

答案 8 :(得分:1)

超过“如何说服他们”,让我们谈谈“如何在没有人注意的情况下做到这一点”!

首先,我建议您不要将代码优化问题和SQL服务器混合在一起。不要让用户有机会抱怨SQL,而错误与其他东西有关。

如果您的代码真的无法忍受,请在切换到SQL之前重写应用程序,请记住以下几点,以使最终用户完全透明到SQL Server的最终过渡。

这是我们18个月前所做的,我相信我们仍然有用户认为我们的数据库是Access:

  1. 出于测试目的,通过可访问的向导将当前访问数据库导出到SQL(可能会出现许多问题,您可能需要其他工具,例如建议的here)。
  2. 在应用程序级别创建一个唯一的连接对象,以便您可以随时自由地从Access切换到SQL(在开发级别,您甚至可以在启动时添加输入框以询问要使用的连接)。我们选择了一个ADODB连接对象,但它也可以与ODBC连接一起使用。
  3. 如果您使用SQL语法更新表,请确保所有SELECT,INSERT,UPDATE和DELETE都使用此连接。如果您使用记录集,请确保所有记录集在打开时都使用此连接。
  4. 如果需要,可以通过添加“SELECT CASE”type_Of_TheConnexion选项来更新所有连接特定代码
  5. 切换到SQL连接..并调试,直到你完成!
  6. 您将发现的问题主要与SQL语法相关联,其中MSSQL使用'而不是'和#作为分隔符。日期格式也是一个问题,标准SQL格式为'YYYYMMDD',而MS-Access格式依赖于计算机本地人(注意从日期到字符串的转换!)并存储为“YYYY-MM-DD”(如果我记得......)。SQL中的布尔值为0和1,而它们是True / False或0 / -1在Access ...

    测试,更新代码,当您没问题时,进行新的数据传输,在SQL连接上锁定您的应用程序,并分发新的运行时。

答案 9 :(得分:1)

这取决于数据库的应用程序类型和数据负载,但即使在网络上,Access也非常有效 根据用户处理的数据量,只需使用来自后端和后端的Access数据库,就可以轻松扩展到网络上的100个用户。

在您的情况下,重写可能是有序的。如果您的应用程序是以数据为中心的,那么在VB6中开发它是没有多大意义的:Access提供的工具比您能够做的任何工具要好得多,尤其是在考虑Access 2007时。

只有在遇到以下问题时,才真正需要升级到SQL Server:

  • 安全
    您需要确保只有权限用户才能访问数据。您可以在Access中执行自己的安全性,但它永远不会像SQL Server一样强大。
  • 可扩展性
    您正在处理大量数据和复杂查询或许多用户,最好有专用硬件来处理客户端的负载。但问题在于,在消除功能较弱的客户端机器的压力时,您需要向服务器添加更多内容。
  • 完整性
    由于后端数据库只是一个需要对所有连接客户端进行R / W访问的文件,因此总有可能会有人做坏事或客户端可能崩溃并使数据库损坏。

如果您的用户数量是平均值(我会说30),那么可能没有真正需要升级:

  • 使用MS Access 2007开发您的应用程序,然后在所有客户端计算机上使用MS Access 2007 Runtime(它是免费的!)以获得更现代的用户界面(使用功能区并且比以前的版本具有许多UI增强功能) 。
    你不能成为那个解决方案的廉价:你只需要MS Access的完整零售版本,其余的都是免费的,对用户数量保持缄默!
  • 不要认为迁移到SQL Server会提高查询性能:MS Access通常可以更好地为您优化查询(它知道需要显示什么并进行大量缓存和优化)
  • 确保您一次只编辑少量数据(不要仅使用动态集查询在数据表中显示大量数据;请改用快照并打开仅包含要编辑的数据的详细信息表单必要时。
  • 在本地缓存复杂查询 构建了一些缓存机制,在本地计算机上保留了复杂查询结果的副本。性能的提升非常惊人,如果查询的变化不大(例如库存操作的日志),您可以在本地持久保存复杂/大查询并根据需要附加新记录。

还有很多话要说。

底线是:您可能正在查看重写,但不要将Access视为解决方案,因为您当前的应用程序写得不好。

答案 10 :(得分:0)

尝试基准测试并向他展示步骤

答案 11 :(得分:0)

以下是您可能考虑直接从Microsoft迁移的原因的深入列表:

http://msdn.microsoft.com/en-us/library/aa902657(SQL.80).aspx

答案 12 :(得分:0)

让人们改变有时可能是一个真正的痛苦。

我不得不说主要论点会有稳定性和速度,但当然你已经知道他们已经知道这仍然不会动作。
另一件事是向他们展示LINQ to SQL的强大功能以及它将使您的应用程序更加清晰。就像丹尼尔·西尔维拉(Daniel Silveira)说的那样,你可以尝试在那里抛出几个统计数据,看看他们是否相信。

我们有一个使用MS访问作为后端的应用程序构建,我不能等到我们得到新的SQL服务器,所以我可以移动所有内容。

答案 13 :(得分:0)

你可以向他展示比较两者的性能结果,但是如果他真的按照自己的方式设置并且拒绝改变,那么除了强迫他以某种方式,你没有什么可以做的。

如果你是他的老板,那么就强迫他改变它以使用SQL。如果没有,那么说服你的老板通过向他展示性能结果来强制改变,并解释它将解决你所遇到的问题。

答案 14 :(得分:0)

Errr,离开球队?你似乎正在与一群完全错误的人合作。现在,如果团队是您的公司,那么您正在与错误的公司合作。

当然,一旦你离开公司,你可以告诉你的客户你可以自己解决网络问题并让他们离开公司。然后给他们一个改进的系统,适用于SQL Server Express。