我们正在使用我们的 .NET 应用程序部署 SQL Server Express,即,我们自己的 SQL Server Express 实例会在应用程序的安装过程中自动安装。
在无人值守安装期间,可以指定用于 SQL Server 代理的用户帐户(通过命令行参数/AGTSVCACCOUNT
,这是非可选的)。但是,似乎所有选项都是(a)不可行或(b)微软不推荐:
NT AUTHORITY\NetworkService
和:域控制器不支持NT AUTHORITY\LocalService
这些选项。(在终端服务器环境中,我们的业务应用程序有时安装在域控制器上。我知道这不是最佳实践,但这正是我们的客户有时会做的事情。)NT AUTHORITY\System
:微软说:“提供本地系统帐户选项只是为了向后兼容。本地系统帐户具有 SQL Server 代理不需要的权限。避免将 SQL Server 代理作为本地系统帐户运行。”自动创建新的本地 Windows 或域用户:我认为这不是一个可行的选择。作为用户,如果我在我的机器上安装的一个简单的业务应用程序自动创建一个新的用户帐户,我会认为它非常具有侵入性。无论如何,应该使用哪个密码?一些预定义的硬编码值(= 安全噩梦)?一些新的随机密码(= 管理噩梦)?
要求用户提供或创建一个帐户:在许多情况下,在他的家庭计算机上安装软件的“简单用户”既不知道也不关心它是什么“用户帐户”,因此这也不是一个选项。无论如何,用户为什么要为他正在安装的业务应用程序的一些内部实现细节(SQL Server 代理服务)而烦恼呢?
我错过了什么明显的东西吗?是否有一些完善的最佳实践来解决这个问题?