从IIS7打开SQL连接?

时间:2010-02-18 14:23:01

标签: asp.net sql sql-server iis-7

我使用Visual Studio 2008 sp1创建了一个ASP.NET网站,在代码中我使用SQL连接来访问我的SQL Server 2008中的数据库。这一切都很好但后来我想在IIS7中部署网站(Windows 7)发现如何做到这一点 - (我添加了一个虚拟目录并将其转换为一个应用程序,然后它才显示我在将其复制到inetpub \ wwwroot并将其转换为应用程序之前所遇到的错误)。在做完之后我尝试从IIS7运行它,但它只是一直向我显示它在命令sqlconnection.open()中获得的错误,当我从Visual Studio运行网站时,它运行良好。我该如何解决这个问题?

我使用以下连接字符串:“Data SourceEDI-PC \ SQLEXPRESS; Initial Catalog = SyncMaster; Integrated Security = True”

我的IIS7和SQL Server在同一台计算机上,所以我必须做些什么才能使它工作?

2 个答案:

答案 0 :(得分:2)

您的连接字符串可能看起来像这样......

<add name="ConnectionString" 
     connectionString="Data Source=servername;
                      Initial Catalog=dbname;
                      Integrated Security=True"
     providerName="System.Data.SqlClient" />

这意味着它正在使用IIS运行的NET帐户NETWORK SERVICE来连接。从Visual Studio运行时,它使用可以访问SQL服务器的Windows帐户。

创建一个sql用户以用作服务帐户,并在连接字符串中指定该信息。这样,它将尝试使用您在Visual Studio和IIS中创建的同一帐户进行连接。

<add name="ConnectionString" 
     connectionString="Data Source=servername;
                       Initial Catalog=dbname;
                       Persist Security Info=True;
                       User ID=sqluser;
                       Password=sqruserpassword"
     providerName="System.Data.SqlClient" />

答案 1 :(得分:0)

在IIS7(或任何其他IIS)中运行时,与sql服务器的连接是在iis中运行应用程序池的用户。在IIS7中,这通常是NETWORK SERVICE。因此,如果您使用集成安全性,则需要授予此帐户对数据库的访问权限。如果您的SQL Server实例正在另一台计算机上运行,​​例如SQLSERVER01,并且您的Web应用程序正在您的计算机YOURMACHINE上运行,则计算机上的NETWORK SERVICE帐户将被称为YOURMACHINE $,如SQLSERVER01所示。