問題描述:
工作中總會時不時地遇到一些這樣的情況,在開發或者QA上程序運行總是好好的,但到了生產環境,程序卻跑不出來了。印象比較深刻的是之前遇到的兩個以sql server為數據庫的網頁項目,一是訪問網頁錯誤,二是網頁上的下拉列表沒有結果。
環境:SQL SERVER 2008, IIS, SSRS 2008, Visual Studio 2008, ASP.NET
解決方法:
第一種情況:
將網頁發布到生產環境之後,系統會檢測你個人的系統登陸賬號是否有權限訪問該網頁,該權限控制是配置在數據庫裡面幾張表裡面的。某同學在為自己和小伙伴們配置好了權限之後,發現在登陸生產環境還是會出錯。而實際情況是,該同學忽略了IIS裡面的application pool identity賬戶。在asp.net debug模式下,內置的網頁服務器使用自己的系統帳號去訪問數據庫。可網頁一旦發布到某IIS服務器上之後,還需要將數據庫的訪問權限賦予IIS裡面配置的application pool identity賬戶。(當然還要將該IIS的Web Site的訪問權限賦予自己的系統登陸賬號)
第二種情況:
沒有把下拉列表所使用的procedure execute權限賦予訪問組。 語法:GRANT EXECUTE ON procedure_nm TO PUBLIC