0

在大型德国托管服务提供商的虚拟服务器上运行 SQL Server 2008 R2 和 ASP.NET MVC 2 Web 应用程序。

我在连接到 SQL Server 时遇到问题。

在 localhost 这个连接字符串工作正常:

 @"Data Source=LOCAL-HP;Initial Catalog=OnlineVertrag;Integrated Security=True";

我在服务器上使用了类似的连接字符串:

@"Data Source=MYSERVER\SQLEXPRESS;Initial Catalog=OnlineVertrag;Integrated Security=True";

但那里什么也没有发生。

这是我正在尝试连接的项目:http: //www.hotcont.eu/OnlineVertrag/Home

4

2 回答 2

4

根据您的评论,您在服务器上的 SQL 实例具有用户名/密码组合。您不能将集成安全连接用于需要 SQL 身份验证的 SQL Server 连接。

使用主机提供给您的登录信息,您应该将连接字符串更新为以下内容:

Server=MYSERVER\SQLEXPRESS;Database=OnlineVertrag;User Id=myUsername;
Password=myPassword;

取自ConnectionStrings.com

编辑

好的 - 我想我知道你现在在处理什么。您有一台托管在大型托管服务提供商上的虚拟机->这意味着您可以控制机器本身(又名远程桌面管理或其他东西?)

我提供的 SQL 连接字符串用于 SQL 服务器帐户 -> 表示您在 SQL 服务器本身中实际创建的那些。您提供的 SQL 连接字符串使用来自 Windows 的当前登录用户的用户帐户信息连接到 SQL。

所以这里是本地主机和虚拟服务器之间的断开连接。当您在 localhost 上运行时,我将假设您正在使用 Visual Studio 的内置 Web 服务器或类似的服务器。大多数情况下,在调试期间,Web 应用程序在机器的登录用户下运行- 也就是:你。您有权访问自己的 SQL 数据库,因此没有问题。但是...当您将 Web 应用程序部署到 IIS 实例时,Web 应用程序不再以登录用户身份运行,而是您的应用程序所属的应用程序池的身份。通常这类似于 NETWORKSERVICE。

您可以选择三个选项

  1. 启用并使用 SQL 用户帐户来连接您的 Web 应用程序和 SQL 服务器。如果您选择走这条路线,则需要使用我在上面提供的连接字符串。

  2. 登录到您的 SQL 服务器并将您的应用程序池的身份添加到 SQL 服务器的允许用户和您的数据库中。

  3. 将您的应用程序池的身份更改为服务器上的实际用户帐户(坏主意)

大多数 Web 应用程序都使用第一个选项,因为它允许您执行一些操作,例如为您托管的每个应用程序创建一个不同的 SQL 用户,以及您可以为 SQL 用户显式定义可能需要访问的每个数据库的权限to(例如,不允许 SQL 用户 DROP 表)。

编辑 2

您尝试连接的方式听起来应该是使用共享内存协议,但它可能会尝试通过 TCP/IP 进行连接。我之前忘记了这一点,但是大多数 SQL 安装都没有设置为在第一次安装时侦听 TCP/IP 接口。要检查您的配置,请单击开始按钮(或 orb 或 Microsoft 现在所称的任何内容)-> 所有程序 -> Microsoft SQL Server 2008 -> 配置工具 -> SQL Server 配置管理器。这将打开一个新窗口,左侧有一些选项。单击SQL Server Network Configuration。确保 TCP/IP 和共享内存设置为启用。如果是 64 位安装,您可能应该对 theSQL Server Network Configuration (32 bit)SQL Server Network Configuration

http://msdn.microsoft.com/en-us/library/ms191294.aspx

于 2012-10-25T21:49:32.423 回答
0

试试这个

Data Source=MYSERVER\SQLEXPRESS;Initial Catalog=OnlineVertrag;Provider=SQLNCLI10;Integrated Security=SSPI;Auto Translate=False

我希望这对你有用。

于 2012-10-30T22:13:19.733 回答