【问题标题】:Window Service In C# - The underlying provider failed on OpenC# 中的窗口服务 - 打开时底层提供程序失败
【发布时间】:2018-01-20 05:51:04
【问题描述】:

大家好,我用 c# 编写了一个 Windows 服务,以便每 10 分钟使用 entityframework 连接到数据库,它在调试模式下工作正常,但是当我在本地系统帐户上发布并安装它时,它会引发异常:

基础提供程序在打开时失败。 无法打开登录请求的数据库“HCClient”。登录失败。 用户“NT AUTHORITY\SYSTEM”登录失败。

我的连接字符串:

添加 name="MyDataBaseName" connectionString="metadata=res:///Model.LocalModel.csdl|res:///Model.LocalModel.ssdl|res://*/Model .LocalModel.msl;provider=System.Data.SqlClient;provider 连接字符串="数据源=.;初始目录=HCClient;集成安全=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient "

当我想在本地服务或网络服务上启动服务时,它返回错误 5:访问被拒绝,尽管我已将这些权限之一授予我的可执行服务 exe 我已阅读与我的错误相关的所有主题,但它们都不起作用

任何帮助将不胜感激

【问题讨论】:

  • 如何创建一个 sql 登录并在连接字符串中使用它?
  • 您必须在尝试使用运行服务的帐户标识的连接字符串中将集成安全设置为 true。要么在有权访问数据库的同一帐户下运行服务,要么在连接字符串中使用 SQL 身份验证。

标签: c# .net windows-services


【解决方案1】:

您的服务以System 用户身份运行,该用户没有(也不应该)有权登录数据库。

要么创建 SQL 登录名并将其凭据添加到连接字符串,要么以有权登录数据库的用户身份运行您的服务。

在服务属性 -> 登录选项卡中,更改帐户:

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多