Server with an old and a new name tag, representing fixing @@SERVERNAME after a rename

Sunucu Adı Değiştikten Sonra SQL Server’da @@SERVERNAME Düzeltme

Windows adı değiştiğinde ya da sanal makine klonlandığında @@SERVERNAME’in neden eski adı gösterdiği, sp_dropserver ve sp_addserver ile nasıl düzeltileceği ve sonrasında nelerin kontrol edileceği.

Nisan 12, 2023

Bir Windows sunucusunun adı değiştirildiğinde ya da SQL Server kurulu bir sanal makine şablondan klonlandığında, SQL Server bu değişikliği kendiliğinden fark etmez. Yeni ada bağlanabilirsiniz; ama @@SERVERNAME hâlâ eski adı döndürür. Bu küçük tutarsızlık; replikasyonun kurulamamasına, linked server ve bakım script’lerinin yanlış sunucuya işaret etmesine, izleme araçlarının sunucuyu yanlış adla raporlamasına yol açabilir.

Bu yazıda sorunu nasıl tespit edeceğinizi, nasıl düzelteceğinizi ve ad değişikliğinden sonra başka nelerin kontrol edilmesi gerektiğini anlatıyoruz.

SQL Server Danışmanlığı

Sunucu adı değişikliği ya da migration mı planlıyorsunuz?

Aryasoft, sunucu adı değişikliği ve migration sonrasında SQL Server'daki tüm bağımlılıkları kontrol eder ve düzeltir.

Destek Alın

Sorunu Tespit Etmek

@@SERVERNAME, SQL Server’ın kendi meta verisinde (sys.servers içinde server_id = 0 olan kayıt) saklanan adı döndürür. SERVERPROPERTY('ServerName') ise Windows’un o anki bilgisayar adından üretilir. İkisi farklıysa düzeltme gerekir:

SELECT @@SERVERNAME                     AS metadata_name,
       SERVERPROPERTY('ServerName')     AS actual_name,
       SERVERPROPERTY('MachineName')    AS machine_name,
       SERVERPROPERTY('InstanceName')   AS instance_name;

SELECT server_id, name, is_linked
FROM sys.servers
WHERE server_id = 0;

Düzeltmek

Varsayılan bir instance için eski adı kaldırıp yenisini yerel sunucu olarak ekleyin:

EXEC sys.sp_dropserver N'ESKISUNUCU';
GO
EXEC sys.sp_addserver N'YENISUNUCU', N'local';
GO

Adlandırılmış instance’ta ad, instance adıyla birlikte yazılır:

EXEC sys.sp_dropserver N'ESKISUNUCU\SATIS';
GO
EXEC sys.sp_addserver N'YENISUNUCU\SATIS', N'local';
GO

Değişiklik, SQL Server servisi yeniden başlatıldığında geçerli olur. Yeniden başlatmadan sonra ilk sorguyu tekrar çalıştırıp iki değerin eşleştiğini doğrulayın.

Uyarı

sp_dropserver, eski ada bağlı remote login’ler varsa hata verir. Bu durumda önce sp_dropserver N’ESKISUNUCU’, ‘droplogins’ ile kaldırın. Sunucu replikasyonda publisher, distributor ya da subscriber ise ad değişikliği daha karmaşıktır: replikasyonun önce kaldırılması ve ad düzeltildikten sonra yeniden kurulması gerekir.

Desteklenmeyen Senaryolar

  • Failover cluster instance: FCI’nin sanal sunucu adı bu yöntemle değiştirilmez; cluster yapılandırması üzerinden yönetilir.
  • Always On Availability Group replikaları: AG’nin parçası olan bir sunucunun adını değiştirmek, önce replikayı gruptan çıkarmayı gerektirir; ad değiştikten sonra replika yeniden eklenir.

Ad Değişikliğinden Sonra Kontrol Edilecekler

  • Login’ler: Yerel Windows hesaplarına ve gruplarına ait login’ler eski bilgisayar adını taşır (ESKISUNUCU\Kullanici). Bunlar yeni adla yeniden oluşturulmalıdır.
  • Agent job’ları: Job sahipleri, job adımlarındaki sunucu adları ve sqlcmd ya da PowerShell komutları.
  • Linked server’lar: Bu sunucuya eski adla tanımlanmış linked server’lar diğer sunucularda güncellenmelidir.
  • Bakım planları: Eski bakım planları bağlantıyı sunucu adıyla saklar; yeniden oluşturulmaları gerekebilir.
  • Uygulama bağlantı dizeleri ve DNS: Uygulamaların eski adla bağlanmaya devam edip etmediği; gerekiyorsa geçiş dönemi için bir DNS takma adı (CNAME).
  • SSRS, SSIS ve izleme: Raporlama sunucusu yapılandırması, SSIS paketlerindeki bağlantılar ve izleme araçlarındaki sunucu kaydı.
  • SPN’ler: Kerberos için servis hesabına kayıtlı SPN’ler yeni adla güncellenmelidir.
-- Eski bilgisayar adını taşıyan Windows login'leri
SELECT name, type_desc
FROM sys.server_principals
WHERE type IN ('U', 'G')
  AND name LIKE N'ESKISUNUCU\%';

İpucu

Sanal makineleri şablondan klonlayarak SQL Server dağıtıyorsanız, @@SERVERNAME düzeltmesini kurulum sonrası script’inize ekleyin. Daha iyi bir yöntem, SQL Server’ı şablona kurulu olarak koymak yerine SysPrep ile hazırlanmış imaj ya da otomatik kurulum (ConfigurationFile.ini) kullanmaktır. Bkz. kurulum kontrol listemiz.

Kontrol Listesi

  • @@SERVERNAME ile SERVERPROPERTY(‘ServerName’) eşleşiyor.
  • Eski bilgisayar adını taşıyan login’ler yeniden oluşturuldu.
  • Agent job’ları, linked server’lar ve bakım planları kontrol edildi.
  • Uygulama bağlantıları, DNS ve SPN’ler güncellendi.
  • Replikasyon ve AG gibi özel durumlar ayrıca planlandı.
SQL Server bu adı kendi meta verisinde saklar; Windows’ta bilgisayar adı değiştiğinde otomatik güncellenmez.
sp_dropserver ile eski adı kaldırıp sp_addserver ‘YENIAD’, ‘local’ ile yenisini ekleyin ve SQL Server servisini yeniden başlatın.
Sunucu adı ile instance adı birlikte: ‘YENISUNUCU\INSTANCE’.
Hayır. FCI’nin sanal sunucu adı cluster yapılandırması üzerinden yönetilir.

SQL Server Danışmanlığı

Ad değişikliği ve migration’ı sürprizsiz yapın

Aryasoft’un kıdemli DBA ekibi sunucu adı değişikliği ve migration sonrasında login’leri, job’ları, linked server’ları ve uygulama bağlantılarını kontrol eder; tüm bağımlılıkları kesintisiz şekilde düzeltir.

4.7/5