首次使用SQL Server 2008在Vista旗艦版下進行ASP.NET開發就遇到了不少令人困惑的問題,其中之一就是“使用者 NT AUTHORITY\NETWORK SERVICE登陸失敗”的問題。開始,我以為是資料庫連接字串寫錯了,反覆檢查後發現這並非癥結所在。經過查閱資料,發現原因是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系統。[案頭]->[電腦]->右鍵->[管理]->展開“本機使用者與組”->選“組”->在右邊的名稱中雙擊“Administrators”->在彈出的視窗中單擊“添加...”按鈕->在彈出的“選擇使用者”視窗中單擊“進階...”按鈕->單擊“立即尋找”按鈕->在下面的“搜尋結果”中選中“Network Service”並點“確認”->“確定”按鈕->“確定”按鈕->“應用”按鈕。至此,Vista系統使用者配置完畢。
(2)配置SQL Server 2008。開啟“Microsoft SQL Server Management Studio”,找到想要配置的資料庫執行個體並展開->展開“安全性”->在“使用者”檔案夾上點右鍵,選“建立使用者”->點擊“登入名稱”文字框後面的“...”按鈕->在“選擇登入名稱”視窗中點“瀏覽”按鈕->在“尋找對象”視窗中選中[NT AUTHORITY\NETWORK SERVICE](前面打鉤)->“確定”按鈕->“確定”按鈕->在“登入名稱”文字框上面的“使用者名稱”文字框中輸入一個名字(這個可以隨便寫)->“確定”按鈕。至此,資料庫配置完畢。
(3)重新運行ASP.NET程式,此處必須保證資料庫的身分識別驗證類型為“Windows驗證”和“允許訪問”,問題解決。
PS:SQL Server 2008和SQL Server 2000的一個重要區別就是:前者在“安全性”檔案夾下沒有“登入”子檔案夾,所以不少以SQL Server 2000為例子的文章在2008下不適用。