MS SQL Server數據庫連接錯誤的解決方法

相信很多人在用ASP.NET製作網站時都會遇到過鏈接不上MS SQL Server數據庫的問題,而且這個問題並不是每次都出現。以前當我遇到這個問題的時候多數都會重裝系統,但是最近我看了一本關於數據庫管理的書的時候終於找到導致這個問題的真正原因了。
SQL Server可以配置爲工作於Windows Authentication模式或是工作於Mixed模式。在Mixed模式中,SQL Server可以接受通過Windows AuthenticationSQL Server Authentication的連接。你不能將SQL Server設置爲只接受通過SQL Server Authentication的連接。

如果在安裝時沒有指定,那麼SQL Server將默認工作於Windows Authentication模式中,SQL Server將通過在Windows中的登錄信息來識別用戶。這就是爲什麼不需要指定任何額外的信任信息就可以從Visual Web Developer中方位SQL Server連接數據庫的原因。

可是,在IIS中運行的ASP.NET應用程序其所屬用戶名爲ASPNET的特定用戶,其默認權限是無法訪問SQL Server的,更不可能訪問ASP.NET應用程序的數據庫了,因此要在IIS中訪問SQL Server就需要給ASPNET帳戶賦予相應的權限。(和Visual Web Developer一起發佈的集成的Web服務器則是由當前登錄用戶啓動的,因此你基本不用操心,它不需要設置任何安全選項,在默認情況下就擁有訪問ASP.NET應用程序的數據庫的所需權限。)

解決連接問題的另一種方法是在IIS中啓用SQL Server驗證,然後再連接字符串中使用用戶ID與密碼;或是當ASP.NET應用程序以另一個Windows用戶而非ASPNET運行時,使用ASP.NET impersonation方法。

爲了使ASPNET帳戶可以訪問ASP.NET應用程序的數據庫,需要完成以下步驟:

1)      啓動SQL Server Management Studio,指定SQL Server實例名,以Windows驗證模式登錄。

2)      grantlogin存儲過程把Windows的用戶添加到SQL Server數據庫中。這個命理將賦予ASPNET帳戶連接SQL Server的權限。注意要用本機的主機名代替命令中的MachineName

Exec sp_grantlogin ‘MachineName\ASPNET’

3)      在爲ASPNET帳戶賦予了鏈接SQL Server的權限後,還需要爲其賦予訪問ASP.NET應用程序的數據庫的權限。注意要用ASP.NET應用程序的數據庫的名字代替DateBaseName

USE DateBaseName
Exec sp_grantdbaccess ‘MachineName\ASPNET’

4)      最後,需要賦予ASPNET訪問ASP.NET應用程序的數據庫內部對象的權限,如執行存儲過程,讀取和修改表等。最簡單的方法是爲ASPNET帳戶分配一個ASP.NET應用程序的數據庫db_owner角色。如果前面的步驟中已經連接到了ASP.NET應用程序的數據庫,輸入下面的命令:

Exec sp_addrolemember ’db_owner’,’ MachineName\ASPNET’

    現在你就可以從Web應用程序以Windows驗證模式連接數據庫了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章