【问题标题】:Unable to connect to SQL Server 2008 in .Net无法在 .Net 中连接到 SQL Server 2008
【发布时间】:2012-07-05 19:12:15
【问题描述】:

我正在开发 C# Web 服务。

我已经部署了一个 Web 服务,该服务在我的本地系统上运行良好,但是当我尝试在我的虚拟专用服务器上运行相同的服务时,它返回一个错误。

这是我的连接字符串

Data Source = <serverinstance>\\SQLEXPRESS; Initial Catalog = DomainTable; User ID= <serverinstance>\\admin; Password = <Windows_Login_Password>

在此之前我使用的是这个连接字符串

Data Source=<serverinstance>\\SQLEXPRESS; Initial Catalog=DomainTable; Integrated Security=SSPI";

它们都不适合我。请帮助它真的很重要

【问题讨论】:

  • 数据库是否与 IIS 在同一台机器上运行?
  • 请提供实际详细信息,例如您对&lt;serverinstance&gt; 拥有的信息(是服务器名称、本地主机、IP 地址等)以及“返回错误”的意思——例如包括实际错误
  • 是的sqlserver 2008安装在同一台机器上
  • 我用的是虚拟专用服务器,SQL服务器的名字是S15994212\SQLEXPRESS
  • 如果我们可以看到错误但假设它是登录错误,那么应用程序池用户是否能够访问该 sql 实例?

标签: c# .net database sql-server-2008


【解决方案1】:

数据源=服务器实例\SQLEXPRESS;
-----------------------------------------^ 这里只有一个斜线

还要确保远程服务器可以看到您引用为&lt;serverinstance&gt; 的任何内容。您可能将其命名为localhost,但您的 Web 服务器不认为您的计算机是 localhost。它也可能无法通过名称访问它,特别是如果它位于不同的域中。

如果您尝试使用 Windows 身份验证,那么您根本不应该使用:

用户 ID = serverinstance\admin;密码 = Windows_Login_Password

哇,永远不要在任何地方硬编码 Windows 密码。如果要使用 SQL 身份验证,则设置 .否则,您应该使用它而不是用户 ID/密码:

持久安全信息 = true;

并确保 IIS 用户已被授予访问您的 SQL Server 的权限。

【讨论】:

  • 整个字符串用双引号括起来,因此我使用双反斜杠
  • 在 C# 中有一些方法不需要这样做。
【解决方案2】:

试试吧;

"data source=.\\SQLEXPRESS;Integrated Security=SSPI;initial catalog=DomainTable"

我相信用户名/密码一般只有远程连接需要,你必须为指定的DB设置它们。如果您没有要求登录凭据,上述连接字符串应该可以让您继续在本地计算机上运行 sqlexpress 实例。

编辑

如果您使用 IIS 来托管,这里是我最近的一篇文章的一部分,用于部署和设置应用程序池以使用 SQL Express 2008。即使您不使用 IIS,您仍然需要做一些事情像这样使用 SQL Server 正确设置您的托管环境。

第 1 步为 IIS USER 创建数据库登录

在 MS SQL SERVER 的安全部分,需要右键单击用户和您的 IIS APPPOOL(IIS APPPOOL\apppoolname,在第 1 部分第 2 步中创建)。查看 dp.'s answer here 了解更多步骤 - Add IIS 7 AppPool Identities as SQL Server Logons

第 2 步为 IIS USER 设置数据库权限

右键单击数据库名称,然后单击属性。在权限部分添加您刚刚创建的 APPPOOL 用户,一定要给他 Execute \Select 所需的权限。

注意:Website1 也需要执行、选择、删除、插入权限。 Website2 也在使用这个不应该的应用程序池,因为我们不需要让用户在 trimdynamics 应用程序中拥有这种功能。我们可以分离应用程序池,以便我们的修剪动态 IIS USRS 仅获得执行和选择权限。

如果这没有帮助,如果没有对托管结构的具体了解,就很难判断到底发生了什么,因为从开发环境部署到生产环境时会有很多问题:(

【讨论】:

  • @Pirate DEFINE “不工作”请。例如将实际错误消息添加到您的问题中!
  • @Pirate 刚刚注意到您将它部署在您的开发服务器上。这会在您第一次使用时引起很多头痛。你必须这样想——现在 IIS / 一些服务正在托管你的网站,而不是你的本地机器,事情有点不同。在您的开发环境中,一切正常,因为您以当前用户身份执行查询,该用户具有特权。当您托管您的应用程序时,例如在 IIS 中,您知道有一个 IIS 池试图在您的数据库上执行查询,它不会自动拥有权限。您是否收到用户权限错误
  • @ChrisBuckler 这是我们收到的错误消息“无法打开登录请求的数据库“DomainTable”。登录失败。用户“S15994212\IWAM_plesk(default)”登录失败。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多