【问题标题】:SQL Connection Using Domain Username And Password使用域用户名和密码的 SQL 连接
【发布时间】:2015-09-04 20:57:51
【问题描述】:

我开发了一个 ASP.Net 网站。我面临的问题是,当我使用 web.config 中的连接字符串(“Data Source=.\;Initial Catalog=ITS;Integrated Security=True”)在系统上的 IIS 中运行应用程序时,它运行良好。我连接到数据库并显示数据。

我已经在域计算机上安装了数据库,并在 IIS 中使用了 ASP.NET 包。这里的问题是它没有连接到数据库。我尝试使用这样的连接字符串“Data Source=.\;Initial Catalog=ITS;UID=S1\ISLWW74562S;PWD=delta$%67;Integrated Security=True”

其中 S1 是域名,ISLWW74562S 是用户名。

报错找不到登录S1\ISLWW74562S$

谁能帮助我如何以及在域计算机上使用连接字符串的正确方法是什么。

谢谢

【问题讨论】:

    标签: c# asp.net sql-server database-connection connection-string


    【解决方案1】:

    从连接字符串中删除 UID=S1\ISLWW74562S;PWD=delta$%67,而是在 IIS 中为您的网站创建一个特殊的应用程序池,并将该应用程序池配置为在域帐户下运行。

    查看this,了解如何设置应用程序池以使用自定义帐户。

    此外,请确保您使用的域帐户对您要使用的 SQL 数据库具有所需的访问权限。

    如果您使用的是 Microsoft SQL 服务器,那么您需要使用 SQL 管理工作室为域用户创建一个新登录名,并为其提供对您正在使用的数据库的适当访问权限。

    【讨论】:

    • 每当我使用 SQL Management Studio 时,我都必须以管理员身份运行它。那里使用的管理员用户名是 ISLWW74562S\a154ey,管理员密码是 delta$%67。然后我可以运行 SQL 服务器并查看其中的表和详细信息。我应该在连接字符串中使用这个管理员用户名和密码吗?
    • 将密码放入连接字符串是一个安全问题。我的建议是让用于在 IIS 中运行网站的应用程序池在具有数据库访问权限的帐户下运行(例如 ISLWW74562S\a154ey)。
    • 错误依然存在。它显示“用户 S1\ISLWW74562S$ 登录失败”。其中 S1 = 域名,ISLWW74562S$ = 机器名。甚至我在 SQL Server 中为名为 S1\ISLWW74562S$ 的数据库添加了一个登录名,赋予它 db_owner 和 sysadmin 权限。
    • 如果您在 IIS 中有匿名身份验证,那么您可能需要指示 IIS 使用应用程序池标识。请参阅this,了解在使用匿名身份验证时如何让 IIS 使用应用程序池标识。
    • 不允许匿名认证。我正在使用表单身份验证登录该站点。即使我已授予 SSMS 中登录 S1\ISLWW74562S$ 的所有权限。但仍然登录失败。
    【解决方案2】:

    当您使用集成安全时,您无需指定用户名和密码。 Sql Server 不允许您这样做。相反,它正在寻找由域控制器颁发的令牌,这就是它所接受的全部。

    您可以通过使用 IIS 中的 Impersonation 功能或通过设置应用程序池以使 IIS 以该用户帐户身份运行来为您的应用程序获取类似的令牌。

    【讨论】:

    • 问题是如果我必须对系统进行任何类型的更改,我必须通过在管理员模式下运行应用程序来完成。即使我必须以管理员身份运行 IIS。我会怎么做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 2019-05-08
    • 1970-01-01
    相关资源
    最近更新 更多