是否需要作为运行服务的用户安装具有SQL Server传输和Windows身份验证的NServiceBus端点?

是否需要作为运行服务的用户安装具有SQL Server传输和Windows身份验证的NServiceBus端点?,nservicebus,Nservicebus,我正在安装一个使用SQL Server传输的NServiceBus4.x端点。运行安装程序时(通过Octopus Deploy,默认情况下作为本地系统运行) \NServiceBus.Host.exe/install NServiceBus.Production/serviceName=$name/username:$username”/password:$password …我得到一个错误: 未能执行安装程序:System.Data.SqlClient.SqlException(0x80131

我正在安装一个使用SQL Server传输的NServiceBus4.x端点。运行安装程序时(通过Octopus Deploy,默认情况下作为本地系统运行)

\NServiceBus.Host.exe/install NServiceBus.Production/serviceName=$name/username:$username”/password:$password

…我得到一个错误:

未能执行安装程序:System.Data.SqlClient.SqlException(0x80131904):用户“DOMAIN\MACHINENAME$”登录失败。

如果安装程序在运行时连接到SQL Server,则这是预期的行为:本地系统在离开机箱时成为计算机帐户,并且计算机帐户无权访问传输数据库

但是,我不打算将端点作为本地系统运行。相反,我打算使用能够访问传输数据库的域服务帐户,因此

是否可以使用SQL Server transport作为无权访问传输数据库的用户安装NServiceBus端点


附加问题:在4.x之后的NServiceBus版本中,此行为是否已更改?

这里的问题是,
NServiceBus.Host.exe
使用您所说的Octopus Deploy的凭据执行,并且
/install
运行NServiceBus安装程序

一些备选方案:

  • 运行Octopus部署代理,其权限还允许在此部署阶段对数据库进行架构更改

  • 不要直接执行主机,而是启动具有不同凭据的shell,以便使用具有适当权限的凭据运行主机

  • 不要使用主机,而是使用自托管。通过
    sc.exe
    注册该服务以使用正确的凭据注册windows服务,并使用
    endpointConfiguration.EnableInstallers()
    控制是否必须运行安装程序

  • 使用(3)中的自托管,不要使用
    endpointConfiguration.EnableInstallers()
    但要编写所有任务的脚本,并让这些任务独立于“windows服务”注册任务运行。或者,您可以使用
    sc.exe
    注册
    NServiceBus.Host.exe
    ,以便
    /install
    不会运行

    • 这意味着大部分脚本都是自己生成的。有些组件有脚本生成器,但我们的文档中有很多关于脚本的指导

  • 我建议不要总是运行
    endpointConfiguration.enablesinstallers()
    在端点上。您应该区分部署和运行时。在部署期间,您将创建表、架构等,但在运行时,该帐户不应具有创建或删除表的权限,并且运行最低权限。

    这里的问题是,
    NServiceBus.Host.exe
    是使用凭据执行的当然,正如您所说,Octopus部署和
    /install
    运行NServiceBus安装程序

    一些备选方案:

  • 运行Octopus部署代理,其权限还允许在此部署阶段对数据库进行架构更改

  • 不要直接执行主机,而是启动具有不同凭据的shell,以便使用具有适当权限的凭据运行主机

  • 不要使用主机,而是使用自托管。通过
    sc.exe
    注册该服务以使用正确的凭据注册windows服务,并使用
    endpointConfiguration.EnableInstallers()
    控制是否必须运行安装程序

  • 使用(3)中的自托管,不要使用
    endpointConfiguration.EnableInstallers()
    但要编写所有任务的脚本,并让这些任务独立于“windows服务”注册任务运行。或者,您可以使用
    sc.exe
    注册
    NServiceBus.Host.exe
    ,以便
    /install
    不会运行

    • 这意味着大部分脚本都是自己生成的。有些组件有脚本生成器,但我们的文档中有很多关于脚本的指导

  • 我建议不要总是运行
    endpointConfiguration.enablesinstallers()
    在端点上。您应该区分部署和运行时。在部署期间,您将创建表、架构等。但在运行时,该帐户不应具有创建或删除表的权限,并且不应具有运行最低权限。

    我们正在查看此信息。我的同事Ramon将于明天回复您我们正在查看此my c奥利格·雷蒙明天会给你回电