2007-11-12

重新命名 SQL Server 作業系統的電腦名稱後之修正作業;修正 @@servername 之問題


重新命名 SQL Server 作業系統的電腦名稱後之修正作業;修正 @@servername 之問題

當我們變更了執行 Microsoft SQL Server 2005 作業系統的伺服器名稱之後,SQL Server 便會在重新啟動期間辨識這個新的伺服器名稱。我們不必重新執行安裝程式,就可以重新設定作業系統的伺服器名稱。

但要提醒您的是:目前尚未提供重新命名 SQL Server 2005 執行個體的名稱之方法。

何謂[預設的執行個體]
在安裝 SQL Server 期間,SQL Server 安裝程式會將作業系統的伺服器
伺服器名稱設成電腦名稱。


以下是 SQL Server 線上說明提供的步驟來重新命名

--01 檢查伺服器名稱,預期看到原本的伺服器名稱
SELECT @@SERVERNAME

--02
EXEC sp_dropserver '原本的伺服器名稱'

--03
EXEC sp_addserver
@server='正確的伺服器名稱',
@local = 'local'

--04 重新啟動 SQL Server

--05 檢查伺服器名稱
SELECT @@SERVERNAME


前述的步驟只能用來重新命名作業系統的伺服器名稱,並無法變更 SQL Server 執行個體的名稱。舉例來說:系統上已經有安裝一個具名執行個體的 SQL Server,其名稱是: SRV1\SQL1,我們可以將重新命名作業系統的名稱由原來的 SRV1 改為 SRV2;但是對於 SQL Server 執行個體來看,其名稱會改變成為: SRV2\SQL1。存取 SQL Server 具名執行個體的連線格式是:\\ComputerName\InstanceName。

但是實際應用上,若是使用者未能識別何謂伺服器的名稱時,將可能造成修改錯誤的問題發生,所以筆者改寫了上述的範例,各位可以使用以下的程式碼,直接執行修正即可,無須填寫任何資料。執行完成後,系統會自動關機,您僅需重新啟動 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


這應該是很方便的作法,避免了人為修改錯誤的問題發生,請各位享用。

Derrick Chen 德瑞克

1 則留言:

  1. Hi. 德瑞克...
    謝謝妳提供這麼方便的程式

    回覆刪除