SQL Server問題之計算機名稱更改后無法登陸本地數據庫


問題描述

 

 

問題原因猜測與驗證

首先聲明,這兒的Login Failed不是什么SQL Server 服務沒起來之類的錯誤引起。一般的解決辦法是不行的,可能的原因筆者猜測是由於計算機名稱更改造成,最終在成功解決問題后發現確實如此。在安裝SQL Server默認實例時,筆者采用的認證模式是Windows驗證,而且用戶是本機的一個用戶帳戶(不是域帳戶),所以當機器名稱更改后就會導致無法連接,因為之前安裝的數據庫實例它認為用戶是之前的用戶,而且沒有sa用戶。

問題解決

幸好微軟提供了一個解決辦法PsExec,它允許你以NT AUTHORITY\SYSTEM賬號運行程序,和“常規”管理員賬號不同——具有天生訪問SQLServer的權限。(祥請參考連接http://blog.csdn.net/dba_huangzj/article/details/7927266)

下載PsExec地址:http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

注:PsExec是PsTools的一個組件

下載完成后以管理員身份打開CMD,並cd到PsTools的解壓目錄,然后運行如下命令

PsExec -s -i "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe" 其中””中的內容為SSMS(SQL Server Management Studio)的路徑

接下來的操作也請參考上面的第一個連接(添加域帳戶和sa(如果你想)),在此不再贅述。

注意要先使的驗證模式為混合驗證模式,否則新建登陸帳號是不起作用的

拓展延伸

不得不說PsExec (PsTools)是一個好工具,以后出現無法登陸或連接的情況,可以用這個工具直接模擬登陸,然后想怎么建立用戶或修改權限都可以。

后續

后來又發現機器名稱更改后還會造成無法進行發布復制啊,坑爹啊,Google了一下,可以通過以下腳本解決此問題

USE MASTER
GO
SELECT @@SERVERNAME;
SELECT SERVERPROPERTY('SERVERNAME')

--如果這兩個結果不一致,說明機器改過名字,在配置復制的時候就會報上面的錯誤。
--要修復此問題 
--執行下面的語句,完成后重新啟動SQL服務 
IF SERVERPROPERTY('SERVERNAME') <> @@SERVERNAME  
BEGIN  
    DECLARE @SERVER SYSNAME  
    SET @SERVER = @@SERVERNAME   
    EXEC SP_DROPSERVER @SERVER = @SERVER  
    SET @SERVER = CAST(SERVERPROPERTY('SERVERNAME') AS SYSNAME)  
    EXEC SP_ADDSERVER @SERVER = @SERVER, @LOCAL = 'LOCAL'  
END
--最后別忘了重新啟動服務哦,啟動完后,再運行

記住:一定要重啟SSMS等相關服務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM