【问题标题】:windows service sql connection problemswindows服务sql连接问题
【发布时间】:2010-11-20 11:00:35
【问题描述】:

我需要你的帮助!!!!

我想从 Windows 服务连接到 sql server,但它抛出以下异常:

用户“NT”登录失败 权威\匿名登录'。

我的连接字符串声明如下:

<add name="CoreConnectionString" 
     connectionString="Data Source=10.10.2.102;Initial Catalog=DataBaseName;
                       Integrated Security=True" 
     providerName="System.Data.SqlClient" />

当我使用用户名和密码而不是 Integrated Security=True 时它可以工作,但在最终部署中我不能使用用户名和密码。

怎么办????

【问题讨论】:

    标签: sql-server windows-services


    【解决方案1】:

    当您在连接字符串中定义Integrated Security=True 时,当前登录的任何用户都将尝试连接到您的数据库。当它作为控制台或 Winforms 应用程序运行时,这是您自己的用户帐户。

    但是,如果您将其作为 Windows NT 服务运行,则它是运行此服务的服务帐户 - 在您的情况下显然是 NT AUTHORITY\ANONYMOUS LOGON

    而且错误说得很清楚:此用户帐户没有连接到 SQL Server 的权限。

    您有多种选择:

    • 停止您的 NT 服务并将服务帐户更改为有权访问 SQL Server 的人

    • 允许NT AUTHORITY\ANONYMOUS LOGON 登录您的 SQL Server 并使用您的数据库

    • 在您的 SQL Server 中创建一个特定用户(例如“应用程序用户”)并更改您的连接字符串以专门使用该用户:

      connectionString="Data Source=10.10.2.102;Initial Catalog=DataBaseName;
                        user id=Your-Application-User-here;password=The-Secret-Password"
      

    【讨论】:

    • 感谢您的回答我可以解决以下问题:我将服务“登录”更改为管理员,因此它可以连接到数据库,感谢您的帮助。
    • @marc_s,“更改服务帐户”的真正含义是什么?实际要采取哪些步骤?
    • @ilanS:开始菜单 > 输入“services.msc”并按回车键 > 找到您的服务 > 右键单击​​属性 > 选择第二个选项卡(不确定它在 Windows 版本中的标记方式),它允许您可以定义此服务在哪个帐户下运行 -> 将其设置为对您有意义的任何内容
    • 嘿@marcs,我还有其他基于 Windows 服务的解决方案在生产环境中运行,它们在本地系统帐户上运行。我将 NT 授权用户添加到 sql server 的登录名中。它似乎与其他解决方案相似,但一直失败。在调试模式下它可以工作(当不在 win 服务上时)。太令人沮丧了。请注意,连接似乎有效,但 Select 不起作用:对象“客户”、数据库“MyDB”、模式“dbo”的 SELECT 权限被拒绝。
    • 谢谢@marc_s。似乎nt auth系统被禁用了。多奇怪。我用这个来解决问题:GRANT CONNECT TO [NT AUTHORITY\SYSTEM]
    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2017-05-06
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多