在VS開發程式的時候連線到SQL SERVER 的LocalDB 都正常,
佈署到IIS之後就出現
無法開啟登入所要求的資料庫 xxx。登入失敗。 使用者 'XXX\yyyy' 的登入失敗
手邊的專案在本機開發的時候,DB是連線到 SQL Server 的 (LocalDB)\MSSQLLocalDB
在開發的時候使用windows 驗證
EF的ConnectionString 如下:
<add name="WORK_DBEntities" connectionString="metadata=res://*/Models.WEBSC.csdl|res://*/Models.WEBSC.ssdl|res://*/Models.WEBSC.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\MSSQLLocalDB;initial catalog=WEBSC_DB;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
這個做法在VS上跑沒什麼問題,連到DB也正常,
但是佈署到IIS之後,出現錯誤訊息:
無法開啟登入所要求的資料庫 xxx。登入失敗。 使用者 'XXX\yyyy' 的登入失敗
造成這個問題的原因是因為原本我使用 "Windows驗證"
但是連線到IIS的人員沒有這個帳號,自然就會出錯,
解決方法很簡單,就是改為SQL Sever驗證,並新增使用者可用帳號,
安全性->登入->按右鍵->新增登入
1.輸入使用者名稱
2.輸入密碼
3.取消強制執行密碼原則
4.選擇預設資料庫
5.確定
修改完畢之後在修改一下部屬在IIS上面的Web.config內的ConnectionString
加上 User ID=設定的帳號;Password=設定的密碼;
把integrated security=True; 移除
<add name="WEBSC_DBEntities" connectionString="metadata=res://*/Models.WEBSC.csdl|res://*/Models.WEBSC.ssdl|res://*/Models.WEBSC.msl;provider=System.Data.SqlClient;provider connection string="data source=.\SQLEXPRESS;initial catalog=WEBSC_DB;User ID=設定的帳號;Password=設定的密碼;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
這樣就可以解決這個問題了