我使用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在同一台计算机上,所以我必须做些什么才能使它工作?
答案 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所示。