自动重命名 SQL Server

Sco*_*ott 10 rename sql-server

我们正在更换我们的 SQL Server,并决定重命名服务器本身比更改其他所有内容以指向新名称要容易得多。我们找到了有关更改 SQL Server 实例名称以匹配计算机名称的说明,如下所示:

sp_dropserver 'OLDSERVER'
sp_addserver 'NEWSERVER', local
Run Code Online (Sandbox Code Playgroud)

尽管 SQL 企业管理器似乎不喜欢这些在一起。我必须将其更改为以下内容才能使其协同工作:

sp_dropserver 'OLDSERVER'; GO
sp_addserver 'NEWSERVER', 'local'; GO
Run Code Online (Sandbox Code Playgroud)

这还不错,但我更喜欢自动化程度更高的事情。由于@@ServerName 返回实例的名称,我想出了如何自动化第一行:

sp_dropserver @@ServerName; GO
Run Code Online (Sandbox Code Playgroud)

我还了解到 SERVERPROPERTY('ServerName') 应该返回计算机名称,所以我想我可以用它来自动化第二部分,但这不起作用:

sp_addserver SERVERPROPERTY('ServerName'), 'local'; GO
Run Code Online (Sandbox Code Playgroud)

我尝试设置一个变量,无论如何我都需要这样做来更新 SQL 代理作业,但这也不起作用:

DECLARE @srv sysname;
SET @srv = CAST(SERVERPROPERTY('ServerName') AS sysname);
sp_addserver @srv, 'local'; GO
Run Code Online (Sandbox Code Playgroud)

“sp_addserver”附近的语法不正确。

我非常希望不必将新服务器名称硬编码到脚本中,以使其更易于重用。有人有任何想法吗?

mag*_*gma 7

这是一个可以执行您想要的操作的脚本:

DECLARE @var1 nvarchar(50)
DECLARE @var2 nvarchar(50)
SET @var1 = convert(nvarchar(50),@@SERVERNAME)
SET @var2 = convert(nvarchar(50),SERVERPROPERTY('MachineName'))
EXEC sp_dropserver @var1
EXEC sp_addserver @var2, 'local'
GO
Run Code Online (Sandbox Code Playgroud)

学分:http ://www.myitforum.com/articles/5/view.asp? id=4983