如何使用域帐户使用 c# 连接到数据库?

Posted

技术标签:

【中文标题】如何使用域帐户使用 c# 连接到数据库?【英文标题】:How do I use a domain account to connect to a database using c#? 【发布时间】:2011-03-30 10:00:42 【问题描述】:

我想使用网站设置项目中的自定义操作创建一个数据库。但是我在“网站设置项目”中遇到了问题,但是当使用常规的“设置项目”时,一切都很好,没有问题......

问题出在我想访问数据库时的身份验证。似乎当我使用“安装项目”时,它使用了我的实际用户名、密码和域。而在“网站设置项目”中,它使用我的计算机名,因此它无法工作。因为,它无权访问数据库。

所以,我需要一种方法来告诉网站使用我的帐户(我将通过自定义操作传递它),其中包括我的用户名、密码和域。

我如何在 C# 中做到这一点?有没有 API 可以做到这一点?

谢谢

【问题讨论】:

【参考方案1】:

您不能在连接字符串中传递 Windows 凭据。您将如何做到这一点是在 IIS(7 及更高版本)中运行您的网站,并将您的应用程序池标识配置为在您想要的帐户下运行。看这里:http://technet.microsoft.com/en-us/library/cc771170(WS.10).aspx

这不是通常的做法。通常你会在你的 sql server 中创建一个 sql 帐户,然后在你的连接字符串中你会做这样的事情:

“数据源=[ServerName];初始目录=[DatabaseName];用户 ID=[SqlAccount];密码=[SqlAccountPassword]”

然后,您可以在 sql 中更进一步,并配置授予网站帐户的访问权限等。

【讨论】:

我会质疑您通常在 SQL 中创建帐户。正常的方法是使用 Windows 帐户并模拟该帐户以使用 SSPI 进行连接 - 请参阅 msdn.microsoft.com/en-us/library/ff647396.aspx @Steve,根据我的经验,模仿不是常态。这是因为它破坏了连接池并且仅在 Intranet 场景中工作。 @Steve 第一步是使用模拟,但老实说,我看不出有什么理由不使用 sql 帐户,它只是为您提供了更大的灵活性? 根据 MSDN “如果可能,请使用 Windows 身份验证。”见msdn.microsoft.com/en-us/library/aa905171(SQL.80).aspx。这个话题有很多,建议你搜索关于 SO 的其他问题来讨论它 - 有几个 :-) @BenCr - 它不会中断连接池 - 再次已经在 SO 中介绍过,例如***.com/questions/692500/…

以上是关于如何使用域帐户使用 c# 连接到数据库?的主要内容,如果未能解决你的问题,请参考以下文章

C# 使用 REST API 连接到 Azure 媒体服务帐户

如何使用服务帐户密钥通过 ADF 连接到 Google 云存储

C# - 连接到 (RAS) *** 时如何获取 IP 地址

使用 Active Directory 服务帐户从 .NET 连接到 SQL Server

如何使用c#连接到access 2007

如何使用 C# 和 SQL Server 连接到数据库