2012-05-06 167 views
0

我已經閱讀了堆棧溢出和MSDN這樣的其他問題,但仍無法找到此問題的答案。IIS無法連接到SQL Server 2008R2

我的開發機器正在運行VS2010SP1和IIS7。 IIS7安裝在.Net框架之後,所以我不得不手動配置網站。我在本地將應用程序部署到IIS,而不是使用Casinni。

環境:

  • 上的Win7 64位(開發機)
  • IIS上的Win7 64位運行(開發機)
  • SQL Server 2008上的Win2008運行(服務器)
Visual Studio 2010中

在Visual Studio網站的選項中,我選擇使用IIS並單擊創建虛擬目錄,該虛擬目錄起作用(即它成功創建目錄)。

但是當我再來看,我得到一個SQL連接錯誤說該應用程序:

而 建立coneection到SQL Server時出現與網絡相關的或特定於實例的錯誤。服務器未找到或 無法訪問。驗證實例名稱是否正確,並且SQL Server配置爲允許遠程連接。

SQL Server配置爲允許遠程連接,我可以使用相同的憑據(目前sa帳戶從開發機連接到SQL Server Management Studio中,是的,我知道這是很糟糕,並會在稍後進行更改,這僅用於開發目的)。

我試着將machine.config文件的條目LocalSqlServer更改爲指向服務器以防萬一,但即使服務器是遠程的而不是本地的也沒有幫助。

我也嘗試添加該到Web.config:

<remove name="LocalSqlServer" /> 
<add name="LocalSqlServer" 
    connectionString="Data Source=esdc01;Initial Catalog=ECS;Persist Security Info=True;User ID=sa;Password=******;MultipleActiveResultSets=True;Network Library=dbnmpntw;" 
    providerName="System.Data.SqlClient" /> 

連接字符串中web.config是正確的。

如果我進入VS2010網站的屬性,並將其更改回「使用Visual Studio開發服務器」,那麼應用程序工作正常,它會連接到SQL Server。

因此,當我使用IIS時,web.configmachine.config被訪問用於它們的連接字符串...那麼IIS在哪裏查找連接字符串?我很困惑!

在服務器上,啓用了命名管道和TCP/IP。

+0

如果我用服務器IP地址替換servername esdc01,它仍然不起作用。 – rmcsharry

回答

0

你說服務器上啓用了命名管道和TCP/IP。

嘗試刪除「Network Library = dbnmpntw」元素。如果這不起作用,請嘗試將其更改爲「Network Library = dbmssocn」並查看它是否將使用TCP/IP進行連接。

+0

謝謝,我都試過,都沒有工作。如果我只是使用Casinni dev服務器而不是IIS,它們也不起作用,但至少使用dbnmpntw設置可以與Casinni一起使用。 – rmcsharry