【问题标题】:Changing connection string from SQL Server to windows authentication将连接字符串从 SQL Server 更改为 Windows 身份验证
【发布时间】:2014-04-22 18:46:47
【问题描述】:

我必须从 SQL Server 身份验证更改为 Windows 身份验证:

我的 SQL Server 身份验证字符串是:

 <add name="GCDataContext" 
      connectionString="Data Source=111.78.152.64;Initial Catalog=GC;User Id=sa;Password=xxxx;Trusted_Connection=False;Persist Security Info=True;MultipleActiveResultSets=True" 
      providerName="System.Data.SqlClient" />

更改为(不工作)

 <add name="GCDataContext" 
      connectionString="Data Source=111.78.152.64;Initial Catalog=GC;Persist Security Info=True;Integrated Security=True;" 
      providerName="System.Data.SqlClient" />

谁能帮我解决这个问题?

Integrated Security=True用于Windows认证,但连接未建立。

【问题讨论】:

  • 制作一个测试UDL文件以获取参考windows身份验证的连接字符串。
  • sql server 是否启用了windows auth?应用程序在哪个帐户中运行? (提示:对于 asp.net,它可能不是一个有用的) - 该帐户是否有权访问服务器?和数据库?最重要的是:究竟是什么错误信息?
  • 一方面与sa 连接,另一方面与当前连接的windows 用户连接。该用户是否具有访问您的数据库的适当权限?
  • 哦,你改变了两者之间的 MARS 设置;我并不是说 MARS 是对还是错,但您可能希望暂时保持不变,以减少活动部件的数量。
  • @David Brabant - 我可以为哪个用户检查访问数据库的权限?我在机器上安装了应用程序,在其他机器上安装了数据库。登录用户是否假设在 - SECURITY -LOGINS 中创建了一个登录名??

标签: c# sql-server


【解决方案1】:

默认情况下,ASP.NET 应用程序不模拟。因此,当他们使用 Windows 身份验证连接到 SQL Server 时,他们使用 Web 应用程序的进程标识。使用这种方法,您的前端 Web 应用程序对其用户进行身份验证和授权,然后使用受信任的身份访问数据库。数据库信任应用程序的身份,并信任应用程序正确地对调用者进行身份验证和授权。

要使用 Windows 身份验证连接到 SQL Server,请执行以下步骤:

步骤 1. 配置连接字符串。 用于 Windows 身份验证的连接字符串必须包含 Trusted_Connection=Yes 属性或等效属性 Integrated Security=SSPI,

步骤 2. 配置 SQL Server 安全性: 您需要为应用程序的服务帐户创建 SQL Server 登录名,并授予访问数据库的受限权限。 您的应用程序的服务帐户通常是网络服务帐户,这是用于在 Windows Server 2003 和 IIS 6.0 上运行 ASP.NET 应用程序池的默认帐户或自定义服务帐户。

为此,请执行以下操作-

                 a).Create a SQL Server login for your application's account.
                 b).Map the login to a database user in the required database.
                 c). Provide appropriate permissions

【讨论】:

    【解决方案2】:
    <add name="GCDataContext" 
          connectionString="Data Source=111.78.152.64;Initial Catalog=GC;Integrated Security=True" 
          providerName="System.Data.SqlClient" />  
    

    这应该可行。

    您只需删除Persist Security Info=True
    你也可以复制我上面的代码

    【讨论】:

      【解决方案3】:

      删除 : Persist Security Info=True; 如果无法连接,请验证数据库权限和权限。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-08
        • 1970-01-01
        • 2011-04-10
        • 1970-01-01
        相关资源
        最近更新 更多