首次使用SQL Server 2008在Vista旗艦版下進行ASP.NET開發(fā)就遇到了不少令人困惑的問題,其中之一就是“用戶 NT AUTHORITYNETWORK SERVICE登陸失敗”的問題。開始,我以為是數據庫連接字符串寫錯了,反復檢查后發(fā)現這并非癥結所在。經過查閱資料,發(fā)現原因是Vista下ASP.NET的運行賬戶改成了Network Service(Windows Server 2003中也一樣),而XP中ASP.NET的運行賬戶是ASPNET,難怪那么多人不喜歡用Vista。
再查查解決方案,網上的一致的解決方案均是以老版的SQL Server 2000寫的,不適用于SQL Server 2005/2008。以下是我反復試驗后得出的在SQL Server 2008中的正確解決方案:
(1)配置Vista系統(tǒng)。[桌面]->[計算機]->右鍵->[管理]->展開“本地用戶與組”->選“組”->在右邊的名稱中雙擊“Administrators”->在彈出的窗口中單擊“添加...”按鈕->在彈出的“選擇用戶”窗口中單擊“高級...”按鈕->單擊“立即查找”按鈕->在下面的“搜索結果”中選中“Network Service”并點“確認”->“確定”按鈕->“確定”按鈕->“應用”按鈕。至此,Vista系統(tǒng)用戶配置完畢。
(2)配置SQL Server 2008。打開“Microsoft SQL Server Management Studio”,找到想要配置的數據庫實例并展開->展開“安全性”->在“用戶”文件夾上點右鍵,選“新建用戶”->點擊“登錄名”文本框后面的“...”按鈕->在“選擇登錄名”窗口中點“瀏覽”按鈕->在“查找對象”窗口中選中[NT AUTHORITYNETWORK SERVICE](前面打鉤)->“確定”按鈕->“確定”按鈕->在“登錄名”文本框上面的“用戶名”文本框中輸入一個名字(這個可以隨便寫)->“確定”按鈕。至此,數據庫配置完畢。
(3)重新運行ASP.NET程序,此處必須保證數據庫的身份驗證類型為“Windows驗證”和“允許訪問”,問題解決。
PS:SQL Server 2008和SQL Server 2000的一個重要區(qū)別就是:前者在“安全性”文件夾下沒有“登錄”子文件夾,所以不少以SQL Server 2000為例子的文章在2008下不適用。