簡體   English   中英

MVC4 + SQL Server Express使用已知的良好憑據為黃屏顯示“用戶登錄失敗。”

[英]MVC4 + SQL Server Express gives yellow screen with “login failed for user..” using known good credentials

我的任務是將已經在開發環境中成功運行的應用程序部署到暫存環境。 部署已發布的文件並配置IIS之后,我可以看到預期的初始登錄屏幕。 但是,當我嘗試登錄時,我得到:

Cannot open database "db1" requested by the login. The login failed.
Login failed for user 'user1'.

安裝程序包含以下內容:Windows Web Server 2008 R2,SQL Server Express 2008 R2,IIS 7,ASP.NET MVC4和Entity Framework 4.4

谷歌搜索沒有成功的線索-在這里和其他地方發布的答案都與憑據最終不正確或服務器屬性中未啟用雙模式身份驗證有關。 我在服務器屬性中看到啟用了雙模式身份驗證,可以通過在SSMS中使用SQL Server或Windows身份驗證登錄來確認這一點。 這也向我證實了憑據是好的,並且已被服務器接受。 (如果我認為這是錯誤的,請糾正我)

SQL Server,IIS和我正在測試的瀏覽器都在同一台計算機上運行。

這是我的連接字符串:(替換了內部信息)

<add name="app1Entities" connectionString="metadata=res://*/app1.csdl|res://*/app1.ssdl|res://*/app1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\SQLEXPRESS;initial catalog=db1;user id=user1;password=pass1;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

我找到了解決方案。 最終,這是一個權限問題。 這個問題使我走上了正確的軌道: SQL Server:無法打開登錄請求的數據庫

檢查服務器日志顯示:“無法打開明確指定的數據庫”,然后顯示“錯誤18456,嚴重性:14,狀態:38”

谷歌透露狀態38表示權限問題。 該特定用戶已經具有數據庫的“公共”服務器權限以及“ db_datareader”和“ db_datawriter”權限,因此我在數據庫上刪除並重新創建了該用戶,從而解決了該問題。

編輯:

每當我還原數據庫時,這都是發生在我身上。 顯然,SQL Server在還原時對用戶感到困惑。 解決方法是執行此操作:

EXEC sp_change_users_login UPDATE_ONE, 'username_of_user', 'username_of_user';

還原后,可以完全解決該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM