重新命名 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 德瑞克
Hi. 德瑞克...
回覆刪除謝謝妳提供這麼方便的程式