問題描述
問題原因猜測與驗證
首先聲明,這兒的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 MASTERGOSELECT @@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等相關服務