我们正在更换我们的sql Server,并决定重命名服务器本身比更改其他所有内容以指向新名称要容易得多.我们找到了有关更改sql Server实例名称以匹配计算机名称的说明,如下所示:
sp_dropserver 'OLDSERVER' sp_addserver 'NEWSERVER',local
虽然sql企业管理器似乎并不喜欢这些.我不得不将其更改为以下内容以使其协同工作:
sp_dropserver 'OLDSERVER'; GO sp_addserver 'NEWSERVER','local'; GO
哪个不错,但我希望事情更加自动化.由于@@ ServerName返回实例的名称,我想出了如何自动化第一行:
sp_dropserver @@ServerName; GO
我还了解到SERVERPROPERTY(‘ServerName’)应该返回计算机名称,所以我想我可以用它来自动化第二部分,但这不起作用:
sp_addserver SERVERPROPERTY('ServerName'),'local'; GO
我尝试设置一个变量,无论如何我需要更新sql代理作业,但这也不起作用:
DECLARE @srv sysname; SET @srv = CAST(SERVERPROPERTY('ServerName') AS sysname); sp_addserver @srv,'local'; GO
‘sp_addserver’附近的语法不正确.
我非常希望不必将新服务器名称硬编码到脚本中,以使其更容易重用.有人有任何想法吗?
解决方法
这是一个做你想做的事情的脚本:
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