我在与一个沉迷于ms访问的高度根深蒂固的开发人员的工作中遇到了一个真正的问题。用户抱怨随机崩溃,锁定错误,冻结,应用程序放缓(特别是在2007年),但似乎非常抵制移动它。大部分时间他们都责怪计算机,并且无法确信这是因为它是一个mdb坐在网络驱动器上而且没有任何关于硬件坐在他们面前的全新。
有一个前端vb程序挂了它,但我不认为它需要花费几个星期的时间来调整,事实上我可能会重新编写它,因为它有一年前的杂乱代码显影剂。
我最好的论据是说服他们我们需要移动它吗?
是否有其他人遇到与开发人员陷入困境的类似问题?
答案 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:
type_Of_TheConnexion
选项来更新所有连接特定代码您将发现的问题主要与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:
如果您的用户数量是平均值(我会说30),那么可能没有真正需要升级:
还有很多话要说。
底线是:您可能正在查看重写,但不要将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)
当然,一旦你离开公司,你可以告诉你的客户你可以自己解决网络问题并让他们离开公司。然后给他们一个改进的系统,适用于SQL Server Express。