自动重命名SQL Server


10

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

sp_dropserver 'OLDSERVER'
sp_addserver 'NEWSERVER', local

尽管SQL Enterprise Manager似乎不太喜欢它们。我必须将其更改为以下内容才能使其协同工作:

sp_dropserver 'OLDSERVER'; GO
sp_addserver 'NEWSERVER', 'local'; GO

不错,但是我希望事情更加自动化。由于@@ ServerName返回实例的名称,因此我弄清楚了如何自动执行第一行:

sp_dropserver @@ServerName; GO

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

sp_addserver SERVERPROPERTY('ServerName'), 'local'; GO

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

DECLARE @srv sysname;
SET @srv = CAST(SERVERPROPERTY('ServerName') AS sysname);
sp_addserver @srv, 'local'; GO

'sp_addserver'附近的语法不正确。

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


1
您可以在sp_addserver之前添加EXEC,看看是否有帮助?
桑卡尔·雷迪

这使它起作用。:)
Scott

Answers:


6

这是执行所需操作的脚本:

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

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


1
差不多了,但是应该删除@ var1并添加@ var2。@@ ServerName返回SQL Server实例的名称,而SERVERPROPERTY('MachineName')返回计算机的名称。
斯科特

1

在岩浆和Sankar Reddy的帮助下,以下是完成的脚本:

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'
UPDATE msdb.dbo.sysjobs SET originating_server = @var2
GO

岩浆发现的文章有一个小错误,那就是它试图删除新名称并添加旧名称,而不是删除旧名称并添加新名称。我还添加了一个更新查询来修复SQL代理作业。请注意,这仅适用于多服务器环境中的主服务器。我的环境是单服务器环境,因此适用于我的情况。


-3
Declare @OldName varchar(50),
        @NewName Varchar(50)

Select @OldName = CONVERT(VARCHAR(50),@@SERVERNAME) ;
--SELECT @OldName [OLDNAME]
Select @NewName =  CONVERT(VARCHAR(50),SERVERPROPERTY('ServerName'));
--SELECT @NewName [NEWNAME]

EXEC sp_dropserver @OldName;
EXEC sp_addserver @server = '@NewName',@local='local';
GO

这与其他(接受的)答案有何不同?
斯文
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.