SQL Server'ın yeniden adlandırılmasını otomatikleştirme


10

SQL Server'ımızı değiştirme sürecindeyiz ve sunucunun kendisini yeniden adlandırmanın, her şeyi yeni bir isme işaret edecek şekilde değiştirmekten çok daha kolay olacağına karar verdik. SQL Server yönetim ortamı adını aşağıdaki gibi görünen bilgisayar adıyla eşleştirmek için yönergeler bulduk:

sp_dropserver 'OLDSERVER'
sp_addserver 'NEWSERVER', local

SQL Enterprise Manager bunları birlikte sevmiyor gibi görünüyor. Birlikte çalışması için bunu aşağıdaki şekilde değiştirmek zorunda kaldım:

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

Bu kötü değil, ama işlerin daha otomatik olmasını tercih ederim. @@ ServerName örneğin adını döndürdüğünden, ilk satırı nasıl otomatikleştireceğimizi anladım:

sp_dropserver @@ServerName; GO

Ayrıca SERVERPROPERTY ('SunucuAdı') bilgisayar adını döndürmek gerekiyordu, bu yüzden belki ikinci bölümü otomatikleştirmek için kullanabilirsiniz düşündüm, ama bu işe yaramadı düşündüm:

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

SQL Agent işlerini güncellemek için yine de yapmam gereken bir değişken ayarlamayı denedim, ancak bu da işe yaramadı:

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

'Sp_addserver' yakınında yanlış sözdizimi.

Ben çok daha kolay yeniden kullanılabilir hale getirmek için, komut dosyasına yeni sunucu adını sabit kodlamak zorunda değilsiniz. Herhangi bir fikri olan var mı?


1
Sp_addserver'dan önce EXEC ekleyebilir ve yardımcı olup olmadığını görebilir misiniz?
Sankar Reddy

Bu işe yaradı. :)
Scott

Yanıtlar:


6

İşte istediğinizi yapmak için bir komut dosyası:

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

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


1
Neredeyse, ama @ var1 bırakılmalı ve @ var2 eklenmelidir. @@ ServerName, SQL Server örneğinin adını döndürürken, SERVERPROPERTY ('MachineName') bilgisayarın adını döndürür.
Scott

1

Magma ve Sankar Reddy'ün yardımıyla bitmiş senaryo:

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

Magma'nın bulduğu makalede küçük bir hata vardı, bu da eski adı bırakıp yeni adı eklemek yerine yeni adı bırakmaya ve eski adı eklemeye çalıştığıydı. Ayrıca SQL aracısı işlerini düzeltmek için bir güncelleme sorgusu ekledim. Bunun yalnızca çok sunuculu bir ortamda ana sunucuya karşı düzgün çalıştığını unutmayın. Ortamım tek sunuculu bir ortam, bu yüzden durumum için çalışıyor.


-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

Bu, diğer (kabul edilen) cevaplardan nasıl farklı?
Sven
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.