近期遇到一個奇怪的問題:在調試MES程序時發現,如果連接的是遠程的SQL SERVER數據庫(通過了IIS),則提示連接失敗,就是經常見到的數據庫不允許遠程連接的錯誤提示;
而且又測試了以下幾種情況:
1. 在蕪湖與石家庄都遇到這種情況,而且數據庫服務器端未做任何改動;
2. 使用IIS連接本地的數據庫正常;
3. 別人的機器在調試程序時可以正常地連接遠程數據庫;
4. 使用本人機器的SQL SERVER客戶端可以正常訪問遠程數據庫;
5. 使用本人機器,不使用IIS,直接使用最基本的代碼連接遠程的SQL SERVER數據庫,一切正常;
6. 重新注冊asp.net到IIS,並重啟IIS,仍然連接失敗;
因此可以肯定是本人機器的原因,而且這個問題肯定出現在了使用IIS訪問遠程數據庫的過程中。
最可能的原因:
1. IIS的配置;
2. 安全權限方面的問題;
最后,終於從網上查到一個類似的問題,將問題解決;否則就要重做系統了。
解決辦法:
修改IIS應用程序池的設置:找到程序對應的應用程序池,在“高級設置”中找到“標識”,然后為其內置賬戶選擇“localsystem”(原來是ApplicationPoolIdentity)。
參考:http://www.cnblogs.com/zhangronghua/archive/2008/10/07/1305597.html
但是,這種解決方案是否最好,或者應該還有其他的解決辦法,后來又查了一下關於IIS的標識的資料,ApplicationPoolIdentity是IIS7.5中新增的,而且更推薦使用它,估計默認就應該是它,也許改其他哪個地方的權限,也可以解決這種問題。
參考:IIS7.5中應用程序池標識是什么 http://www.veryhuo.com/a/view/72397.html
