記錄兩個真實部署至生產環境時遭遇的 SQL Server 權限問題及解決方式。
SQL Server 2008, IIS, SSRS 2008, Visual Studio 2008, ASP.NET
原因: 開發環境使用內建 Web 伺服器,以開發者帳號連線資料庫;發布至 IIS 後,應用程式集區身分 (Application Pool Identity) 成為實際連線資料庫的安全性主體,但資料庫權限表僅設定開發者帳號。
解決: 將 IIS 應用程式集區身分帳號 (如 IIS APPPOOL\MyAppPool) 加入資料庫對應登入,並授予必要權限。同時確認網站身分驗證設定允許使用者帳號存取。
原因: 下拉清單資料來源為預存程序,但呼叫端帳號 (應用程式集區身分) 無該程序的 EXECUTE 權限。
解決: 授予公開角色或特定資料庫角色執行權限:
GRANT EXECUTE ON 程序名 TO PUBLIC;
-- 或
GRANT EXECUTE ON 程序名 TO [db_role];