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')はコンピューター名を返すことになっていることもわかったので、それを使用して2番目の部分を自動化できると思いましたが、これは機能しませんでした。

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

変数を設定しようとしましたが、SQLエージェントジョブを更新するためにそれを行う必要がありますが、それも機能しませんでした。

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

'sp_addserver'付近の構文が正しくありません。

これをより簡単に再利用できるようにするために、スクリプトに新しいサーバー名をハードコーディングする必要がないようにしたいと思います。誰かアイデアはありますか?


1
EXECをsp_addserverの前に追加して、それが役立つかどうかを確認できますか?
Sankar Reddy、

それでうまくいきました。:)
スコット

回答:


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

マグマとサンカーレディの助けを借りて、完成したスクリプトは次のとおりです。

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

マグマが見つけた記事には小さなエラーが1つありました。それは、古い名前を削除して新しい名前を追加するのではなく、新しい名前を削除して古い名前を追加しようとしたことです。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

これは他の(受け入れられた)回答とどのように違うのですか?
スヴェン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.