2012-12-29 90 views
1

我檢查了實例名稱,自動關閉設置爲true,允許在服務器上進行遠程連接檢查。當我打開SQL Server配置管理器時,服務器正在運行。我甚至重新啓動。我已經創建了這個數據庫,就像所有其他人一樣。我使用實體框架並檢查了web.config中的名稱,並且它們匹配。這是嚮導的默認連接字符串 - 我在部署之前用於測試。我只是想不出別的什麼來檢查,以弄清楚爲什麼它不會連接。在SQL Server內部工作一切都很好。嘗試連接到SQL Server時出錯 - localhost

以下是一般錯誤。

A network-related or instance-specific error occurred while establishing a connection to SQL >Server. The server was not found or was not accessible. Verify that the instance name is >correct and that SQL Server is configured to allow remote connections. (provider: Shared >Memory Provider, error: 40 - Could not open a connection to SQL Server)

配置:

connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string='data source=.\SQL_1;attachdbfilename="C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.SQL_1\MSSQL\DATA\A_db.mdf";integrated security=True;connect timeout=10;user instance=True;multipleactiveresultsets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />

在此先感謝。

+2

你能顯示使用的連接字符串嗎? – Steve

+0

請記住,此連接字符串是爲本地主機自行生成的,服務器符合標準。由於奇怪的錯誤,我搬到了服務器。 – OneFineDay

回答

1

讓我先說這個答案吧,說一個SQL實例的正確設置並不像微軟希望你用實體框架來思考那麼簡單。這有點牽扯並且需要你將DBA帽子放一點。

您有錯誤表示Web實例嘗試使用Windows集成安全性連接到SQL服務器。 (a)進程運行的windows用戶(可以在IIS中配置)被授權登錄到SQL服務器,並且在數據庫中擁有有效的登錄名,以及(b)如果SQL服務器與IIS服務器位於同一臺計算機或同一個域中。

鑑於此,我建議使用SQL Server身份驗證。如果你需要知道如何做到這一點,我建議搜索「SQL Server身份驗證設置」 - 這裏有一篇文章,我發現它可以幫助你設置。

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

在一般情況下,我建議採取以下行動:

  1. 連接到使用MS SQL Management Studio中的SQL Server。
  2. 永久附上您的數據庫,然後在您的連接字符串中使用Initial Catalog property而非AttachDbFileName
  3. 然後設置SQL服務器上的登錄用戶名和密碼,並在數據庫中爲它創建一個登錄。
  4. 確保您的登錄只能執行您希望執行的存儲過程。拒絕訪問運行sql語句。

您還需要將用戶名和密碼添加到連接字符串中,並將IntegratedSecurity設置爲false。

讓我們知道如何正確設置SQL服務器。

+0

我會馬上開始。當我可以的時候我會回來 - 忙碌的一週。這是我與實體的第三個Db。前兩個部署得很好,這個令人頭疼。我回顧了之前的那些以檢查差異。我相對擅長尋找答案,但這個問題已經令人筋疲力盡。我很感激迄今爲止所有的幫助。 – OneFineDay

+0

我的網站連接到我的數據庫是由我的託管公司在IIS7中託管 - 不知道這是否會改變任何東西。 – OneFineDay

+0

當我爲數據庫打開SSMS時,我看到了sa和其他登錄(我正在使用它),它的狀態爲_Sql Server Auth_呈灰色 - 是否有幫助? Peoples被設置爲Grant,登錄已啓用。 – OneFineDay

0

此錯誤表示您的提供程序代碼找不到SQL Server。如果您已經檢查了服務器實例名稱(它應該是<yourLocalServer>\SQL_1),那麼它可能是attachdbfilename=參數,因爲這是指定數據庫連接的真正不可靠的方法(您應該使用數據庫名稱而不是文件名),因爲大約有一百個原因可能導致文件名可能與您的應用程序無關。

+0

Current:Data Source = tcp:{myhostingsiteaddress} .com; Initial Catalog = dbname; User ID = dbname; Pwd = password;我收到一個奇怪的錯誤:用戶'NT AUTHORITY \ ANONYMOUS LOGON'登錄失敗._ – OneFineDay

+0

更改con字符串時,我也得到這個錯誤:_Could找不到存儲過程'dbo.aspnet_CheckSchemaVersion'._ – OneFineDay

+0

這兩個錯誤中的哪一個你會得到嗎? (他們不兼容),你在什麼時候得到它? – RBarryYoung

相關問題