2008-06-02

修改電腦、伺服器名稱後,SQL Server 的修正作業--補遺篇




筆者這邊重新整理:重新命名 SQL Server 作業系統的電腦名稱後之修正作業。今整理如下:

(1)修正 @@servername
請使用以下的程式碼,直接執行修正即可,無須填寫任何資料。執行完成後,系統會自動關機,您僅需重新啟動 SQL Server 即可。

DECLARE @sn sysname,@sno sysname;
SELECT @sn=cast(serverproperty('servername') as sysname),@sno=@@SERVERNAME;
IF @sno IS NULL
BEGIN
EXEC sp_addserver @server=@sn,@local = 'local';
SELECT N'Finish the server name to revise, and has already stopped serving, please restart the server';
SELECT N'完成伺服器名稱修改,並已停止服務,請重新啟動伺服器';
SHUTDOWN WITH NOWAIT;
RETURN;
END
ELSE IF (@sn=@sno)
BEGIN
SELECT N'Do not need to revise the server name';
SELECT N'無須修正伺服器名稱';
RETURN;
END
ELSE
BEGIN
EXEC sp_dropserver @sno;
EXEC sp_addserver @server=@sn,@local = 'local';
SELECT N'Finish the server name to revise, and has already stopped serving, please restart the server';
SELECT N'完成伺服器名稱修改,並已停止服務,請重新啟動伺服器';
SHUTDOWN WITH NOWAIT;
END



(2)修正本機伺服器的登入帳號

若是原本就有允許本機的 Administrator可以管理 SQL Server 時(例如:ServerName\Administrator),請先將此帳號刪除後,再度重新加入到 SysAdmin 角色內。

雖然預設 BUILTIN\Administrators 管理群組的成員可以自動具備登入與管理 SQL Server 的權限,但經過測試,在 Replication 等某些作業上,仍然會有問題。


在 SQL Server 2008 版本,不會自動建立 BUILTIN\Administrators 管理群組,需要在安裝時指定 Windows 管理帳戶。

情境:
例如:原本是 MCTS01\Administrator ,後來電腦名稱改為 MCTS999,所以管理帳戶為:MCTS999\Administrator。
但是在 SQL Server 內,此帳戶名稱仍是原始的名稱,並沒有修改。



以下提供,修改管理者帳戶的步驟:



方法 A

比較簡單的作法是:

可以使用 SSMS 管理工具,選擇此登入帳戶,滑鼠右鍵,選擇「重新命名」。

-- 01_SSMS 管理工具,重新命名



或是,使用以下的範例程式碼:

ALTER LOGIN [原本的伺服器名稱\Administrator] 
 WITH NAME=[更改後的伺服器名稱\Administrator]
GO


以 Windows 帳戶為例,若是修改為不存在的帳戶,將遭遇以下的錯誤訊息:

-- 02_SSMS修改名稱失敗




訊息 15401,層級 16,狀態 1,行 1
找不到 Windows NT 使用者或群組 'xxx\xxx'。請再一次檢查名稱。

-- 03_修改名稱失敗之訊息





方法 B

步驟01. 確認已經啟用 sa 帳戶,並確認 sa 帳戶的密碼。

步驟02. 請先使用 sa 帳戶,連線執行「物件總管」。


步驟03. 刪除先前無效的 Windows 管理帳戶。

步驟04. 加入正確的 Windows 管理帳戶,並加入到 sysadmin 角色內。






-- 2011/01/19 更新
感謝上課學員的建議。將原先的步驟02 與 03 互換,減少發生錯誤的機會。






(3)修正 SQL Server 安裝程式為不同的 SQL Server 服務所建立使用者群組



SQL Server 安裝程式會為不同的 SQL Server 服務建立使用者群組,並依適當情況將服務帳戶加入這些使用者群組中。這些群組不僅可簡化授與執行 SQL Server 服務與其他可執行檔所需權限的過程,也有助於保護 SQL Server 檔案。例如:SQL Server 服務部分:
預設執行個體:SQLServer2005MSSQLUser$ComputerName$MSSQLSERVER
具名執行個體:SQLServer2005MSSQLUser$ComputerName$InstanceName
...

建議刪除這些群組,重新建立群組與指派權限。


在此感謝 Colin 的協助。


參考資料:
重新命名 SQL Server 作業系統的電腦名稱後之修正作業;修正 @@servername 之問題
http://sharedderrick.blogspot.com/2007/11/sql-server-servername.html

如何:重新命名主控 SQL Server 2005 獨立執行個體的電腦http://technet.microsoft.com/zh-tw/library/ms143799.aspx

How to: Rename a Computer that Hosts a Stand-Alone Instance of SQL Server 2005http://msdn.microsoft.com/en-us/library/ms143799.aspx

設定 Windows 服務帳戶
http://technet.microsoft.com/zh-tw/library/ms143504.aspx

Setting Up Windows Service Accountshttp://msdn.microsoft.com/en-us/library/ms143504.aspx

沒有留言:

張貼留言