İÇİNDEKİLER
- •Veritabanı adı ya da yapısı mı değişiyor?
- •Yeniden Adlandırma Komutu
- •Dosya Adları Değişmez
- •Ad Değişikliğinden Sonra “Erişemiyorum” Sorunları
- •Login’in varsayılan veritabanı
- •Kontrol edilmesi gereken diğer yerler
- •Daha Az Kesintili Bir Yol: Synonym ya da Geçiş Dönemi
- •Kontrol Listesi
- •Ad değişikliğini bağımlılıklarıyla birlikte planlayın
Bir veritabanının adını değiştirmek tek satırlık bir komuttur. Ama ad, veritabanının dışında pek çok yerde yaşar: uygulama bağlantı dizelerinde, login’lerin varsayılan veritabanında, Agent job’larında, linked server sorgularında, üç parçalı adla yazılmış view ve procedure’lerde. Komut çalıştıktan sonra “veritabanına erişemiyorum” şikâyetleri genellikle bu yerlerden gelir.
Bu yazıda bir veritabanını güvenle yeniden adlandırmayı, sık karşılaşılan hataları ve ad değişikliğinden sonra kontrol edilmesi gerekenleri anlatıyoruz.
Veritabanı adı ya da yapısı mı değişiyor?
Aryasoft, değişikliğin etkileyeceği tüm bağımlılıkları önceden çıkarır ve geçişi kesintisiz planlar.
Yeniden Adlandırma Komutu
sp_renamedb kullanımdan kaldırılmıştır; güncel yöntem ALTER DATABASE ... MODIFY NAME‘dir. Ad değişikliği veritabanına özel erişim gerektirir; açık bağlantılar varsa önce onları sonlandırmanız gerekir:
USE master;
-- Açık bağlantıları kapatıp özel erişim al (açık transaction'lar geri alınır)
ALTER DATABASE SatisDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE SatisDB MODIFY NAME = SatisDB_Arsiv;
ALTER DATABASE SatisDB_Arsiv SET MULTI_USER;
Özel erişim alınamazsa şu hatayı görürsünüz:
Uyarı
WITH ROLLBACK IMMEDIATE, veritabanındaki tüm açık transaction’ları geri alır ve kullanıcıların bağlantısını keser. Üretim veritabanında bu adımı bakım penceresinde, uygulama ekipleriyle koordineli şekilde yapın. SINGLE_USER modunda tek bağlantıyı başka bir oturumun (örneğin bir uygulama ya da Agent job’ı) sizden önce almaması için komutları aynı oturumda, ardışık çalıştırın.
Dosya Adları Değişmez
Veritabanının adı değişse de mantıksal dosya adları (SatisDB_Data) ve diskteki fiziksel dosyalar (SatisDB.mdf) eski adlarıyla kalır. Tutarlılık için bunları da değiştirebilirsiniz:
-- Mantıksal adlar (çevrimiçiyken yapılabilir)
ALTER DATABASE SatisDB_Arsiv MODIFY FILE (NAME = N'SatisDB_Data', NEWNAME = N'SatisDB_Arsiv_Data');
ALTER DATABASE SatisDB_Arsiv MODIFY FILE (NAME = N'SatisDB_Log', NEWNAME = N'SatisDB_Arsiv_Log');
-- Fiziksel dosyalar: önce yeni yolları tanımlayın, sonra çevrimdışı yapıp dosyaları yeniden adlandırın
ALTER DATABASE SatisDB_Arsiv MODIFY FILE (NAME = N'SatisDB_Arsiv_Data', FILENAME = N'E:\Data\SatisDB_Arsiv.mdf');
ALTER DATABASE SatisDB_Arsiv MODIFY FILE (NAME = N'SatisDB_Arsiv_Log', FILENAME = N'L:\Log\SatisDB_Arsiv_log.ldf');
ALTER DATABASE SatisDB_Arsiv SET OFFLINE WITH ROLLBACK IMMEDIATE;
-- Windows'ta dosyaları yeni adlarına göre yeniden adlandırın, ardından:
ALTER DATABASE SatisDB_Arsiv SET ONLINE;
Dosyaları yeniden adlandırırken SQL Server servis hesabının yeni dosyalar üzerindeki izinlerinin korunduğundan emin olun.
Ad Değişikliğinden Sonra “Erişemiyorum” Sorunları
Login’in varsayılan veritabanı
Varsayılan veritabanı eski ad olan login’ler bağlanmaya çalıştığında oturum açma başarısız olur:
-- Varsayılan veritabanı artık var olmayan login'ler
SELECT name, default_database_name
FROM sys.server_principals
WHERE default_database_name IS NOT NULL
AND DB_ID(default_database_name) IS NULL;
ALTER LOGIN UygulamaKullanicisi WITH DEFAULT_DATABASE = SatisDB_Arsiv;
Kontrol edilmesi gereken diğer yerler
- Uygulama bağlantı dizeleri:
Initial Catalogya daDatabasedeğerleri. - Agent job’ları: Job adımlarının çalıştığı veritabanı ve komutların içindeki adlar.
- Üç parçalı adlar: Başka veritabanlarındaki view, procedure ve synonym’lerde
SatisDB.dbo.Tablobiçimindeki başvurular. Bunları bulmak için bağımlılık rehberimizdeki sorguları kullanın. - Linked server sorguları: Diğer sunuculardan bu veritabanına dört parçalı adla yapılan başvurular.
- Yedek ve bakım job’ları: Veritabanı adını sabit olarak içeren script’ler ve dosya adları.
- SSIS, SSRS ve ETL bağlantıları.
Not
Always On Availability Group’a ya da database mirroring’e dahil bir veritabanının adı doğrudan değiştirilemez. Önce veritabanını gruptan çıkarın, adını değiştirin ve yeniden ekleyin; secondary replikalarda veritabanının yeniden başlatılması (seeding ya da restore) gerekir. Replikasyon, log shipping ve CDC kullanan veritabanlarında da ad değişikliği bu özelliklerin yeniden yapılandırılmasını gerektirir.
Daha Az Kesintili Bir Yol: Synonym ya da Geçiş Dönemi
Adın değişmesi gereken ama bağımlılıkların hepsini bir anda güncelleyemeyeceğiniz durumlarda, eski ada başvuran kodu kademeli olarak güncelleyin. Diğer veritabanlarındaki başvurular için synonym kullanmak, gelecekteki bir ad değişikliğinde tek bir yerde güncelleme yapmanızı sağlar.
Kontrol Listesi
- Değişiklik bakım penceresinde ve uygulama ekipleriyle koordineli.
- ALTER DATABASE … MODIFY NAME kullanıldı; sp_renamedb değil.
- Login varsayılan veritabanları güncellendi.
- Bağlantı dizeleri, Agent job’ları, üç ve dört parçalı adlar kontrol edildi.
- AG, mirroring, replikasyon ve log shipping için ayrı plan yapıldı.
- Gerekiyorsa mantıksal ve fiziksel dosya adları da güncellendi.
İlgili Yazılar
SQL Server Danışmanlığı
Ad değişikliğini bağımlılıklarıyla birlikte planlayın
Aryasoft’un kıdemli DBA ekibi değişikliğin etkileyeceği uygulamaları, job’ları, login’leri ve kodları önceden çıkarır; geçişi kesintisiz ve geri alınabilir şekilde planlar.