Ana Sayfa
Forumlar
Hakkımızda
Yükleniyor. Lütfen bekleyin ...
Kategoriler
ASP.NET
C# & VB.Net
Visual Studio ve Araçlar
Sharepoint
.NET Framework
SQL Server
Mobil Teknolojileri
Dynamics
Silverlight
İş Zekası
Windows Embedded Sistemler
Yazılım Mimarisi
Yazgeliştir
Yazar olmak ister misiniz?
Forumlar
Kitap Önerileri
Haberler
Yazarlar
İpuçları
Görüşleriniz
Hakkımızda
İstatistikler
En son kayıt olan üye:
bahattin
Şuanki online üyeler (
0
) :
SQL Server Kategorisi
»
SQL Server'da Sistem Database'lerini Taşıma
SQL Server'da Sistem Database'lerini Taşıma
Print Versiyonu
Yazar:
Burak Batur
Tarih:13.08.2009
Puan:
3,67
(Oy Kullanan:
9
)
Okuma Sayısı:
2669
Makaleyi İşaretle
Makale Özeti
Gerek performans gerek de depolama alanın değiştirilmesi gereksinimleri ile veritabanı dosyalarının yerlerinin değiştirilmesi veritabanı kullanıma alındıktan uzunca bir süre sonra da gündeme gelebilir, peki bu şekilde bir senaryoda nasıl bir çözüme gideceğiz?
Paylaşım
Makale
SQL Server'da yer alan veritabanlarınları verileri
.mdf
ya da
.ndf
uzantılı dosyalarda saklarlar ancak SQL Server'ın mimarisi gereği
.ldf
uzantılı bir dosya da logları yazmak amacı ile mutlaka kullanılır. Bu dosya tiplerinden .mdf ve .ldf uzantılı olanları bir veritabanında mutlaka yer alıyor olmalıdır. Veriler mdf uzantılı dosyada saklanacak ve gerçekleştirilecek olan her transaction'ında da ldf mutlaka kullanılıyor olacaktır. Gerek performans gerek de depolama alanın değiştirilmesi gereksinimleri ile bu dosyaların yerlerinin değiştirilmesi veritabanı kullanıma alındıktan uzunca bir süre sonra da gündeme gelebilir, peki bu şekilde bir senaryoda nasıl bir çözüme gideceğiz?
Kullanıcı veritabalarında bu durumu iki farklı şekilde çözebiliriz, eğer veritabları farklı bir instance'a alınacak ise
Detach
ve
Attach
çözüm olacaktır
ancak aynı eğer instance değişmiyor ise tek çözüm Detach - Attach değildir ki keza sistem veritabanlarını detach edemezsiniz. Sistem veritabanlarının dosyalarını ve bu dosyaların fiziksel adreslerini görüntülemek için aşağıdaki kodları kullanabilirsiniz, tabi ki kullanıcı veritabanlarında da aşağıda açıkladığımız kodlar çalışmaya devam edeceklerdir.
SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N'
tempdb
'); GO
Yukarıdaki kodlar TempDB'nin dosyalarını ve bu dosyaların bulunduğu fiziksel adresleri listeliyor olacaktır. Kodlar çalıştırıldıktan sonra aşağıdaki gibi bir sonuç kümesi ile karşılaşacaksınız.
Dosyaların lokasyonunu değiştirmek için ise aşağıdaki kodlar çalıştırılabilir. Aşağıdaki kodlarda yer alan
FILENAME
sözcüğü aracılığı ile belirtilen bölüm dosyaların yeni lokasyonu olacaktır.
USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev,
FILENAME
= 'E:\SQLData\tempdb.mdf'); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog,
FILENAME
= 'F:\SQLLog\templog.ldf'); GO
SQL Server'ın servisi restart edilmeden bu ayarlar geçerli olmayacaktır. Bu kodlar çalıştırıldıktan sonra servis durdurulup dosyalar yeni lokasyonlarına taşınmalıdır, ardından servis yeniden start edildikten sonra tempdb'nin dosyalarının yeni yeri ayarlanmış olacaktır.
Yukarıdaki kodlar yardımı ile kullanıcı veritabanları ile sistem veritabanlarının dosyalarının yerlerini sorunsuz bir şekilde değiştirebilirsiniz ancak kodları dikkatle incelerseniz USE master şeklinde başladığını göreceksiniz peki Master veritabanının dosyalarının yeri nasıl değişecektir? Master veritabanı üzerinde gerçekleştirilecek olan değişikliklerin pek çoğu startup parametreleri ile gerçekleştirilir, yani servis start edilirken ayarlanır. Startup parametrelerine erişip değiştirmek ya da yenilerini eklemek için Start Menü'den All Programs-->Microsoft SQL Server 2008-->Configuration Tools aracılığı ile gerekli kısa yolları görüntüleyip oradan da
SQL Server Configuration Manager
'ı açabilirsiniz. SQL Server Configuration Manager SQL Server'ın servislerini listeliyor olacaktır burada ayarlama yapılmak
istenen instance'ın DataBase Engine servisinin üzerinde sağ tıklayıp, özellikleri görüntülendikten sonra açılan pencerede
Advanced
tabına geçilir. Advanced tabında da
Startup Parameters
bölümü değiştirilebilir. Bu bölümde zaten bir takım ayarların yapılmış olduğu gözlenmenecektir.
-d
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf;
-e
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\LOG\ERRORLOG;
-l
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
Bu parametrelerden
-d
Master veritabanın data dosyasının fiziksel adresini,
-l
log dosyasının fiziksel adresini ve
-e
parametresi de hata loglarının yer alacak olduğu dizini belirtir. Bu parametreler yenileri ile değiştirilip ayarları kaydedip ardından servisi durdurduktan sonra, master veritabanının dosyalarını yeni yerine taşınır. Servis yeniden start edildikten sonra master veritabanı belirtilen yeni path'deki dosyaları kullanıyor olacaktır.
Makaleyi nasıl buldunuz?
Makaleye puan vermek için üye girişi yapmanız gerekmektedir.
v2.4
Geri Bildirim (Feedback)
Site içerisinde yazılan tüm makalelerin yazım ve yayınlama hakkı aksi belirtilmediği sürece sadece yazarlara aittir.
Yazgelistir.Com Ekibi - 2006 -
Yazgelistir.com