我们为客户开发了在 Windows Server 2019 上运行的 SQL Server(2019) 备份软件。
该应用程序(.net Windows Forms)有一个界面来配置备份(例如选择备份的日期、每天的备份时间等)和进一步的配置(到 SMTP 服务器的数据、邮件分发列表等)。此外,客户端包含恢复数据库的功能。备份通过计时器启动。
该应用程序运行良好,但必须 24/7/365 运行。
问题描述:
应用程序在客户服务器上运行,客户不允许密码永不过期的帐户。
此外,服务器(至少)每两周自动重新启动一次。所以......我们必须至少每两周访问一次服务器并启动我们的新客户端,这不是很好。
因此,我们考虑将备份App“拆分”成两部分:
- Windows 客户端(具有停用的备份和电子邮件功能)
- Windows 服务(在启动时读取配置文件,进行备份,发送电子邮件)
=> 目标:服务器重启后自动启动备份服务(无需手动启动)。
需求:
服务需要能够访问本地磁盘(读取 (.ini) 配置文件,存储备份)、SQL-Server(安装在同一台服务器上)和 SMTP-Server(位于另一台客户服务器上) ) 能够发送电子邮件。
如上所述,目标是使用没有密码的“系统帐户”(必须定期更改)。
我们是开发人员,而不是系统工程师......因此“初学者问题”:
据我们所知,“本地系统”,“本地服务”和“网络服务”有系统帐户(也许还有更多...... )。
上述帐户之一是否具有所有所需的权利(或是否有其他帐户)?
谢谢!
是的,您绝对需要将交互式“配置”和“服务”部分分开。服务部分需要一直运行,配置部分只在需要时运行。
如今,让应用程序在 Windows Server 的“控制台”上运行的想法充其量是很麻烦的,并且随着每个版本的 Windows 变得更加困难。生产了 20 年后仍处于生产阶段的 Windows 服务,我有点惊讶您在开发和测试期间没有遇到这个“挑战”。
但不管怎么说 ...
鉴于 Windows 支持许多密码永不过期的“系统”帐户,这对您的应用程序来说是一个奇怪的“要求”。
问题:这个“要求”真的相关吗?
要使用“配置”应用程序,您需要登录机器,因此您将使用为此目的提供的任何凭据 - 那些交互式、用户特定的凭据应定期过期。
“服务”部分应该只是运行并做一些事情。
如果这些系统帐户的密码过期,Windows 生态系统将完全无法使用。
是的,一点没错。
任何“服务”帐户都应具有此级别的访问权限。
访问任何“关闭”框需要一个网络感知帐户。
网络服务可能是您最好的选择。
危险,威尔罗宾逊!
您是否认真地说您的“备份”实用程序正在将SQL Server 备份存储在与SQL Server 实例本身相同的计算机上?
这会破坏您的整个解决方案。
如果您丢失了运行 SQL Server 的机器,那么您也将丢失数据库的备份,因为存在备份的唯一原因是保证无论发生什么可怕的事情都可以恢复数据库,大错特错,那么您的“备份解决方案”就完全被破坏了。
您绝对必须将备份从该服务器上移到另一台机器上,远离它们所保护的数据库。