1

我使用 VB.NET 开发了一个应用程序,并使用 SQL SERVER Express 作为数据库后端。该应用程序有 5 个用户配置文件。(每个用户配置文件提供不同的服务)。

部署要求:该应用程序将部署在具有 10-20 台机器的 LAN 上。可以从任何机器访问任何用户配置文件。对数据库条目的任何更改都应反映在所有机器上。

我对如何实现此部署感到困惑。根据我的研究:

1.数据库应该部署在一台机器上。这台机器将充当数据库服务器。

我的问题:我熟悉访问本地计算机上的数据库,但是如何访问远程数据库?连接字符串是唯一需要解决的问题还是还有其他问题?我需要在所有机器上还是只在服务器机器上安装 SQL SERVER?我必须处理并发问题(多个用户同时访问/修改相同的数据)还是由数据库引擎处理?

2.应用程序可以通过两种方式部署: i. 将可执行文件存储在服务器上的共享网络驱动器上。在每台机器的桌面上提供快捷方式。ii. 将可执行文件本身存储在每台机器上。

我的问题:方法 1 是如何工作的?(在多台机器上运行的可执行文件的一个实例?:s)在方法 2 中,数据库条目的更改是否会适当地反映在所有机器上?在方法 2 中,如果应用程序发生更改,是否有任何方法可以在所有机器上更新它?(除了在每台机器上重新部署它)哪种方法更可取?我需要在所有机器上安装 .NET 框架吗?

我是否必须进行任何其他系统更改(防火墙、安全性、权限)?如果可以选择在每台机器上安装操作系统,那么对于这样的应用程序环境,哪个版本的 windows 更可取?

这是我第一次在网络上部署多用户数据库应用程序。我将非常感谢任何建议/建议、参考等。

4

2 回答 2

0

由于您可以亲自访问所有机器,因此您的任务相对简单。在您选择的数据库服务器上安装 SQL Express。您应该禁用安装程序中的“隐藏高级选项”;这将允许您启用 TCP/IP 和 SQL Browser 服务;您也可能需要混合模式身份验证 - 取决于您的应用程序以及网络是域还是点对点。如您所知,需要修改连接字符串;服务器上 Windows 防火墙的默认配置也将阻止对 db 引擎的访问 - 您需要在防火墙中为浏览器服务和 SQL 服务器本身打开例外。打开这些作为exe的例外,而不是端口号等。或者,如果您的服务器和外部世界之间有防火墙,您可能决定关闭服务器上的防火墙,至少在你让它工作的时候是临时的。不,您不需要在工作站上安装任何 SQL Server 组件。并发问题应由您的应用程序处理。我不想粗鲁,但如果您不知道这一点,您可能还没有准备好将您的应用程序部署到生产环境。究竟需要对并发执行什么操作取决于应用程序的要求和您使用的数据访问技术。如果您的应用程序将主要用于输入新记录,然后稍后再读取它们,那么您可能会在没有太多并发处理代码的情况下摆脱困境;这是用户同时编辑出现问题的现有记录的场景 - 但您至少需要进行基本处理。重新定位客户端 exe 的位置 - 您的任何一个建议都可以工作。最简单的是使用 .msi 文件在每台机器上进行本地安装;您可以将 msi 的主副本放在服务器上。您可以使用登录脚本、组策略等,或者确实单击一次。为了在这个阶段保持简单,我只会从 .msi 安装到每台机器上——听起来你已经足够复杂了,你已经开始思考了。服务器上的 exe 副本可以由终端服务器 Citrix 等以更复杂的方式处理。无论哪种方式,假设您的应用程序正常工作,是的,所有更改都将针对同一个数据库进行,并且对所有工作站可见。是的,所有机器上都需要 .net 框架——但是,它很可能已经存在。不同版本的 Windows 附带不同版本的 Fx 内置和/或通过 Windows 更新进行更新;当然,这也取决于您构建 exe 的版本。是的,我希望在这方面有一些帮助。祝你好运。

于 2013-06-24T11:05:21.340 回答
0

问题 1:您需要为每个“配置文件”创建 SQL Server“角色”。给定的用户将被分配一个或多个或那些“角色”。您的每个表、视图、存储过程和触发器都需要分配一个或多个角色。这是一项混乱的业务,这就是为什么 DBA 大部分时间都得到很多钱来闲逛的原因(我在开玩笑,不要投票给我)。

问题 2:如果您“远程进入”服务器,您会看到服务器屏幕,这比工作站演示要枯燥得多。阅读“一键式”,这使您能够检测主机上更新的应用程序,并自动将更新部署到用户的机器上。这摆脱了每次修复某些东西时运行大约 20 台机器安装升级的相当混乱的业务。

于 2013-06-21T03:55:50.243 回答