2010-02-18 93 views
0

我用Visual Studio 2008 sp1創建了一個ASP.NET網站,並且在我使用SQL連接的代碼中實現了SQL Server 2008中的一個數據庫。它的所有內容都非常棒,但是我想在IIS7中部署網站(Windows 7 )這是地獄發現如何做到這一點 - (我添加了一個虛擬目錄,並將其轉換爲一個應用程序,然後它沒有告訴我我得到的錯誤之前,我將它複製到inetpub \ wwwroot並將其轉換到應用程序)。這樣做後,我試圖從IIS7運行它,但它只是不斷向我顯示一個錯誤,它在命令sqlconnection.open()中得到,當我從Visual Studio運行網站時,它很好用。我該如何解決這個問題?從IIS7打開SQL連接?

我使用下面的連接字符串:「數據SourceEDI-PC \ SQLEXPRESS;初始目錄=的SyncMaster;集成安全性=真」

我的IIS7是在同一臺計算機上的SQL Server,還等什麼exextly我必須做些什麼才能使它工作?

+0

你介意告訴我們錯誤信息是什麼意思嗎? – 2010-02-18 14:26:29

+0

另外,這個問題可能會在http://serverfault.com/上得到更好的答案。 – 2010-02-18 14:28:32

回答

2

連接字符串可能看起來像這樣...

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

佔IIS下運行,網絡服務連接,這意味着它使用的窗口。從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" /> 
0

當在IIS7(或任何其他IIS)中運行時,與sql server的連接將作爲在iis中運行應用程序池的用戶。在IIS7中,這通常是NETWORK SERVICE。因此,如果您使用集成安全性,則需要授予此帳戶對數據庫的訪問權限。如果您的SQL服務器實例正在另一臺計算機上運行,​​比如SQLSERVER01,並且您的Web應用程序正在您的計算機上運行,​​則您的計算機上的NETWORK SERVICE帳戶將被稱爲YOURMACHINE $,如SQLSERVER01所示。