St.AnGeR
Document Visor..
7.1. Veritabanlarını Yeniden Kurma (Restore)
7.2. Restore İşlemi Sırasındaki SQL Server Aktivitileri
7.3. Veritabanını Restore Etme Hazırlıkları
7.4. Yedekleri Restore Etmeden Önce Belirli Task'ları Yerine Getirme
7.5. Bozulmuş Kullanıcı Veritabanı Dosyalarını Restore Etme
7.6. Farklı Backup Tiplerinden Veritabanlarını Restore Etme
7.7. Differantial Backup'tan Restore Etme
7.8. Differantial Backup'ları Restore Ederken Göz Önünde Tutulması Gereken Etmenler
7.9. Transaction Log Backup'ı Restore Etme
7.10. Zaman Noktası Belirtme
7.11. Bir Dosya veya FileGroup Yedeğinden Restore Etme
7.12. Bir SQL Server Yedeği Kullanma
7.13. SQL Server Yedeğinin Salt Okunur Olarak Kullanımı
7.14. Standby Seçeneğinin Kullanımı
7.15. Production Server'ı SQL Server Yedeği ile Değiştirmek
7.16. Zarara Uğramış Sistem Veritabanlarını Restore Etme
7.17. Kullanıcı Veritabanlarını Yeniden Kurma
7.18. Tavsiye edilen uygulamalar
Veritabanlarını Yeniden Kurma (Restore)
SQL Server’ın recovery İşlemi
SQL Server’ın recovery işlemi, veritabanının tutarlı olduğunu gösteren içsel bir mekanizmadır.
Ñ SQL Server, son chekpoint’ten, kapatıldığı (shut down) veya başarısız olduğu noktaya kadar olan transaction log’u inceler. Checkpoint kalınan noktayı belirler.
Ñ Transaction log, veritabanına henüz yazılmamış onaylanmış işlemlere sahipse, SQL Server veritabanına değişiklikleri uygulayarak, işlemleri ileriye götürür.
Ñ Transaction log onaylanmamış işlemler içerirse, SQL Server bu işlemleri geriye döndürür. Onaylanmamış işlemler veritabanına yazılmaz.
Otomatik Olarak Meydana Gelir
Sistem bir başarısızlıktan ya da kapatılmadan sonra yeniden başlatıldığında, SQL Server, veri uyumluluğunu sağlamak için otomatik bir recovery işlemi başlatır. Bu işlem otomatik olarak başlar.
Elle Başlatılabilirliği
Restore işlemleri yapıldığında, otomatik recovery işlemi elle başlatılabilir. SQL Server başlatıldığında meydana gelen otomatik recovery işlemi, kullanıcının başlattığı recovery işlemine benzerdir.
Restore İşlemi Sırasındaki SQL Server Aktiviteleri
Veritabanları restore edildiği zaman, SQL Server otomatik olarak veritabanını restore edecek aktiviteleri yerine getirir.
Güvenlik Kontrolü Yapma
RESTORE DATABASE ifadesi çalıştırıldığında, SQL Server güvenlik kontrolü yapar. Bu içsel mekanizma, tamamlanmamış bilgileri yanlışlıkla veritabanı üzerine yazmaya engel olur.
SQL Server aşağıdaki nedenlerden dolayı veritabanını restore edemez.
q RESTORE DATABASE ifadesinde geçen veritabanı ismi zaten server üzerinde bulunuyorsa veya veritabanı ismi ile yedekleme dosyasında tutulan veritabanı ismi farklı ise
q Server’da tutulan veritabanı dosyaları, yedekleme setinde tutulan veritabanı dosyalarından farklı ise.
q Restore etmek için gerekli olan veritabanı veya filegrup dosyaları mevcut değilse, SQL Server, hangi dosyaların restore edilmesine dair bir hata mesajı gönderir.
Örneğin; northwind veritabanı yedeği, server üzerinde zaten varolan accounting ismi ile restore edilmeye kalkışılırsa, SQL Server bu duruma engel olur. Northwind yedeğinin restore edilmesi ve accounting’deki veri üzerine yazılması planlanırsa, güvenlik kontrolü umursanmamalı.
Veritabanını ve Bütün Birleşmiş Dosyaları Yeniden Yaratma
Full database backup’tan bir veritabanı restore edildiği zaman, SQL Server orjinal veritabanı dosyalarını yedeğin kaydedildiği alana yeniden yaratır. Bütün veritabanı nesneleri otomatik olarak yeniden yaratılır. Veritabanı restore edilmeden önce, veritabanı şemasını yeniden build etmeye gerek yoktur.
Veritabanını Restore Etme Hazırlıkları
Yedekleri Doğrulama
Bir backup dosyası restore edilmeden önce, dosyanın doğruluğundan ve gerekli yedekleri içerdiğinden emin olmak gerekir. Backup device özelliklerini incelemek için SQL Server Enterprise Manager kullanılabilir. Yedekler hakkında daha detaylı bilgi elde etmek için aşağıdaki Transact SQL ifadeleri çalıştırılmalı.
RESTORE HEADERONLY İfadesi
Yedek seti veya yedek dosyası hakkındaki header bilgilerini elde etmek için kullanılır. Bir ya da daha fazla yedek bir yedek dosyasına yerleştirilirse, SQL Server bu dosyada yer alan bütün yedekler için header bilgisi döndürür. RESTORE HEADERONLY İfadesi çalıştırılırsa, aşağıdaki bilgiler elde edilir.
* Yedek dosyasının veya yedek setinin ismi ve tanımı
* Kullanılan yedekleme medyasının çeşidi (teyp veya harddisk gibi)
* Yedekleme metodu (full database, differantial, transaction log veya file backup gibi)
* Yedekleme zamanı ve tarihi
* Yedek boyutu
* Yedek dosyaları içindeki yedek sıra numarası
RESTORE FILELISTONLY İfadesi
Yedek dosyasında bulunan orjinal veritabanı veya transaction log dosyaları hakkındaki bilgileri elde etmek için kullanılır. Bu ifade, yanlış yedek dosyalarını restore etmeyi önler.
Bu ifade çalıştırılırsa; SQL aşağıdaki bilgileri geri döndürür.
û Veritabanı ve transaction log dosyalarının mantıksal isimilerini
û Veritabanı ve transaction log dosyalarının fiziksel isimilerini
û Veritabanı veya transaction log dosyası gibi, dosya tipini
û Filegrup üyelerini
û MB olarak backup setinin boyutu
û MB olarak maksimum ayrılmış dosya boyutu
RESTORE LABELONLY İfadesi
Yedek dosyasını tutan yedekleme mediası hakkında bilgi elde etmek için kullanılır.
RESTORE VERIFYONLY İfadesi
Yedek setlerinin tamamlanmış olup olmadığını ve bütün yedeklerin okunabilir olup olmadığını doğrulamak için kullanılır. SQL Server, backup’ta tutulan veri yapısını doğrulamaz.
Yedekleri Restore Etmeden Önce Belirli Task’ları Yerine Getirme
Yedekleri restore etmeden önce, veritabanına erişim ve transaction log’u yedekleme sınırlandırılmalı.
DBO Use Only Veritabanı Seçeneğini Ayarlama
Sadece Sysadmin veya db_owner rolü üyesi, veritabanını restore etmeden önce, veritabanına erişimi sınırlamak için bu seçeneği true’ya ayarlayabilir. Aşağıdakiler kullanılarak dbo use only seçeneği ayarlanabilir.
· SQL Server Enterprise Manager kullanılarak
· Sp_dboption sistem stored procedure’ü çalıştırılarak ve dbo use only seçeneği true’ya ayarlanarak.
Transaction Log’u Yedekleme
Herhangi bir restore işlemi yapılmadan önce, transaction log’un yedeği alınırsa, veritabanı tutarlılığı garantiye alınır.
¨ Transaction log yedeği, restore işlemindeki son adım olarak veritabanını yeniden elde etmek için kullanılır.
¨ Yedekler restore edilmeden önce transaction log yedeklenmezse, son transaction log yedeği ve o anki arasında meydana gelen veri değişiklikleri kaybedilir.
Note: Yedekleri restore etmek için, SQL Server Query Analyzer kullanılırsa veya bir script çalıştırılırsa, master veritabanı kullanılmalı.
Yedekleri Restore Etme
RESTORE İfadesinin Kullanımı
RESTORE ifadesi veya SQL Server Enterprise Manager kullanılarak restore işlemleri yapılabilir.
RESTORE Seçeneğinin Kullanımı
Yedeklerin kurulma detaylarını belirlemeye izin verir.
Syntax RESTORE DATABASE {database_name | @database_name_var}
[FROM <backup_file> [,…n]]
[WITH
[[,] FILE=file_number]
[[,] MOVE ‘logical_file_name’ TO ‘operating_system_file_name’]
[[,] REPLACE]
[[,] {NORECOVERY | RECOVERY| STANDBY=undo_file_name}]]
WHERE <backup_file> is
{{backup_file_name | @backup_file_name_var} |
{DISK | TAPE | PIPE} = {‘temp_backup_file’ | @temp_backup_file_var}
}
Örnek: Aşağıdaki örnek; permanent backup file’dan northwind veritabanını restore eder.
USE master
RESTORE DATABASE northwind
FROM nwindbac
Bozulmuş Kullanıcı Veritabanı Dosyalarını Restore Etme
Veritabanına zarar gelirse, RESTORE ifadesi veya SQL Server Enterprise Manager kullanılarak, varolan veritabanı üzerine restore edilebilir. Veritabanı restore edildiği zaman:
% SQL Server, veritabanı dosyalarını ve nesnelerini otomatik olarak yeniden yaratır.
% Zarara uğramış veritabanını kaldırmaya ihtiyaç duyulmaz.
Recovery İşlemini Başlatma
Restore işlemi sırasında oluşan administrative hataları engellemek için ve ifadenin okunabilirliğini kolaylaştırmak için, RECOVERY veya NORECOVERY seçeneği belirtilmeli. RECOVERY seçeneği SQL Server’ın default seçeneğidir.
RECOVERY Seçeneğini Belirleme
Restore etmek için son transaction log ile birlikte kullanılır.
· SQL Server, transaction logdaki onaylanmamış işlemleri geri ve onaylanmış işlemleri ileri döndürür.
· Recovery işlemi tamamlandıktan sonra, veritabanı kullanım için uygundur.
Note: Restore edilmiş ek transaction log’lara veya differantial backup’lara sahip isen bu seçeneği kullanma
NORECOVERY Seçeneğini Belirleme
Restore için çoklu yedeklere sahip isen bu seçeneği kullan.
¨ NORECOVERY seçeneği son yedek hariç bütün yedekler için belirlenir.
¨ SQL Server, ne transaction logdaki onaylanmamış işlemleri geri döndürür ne de onaylanmış işlemleri ileri döndürür.
¨ Veritabanı recover edilene kadar kullanım için uygun değildir.
Yeniden Kurma Seçeneğini Belirleme
RESTORE ifadesi kullanılacağı zaman, restore işleminin nasıl yapıldığını belirten aşağıdaki seçenekler kullanılır.
FILE Seçeneğinin Kullanımı
Çoklu yedekleri içeren yedek dosyalarından, belirli yedekleri seçmek için kullanılır. Backup dosyasında varolan yedekle uyuşan dosya numarası belirtilmeli.
MOVE TO Seçeneğinin Kullanımı
Dosya farklı bir alana restore edilirse (farklı server, disk sürücüsü veya yedek SQL Server gibi), yedek dosyalarının nereye restore edileceğini belirlemek için kullanılır.
Note: sp_attach_db veya sp_attach_single_file_db sistem stored procedure’leri kullanılarak bir veritabanı, kopyalama yöntemiyle bir server’dan diğerine kopyalanır ve sonra bunlar master veritabanına bağlanır.
REPLACE Seçeneğinin Kullanımı
Farklı veritabanı yedeğindeki verinin, varolan veritabanının yerini alması istenirse, bu seçenek kullanılır.
Eğer aşağıdakiler geçerli ise SQL Server, veritabanının yerini değiştirmemek için güvenlik kontrolü yapar.
§ Veritabanı hedef server üzerinde zaten varsa ve veritabanı ismi yedek setine kaydedilen isimden farklı ise
§ Veritabanındaki dosyalar yedek setindeki dosyalardan farklı ise. SQL Server dosya boyutlarındaki farklılıkları göz ardı eder.
Farklı Backup Tiplerinden Veritabanlarını Restore Etme
Bir veritabanını restore etmek için; yedekleme yaparken kullanılan yedek metodunun tipini bilmek gerekir. Restore edilmesi istenen yedekleri içeren yedekleme dosyalarını onaylamak gerekir. Yedeklerin geçerli olduğundan ve tüm dosyalara veya teyplere sahip olunduğundan emin olmak gerekir.
Full Database Backup’tan Restore Etme
Bu işlem yapıldığında, SQL Server, veritabanını ve onun bağlı olduğu bütün dosyaları yeniden yaratır ve daha sonra onları orjinal yerlerine yerleştirir. Bütün veritabanı nesneleri otomatik olarak yeniden yaratılır. Veritabanı restore edilmeden önce, veritabanı şemasını yeniden build etmeye gerek yoktur.
Nezaman Kullanılır
Aşağıdakiler gerçekleştiği zaman, full database backup’tan restore edilebilir.
% Veritabanının fiziksel diski zarara uğradığı zaman
% Tüm veritabanı zarara uğradığında, bozulduğunda veya silindiğinde
% Veritabanı kopyası, farklı SQL Server’a kurulduğunda (yedek SQL Server gibi)
RECOVERY Seçeneğini Belirleme
Aşağıdakiler gerçekleşirse RECOVERY seçeneği recovery işlemini başlatır.
ü Full database backup stratejisi yerine getirilirse ve transaction log veya differantial backup’lar yoksa, RECOVERY seçeneği belirlenir.
ü Transaction log veya differantial backup’lar mevcut ise, NORECOVERY seçeneği belirtilir.
Örnek: Bu örnekte varsayalım ki; full backup, permanent nwindbac yedek dosyası üzerinde bulunuyor ve iki yedek bu dosyaya ekleniyor. Northwind veritabanı, tamamiyle permanent nwindbac yedek dosyası üzerinde bulunan ikinci yedek ile değiştirilir. Son olarak; recovery işlemi onaylanmış işlemleri ilerletir ve onaylanmamış işlemleri geriye döndürür.
USE master
RESTORE DATABASE northwind
FROM nwindbac
WITH FILE =2
RECOVERY
Differantial Backup’tan Restore Etme
Bir veritabanı differantial database backup’tan restore edildiği zaman, SQL Server:
ª Sadece, son full database backup’tan beri değiştirilmiş veritabanı bölümünü restore eder.
ª Veritabanını, Differantial backup’ın yapıldığı doğru konuma geri döndürür.
ª Differantial backup’ları restore etmek için daha az zaman harcar.
Differantial Backup’ları Restore Ederken Göz Önünde Tutulması Gereken Etmenler
q Full database backup’ı açmak için kullanılan syntax, diferansiyel yedeği açmak için kullanılan syntax ile aynıdır. FROM clause’da, full database backup’ı belirtmek yerine, differantial backup’ı içeren yedek dosyası belirtilir.
q Differantial backup restore edilmeden önce, full database backup restore edilmeli.
q Restore edilecek transaction log’lar kalmışsa, NORECOVERY seçeneği belirtilir, aksi taktirde RECOVERY seçeneği belirtilir.
Örnek: Aşağıdaki örnek; Veritabanını recover etmeden, Differantial backup’ı restore eder. Nwindbacdiff dosyası, Differantial bir backup içerir. SQL Server, northwind veritabanı, NORECOVERY seçeneği belirtilerek uygun duruma getirilmeden önce, transaction log’ları restore etmeye izin verir.
USE master
RESTORE DATABASE northwind
FROM nwindbacdiff
WITH NORECOVERY
Transaction Log Backup’ı Restore Etme
Transaction log backup’tan restore edildiği zaman, SQL Server transaction log içindeki değişiklikleri restore eder.
Transaction log yedeklerini yeniden kurmadan önce, ilk olarak full database backup açılmalı. Çoklu transaction loglar olduğu zaman, en sondaki hariç bütün transaction loglar için NORECOVERY seçeneği belirtilir. SQL Server, son transaction log restore edilene kadar recovery işlemini erteler.
Syntax RESTORE LOG {database_name | @database_name_var}
[FROM <backup_file> [,...n]]
[WITH
[[,] {NORECOVERY | RECOVERY | STANDBY = undo_file_name}]
[[,] STOPAT = {date_time | @date_time_var}]
Örnek: Aşağıdaki örnek; full database, bir yedek dosyası üzerinde bulunur ve iki transaction log yedeği başka yedekleme dosyası üzerinde bulunur. Üç farklı restore işlemi, veritabanı tutarlılığını garantiye almak için kullanılır.
1) İlk adım, veritabanını recover etmeden, full database backup’tan restore eder.
USE master
RESTORE DATABASE northwind
FROM nwindbac
WITH NORECOVERY
2) İkinci adım, veritabanını recover etmeden, ilk transaction log’u restore eder.
USE master
RESTORE DATABASE northwind
FROM nwindbaclog
WITH FILE = 1,
STATS,
NORECOVERY
3) Üçüncü adım, ikinci transaction log’u restore eder. RECOVERY seçeneği northwind veritabanını uygun konuma geri döndürür.
USE master
RESTORE LOG northwind
FROM nwindbaclog
WITH FILE = 2
RECOVERY
Zaman Noktası Belirtme
Transaction loglar restore edilirken, STOPAT seçeneği kullanılarak belirli bir zaman noktasına restore edilebilir.
· Veri bozulmadan önce veritabanını recover etmek için STOPAT seçeneği kullanılır.
Örneğin; bozuk bir güncellemesaat 11:00’de oluşursa, 10:59 süresince transaction log’ değişiklikler restore edilebilir ve bu noktadan sonra oluşan değişkilikler uygulanmaz.
· Veritabanı üzerine, bir yedeği yüklemeyi durdurmak için tarih ve zaman belirtme.
SQL Server belirli bir zaman noktasından önce veritabanına yazılan tüm transaction log kayıtlarını restore eder.
Örnek; full database ve iki transaction log yedeği bir yedek dosyasında bulunur. Sadece 3 Haziran 1998 1:00’den önce meydana gelen değişiklikler restore edilir. Üç farklı restore işlemi veritabanı uyumluluğunu garanti altına almak için yapılmıştır.
1) İlk adım, veritabanını recover etmeden, full database backup’tan restore eder.
USE master
RESTORE DATABASE northwind
FROM nwindbac
WITH NORECOVERY
2) İkinci adım, veritabanını recover etmeden, ilk transaction log’u restore eder.
USE master
RESTORE DATABASE northwind
FROM nwindbaclog
WITH FILE = 1,
NORECOVERY
3) Üçüncü adım, 3 haziran 1998 1:00’den sonra oluşan değişiklikleri uygulayarak ikinci transaction log’u restore eder ve veritabanını recover eder.
USE master
RESTORE LOG northwind
FROM nwindbaclog
WITH FILE = 2
RECOVERY
STOPAT = ‘January 3, 1998 1:00’
Bir Dosya veya FileGrup Yedeğinden Restore Etme
Geniş bir veritabanı dosyasını restore etmek için gerekli olan zamanı düşürmek için, dosya veya filegup yedeğinden restore etmek gerekir. Dosya veya filegrup’tan restore etme, dosya yanlışlıkla silinirse veya zarara uğrarsa, çok yaralıdır.
Dosya veya filegrup’tan restore ederken aşağıdaki adımlar göz önüne alınmalı.
§ SQL Server, sadece restore edilmiş dosyayı etkileyen işlemleri yürütür.
§ SQL Server, bir tablo ve ona bağlı indexler iki farklı filegrupta bulunuyorsa, onları bir parça olarak restore edilmesini ister.
§ SQL Server, full database backup’tan özel veritabanı dosyasını kurmaya izin verir.
Syntax RESTORE DATABASE {database_name | @database_name_var}
<file_or_filegroup> [,...m]
[FROM <backup_file> [,...n]
Where <file_or_filegroup> ,is
{FILE=logical_file_name | FILEGROUP=logical_filegroup_name}
Örnek; Varsayalaım ki; bir veritabanı üç dosya üzerinde yer alsın: Nwind1, Nwind2, Nwind3. Nwind2 veritabanı dosyası tek bir tabloyu ve onunla ilgili indexleri içerir. Nwind2 veritabanı dosyası, Nwind2bac yedek dosyasına yedeklenir. Nwind2’den beri yapılan bir transaction log yedeği son yedeklemedir. Nwind2 restore edilmeli; çünkü fiziksel media zarara uğramış. Örnek veritabanı uyumluluğunu garanti altına almak için iki adımdan oluşmuştur.
1) İlk adım, onaylanmış işlemleri ileri atmadan veya onaylanmamış işlemleri geri döndürmeden, Nwind2 veritabanı dosyasının yedeğini restore eder.
USE master
RESTORE DATABASE northwind
FILE=nwind2
FROM nwind2bac
WITH NORECOVERY
2) İkinci adım, transaction log yedeğini restore eder, onaylanmış işlemleri ileri atar veya onaylanmamış işlemleri geri döndürür.
USE master
RESTORE LOG northwind
FROM nwindbaclog
WITH RECOVERY
Bir SQL Server Yedeği Kullanma
Eğer iş ortamı, production server’ın daima erişilebilir olmasını istiyorsa, SQL Server yedeği kullanılabilir.
Bir SQL Server Yedeği Kurma
SQL Server yedeği, iş ortamı için uygun ise, yedeğin amacını belirlemek, sonra yedeği yaratmak ve bakımını yapmak gerekir.
Syntax RESTORE {DATABASE | LOG} {databsae_name | @database_name_var }
FROM <backup_file> [,...n]
[[,] MOVE ‘logical_file_name’ TO ‘operating_system_file_name’]
[WITH NORECOVERY | RECOVERY | STANDBY =undo_file_name}]
]
Amaç
SQL Server yedeği (standby), production server’ı yansıtan ikinci bir server’dır. SQL Server yedeği, başarısız durumlarda, production server’ın yerine geçmek için veya veritabanının salt okunur kopyası olarak kullanılır. Ayrıca Server yedeği, birincil server üzerindeki yüklemeyi arttırmadan Database Consistency Checker (DBCC) çalıştırılarak, veritabanı güvenilirliğini onaylamak için kullanılır.
İlk Yaratma
Production server üzerindeki transaction logları ve veritabanlarını yedekleyerek, SQL Server yedeğini yarat ve sonra bunları başka bir SQL Server’a restore et.
Yedekler, SQL Server yedeğine restore edildiği zaman, aşağıdaki adımları ele almak gerekir.
· SQL Server yedeği, production server’ın kopyası ise, production server üzerindeki sistem veritabanlarını içeren bir veya daha fazla veritabanı kopyası SQL Server yedeği üzerine yaratılır.
· SQL Server yedeği üzerine veritabanı için yeni alan belirlemek için MOVE TO seçeneğini kullan.
Ayrıca veritabanı dosyaları bir server’dan diğerine kopyalanır ve sonra sp_attach_db veya sp_attach_single_file_db sistem stored procedure’ı kullanılarak, SQL Server yedeğinin master veritabanına bağlanabilir.
· NORECOVERY veya STANDBY seçeneği belirtilmeli.
SQL Server yedeği, production server’ın yerine geçene kadar, veritabanı recover edilmez. SQL Server yedeğinin amacı, production server’ın salt okunur kopyasına sahip olmaksa, veritabanı recover edilmek istenmez.
Bakım
SQL Server yedeğinin bakımını yapmak için, düzenli olarak bütün ek transaction log yedekleri, SQL Server yedeğine restore edilmeli. Transaction logları restore etme, SQL Server yedeğinin production serverla tutarlı olduğunu gösterir. SQL Server yedeğinin bakımını yapmak için aşağıdaki adımları göz önüne almak gerekir.
§ Düzenli olarak production server üzerine transaction log’u yedekleme
§ Her zaman production server üzerine transaction log’un yedeklendiği zaman, SQL Server yedeğine transaction log yedeği restore edilir.
§ Production server yeniden elde edilene kadar SQL Server yedeği istenmiyorsa, NORECOVERY seçeneği belirtilmeli.
§ Veritabanını salt okunur aktiviteler için uygun hale getirmek için STANDBY seçeneği kullanılır.
§ SQL Server yedeği, salt okunur veritabanı olarak kullanılırsa, veritabanını kullanıcılara uygun hale getirmek için, dbo use only seçeneği false’a ayarlanır.
SQL Server Yedeğinin Salt Okunur Olarak Kullanımı
SQL Server yedeği, production server’ın salt okunur kopyası olarak çalışabilir.
Production Server Üzerindeki Aktiviteyi Düşürme
SQL Server yedeği, production server’ın salt okunur kopyası ise, production server üzerindeki aktivite miktarı düşürülebilir.
· Kullanıcılar, sorgular için veriye erişebilirler.
· DBCC ifadeleri;
¨ Veritabanının doğruluğunu kontrol etmek için çalıştırılabilir.
¨ Herbir yedek dosyası, SQL Server yedeği üzerine kurulduktan sonra, her bir yedeği doğrulmak için çalıştırılabilir.
Veri Bozukluklarını Düzeltme
SQL Server yedeği, veritabanı bozukluklarını belirlemek için kullanılabilir. STANDBY seçeneği, bozulmaları veya bozuk veriyi incelemek için kullanılır.
Aşağıdaki adımlar veri bozukluklarının nasıl düzeltilebileceğini gösterir.
1) STANDBY seçeneğini kullanarak, transaction log’u SQL Server yedeğine koyma
2) Bozuklukları kontrol eden DBCC ifadelerini çalıştırarak, sonraki transaction log’u koymadan (apply) önce, veritabanı bölümlerini inceleme
3) Bozuk veriyi kontrol eden sorguları kullanarak, sonraki transaction log’u koymadan önce, veritabanı bölümlerini inceleme
4) Problemin nedeni belirlenene kadar, her bir restore’dan (Adım1, Adım2,3) sonra, veritabanı bölümlerini inceleme ve transaction log’ları koymaya devam etme
5) Problem oluşmadan önce, recovery zamanı kullanılarak, production server üzerine veritabanı ve transaction logları restore etme
6) Production server üzerindeki veritabanı durumunu yansıtan SQL Server yedeğini yeniden kurma
STANDBY Seçeneğinin Kullanımı
SQL Server yedeğindeki veritabanı recover edilirse, ek transaction loglar, production server’dan SQL Server yedeğine restore edilemezler. STANDBY seçeneği:
§ Kullanıcıların, SQL Server yedeğine erişimlerine izin vermek için kullanılır
§ Ek transaction log’ların restore edilmesine izin vermek için kullanılır.
STANDBY seçeneği kullanıldığı zaman, SQL Server, ek transaction loglar kurulurken, değişiklikleri geriye döndürmek için kullanılan bir dosya yaratır. Undo_file_name parametresi kullanılarak bu dosya belirtilebilir.
· Undo_file_name belirtilemezse, SQL Server bir tane yaratır.
· SQL Server, herbir transaction log kurma işlemi için aynı Undo_file_name’i kullanır.
· Undo_file_name mevcutsa, SQL Server dosyanın üzerine yazar.
· Undo_file_name’in boyutu, disk alanı ile sınırlıdır.
Örnek: Veritabanı yedeğini ve transaction log’u server yedeğine restore eder. Server yedeğindeki veritabanı salt okunur moddadır. Burada, Server yedeğinin ve production serverın, veritabanı dosyaları için aynı alanı kullandığı varsayılır.
USE master
RESTORE DATABASE nwcopy FROM nwfullbackup
WITH STANDBY = ‘C:\Nwundo.ldf’
RESTORE LOG nwcopy FROM nwlogbackup
WITH STANDBY = ‘C:\Nwundo.ldf’
Production Server’ı SQL Server Yedeği ile Değiştirmek
Zamanı minimize etmek için SQL Server yedeği, production yedeği olarak kullanılabilir.
Production Server Olarak Kullanım
Aşağıdaki adımlar SQL Server Yedeğinin Production Server olarak kullanılmasını sağlar.
1. Production server’dan transaction log’u yedekle. Son transaction log yedeğinden beri yapılan onaylanmış işlemleri, tutmak için NO_TRUNCATE seçeneği kullanılmalı.
2. Production server’I network’ten uzak tut.
3. SQL Server yedeğinin ismini production server ismi ile değiştir.
4. SQL Server yedeğine son transaction log’u restore et ve RECOVERY seçeneğini belirt. SQL Server, veritabanını recovere eder ve kullanıcıların transaction logları okumasına ve yazmasına izin verir.
SQL Server yedeği, salt okunur server olarak kullanılırsa ve restore eden için transaction log’lar yoksa, RESTORE DATABASE WITH RECOVERY ifadesi ile SQL Server yedeği recover edilir. Bu noktada, SQL Server yedeği, production server olarak tanınır.
Production Server’I Kurma
Problem çözüldükten sonra, production server restore edilir. Production server’I restore etmek için aşağıdaki adımları göz önüne almak gerekir:
1. Bütün değişiklikleri tutmak için, SQL Server yedeğinin full database ve transaction log’larını yedekleme. SQL Server yedeği ile production server yedeği değiştirildiği zaman, SQL Server yedeği, transaction log’a ve veritabanı kopyasına değişiklikleri kaydeder.
2. SQL Server yedeğini uzak tut.
3. Yedek SQL Server veritabanını ve transaction log’ları production server’a restore et.
4. Production server’I kullanıma sok.
5. Production server üzerinde, bütün veritabanların full database backup’larını al.
6. Veritabanını recover etmeden, yedekleri, yedek SQL Server’a restore et. Uygunsa STANDBY seçenğini kullan. SQL Server yedeği, production server’ın kopyasıdır ve restore edilmesi için ek transaction log’lara izin verir.
Zarara Uğramış Sistem Veritabanlarını Restore Etme
Media zarara uğramış veritabanlarını içeriyorsa, sistem veritabanları rebuild edilmeli.
Bir Yedekten Sistem Veritabanlarını Restore Etme
SQL Server servisi başlatıldığında, geçerli veritabanından sistem veritabanlarını restore etmek için RESTORE DATABASE ifadesi veya SQL Server Enterprise Manager kullanılır.
Sistem Veritabanlarını Rebuild Etme
Master veritabanı zarara uğramışsa ve SQL Server başlatılamıyorsa, aşağıdaki adımlar yapılır.
1) MsSQL7/Binn dizininde bulunan rebuild.exe çalıştırılarak, sistem veritabanları rebuild edilmeli.
2) Sistem veritabanları rebuild edildikten sonra, SQL Server servisi başlatılabilir.
3) Sonra, sistem veritabanlarının yedekleri restore edilir.
Note: Sistem veritabanları, rebuild edilirken var olan master, model, msdb veritabalarının üzerine yazılır.
Sistem Veritabanlarını Restore Etme
Sistem veritabanları rebuild edildikten ve SQL Server başlatıldıktan sonra, aşağıdaki adımlar yapılır.
1. Varsa, bir yedekten master veritabanı yeniden kurulur.
Geçerli master veritabanının yedeği yoksa, aşağıdakilerden biri kullanılarak, master’da bulunan bilgi elle yeniden yaratılmalı.
· SQL Server Enterprise Manager
· Master veritabanını yaratmak için kullanılan orjinal scriptler. Master veritabanı aşağıdaki referansları içerir:
· Kullanıcı Veritabanları
· Veritabanı dosyaları
· Yedekleme aygıtları
· SQL Server loginleri ve server-wide güvenlik rolleri
2. Eğer varsa, bir yedekten msdb veritabanı yeniden kurulur.
Master veritabanı rebuild edildiği zaman, msdb veritabanı restore edilmeli. SQL Server Setup’I çalıştırıldığı zaman, msdb veritabanı kaldırılır ve sonra yeniden yaratılır. Böylece bütün tasarlanmış bilgi kaybedilir.
3. Eğer varsa, bir yedekten model veritabanı restore edilir.
Kullanıcı Veritabanlarını Yeniden Kurma
Master veritabanının rebuild edilip edilmediğine bağlı olarak, kullanıcı veritabanları restore edilir:
ü Master veritabanı geçerli yedekten restore edilirse, herbir kullanıcı veritabanı referansını içerir.
ü Master veritabanı rebuil edilirse ve geçerli yedek kullanılmazsa, aşağıdakilerden biri yapılmalı:
ü Bir yedekten kullanıcı veritabanlarını restore et
ü Yeni master veritabanına, varolan kullanıcı veritabanı dosyalarını bağla.
Kullanıcı veritabanı dosyaları zarara uğramamışsa, sp_attach_db veya sp_attach_single_file_db sistem stored procedure’I kullanılarak yeni master veritabanına bunlar bağlanır (attach).
Veritabanı dosyalarını bağlama, kullanıcı veritabanı hakkında master veritabanını haberdar eder. Bunları, master veritabanına bağlamak için veritabanı yedeğine gerek yoktur.
Note: Kullanıcı veritabanını bağlama, bir yedekten restore etmeden daha hızlı ve verimlidir.
Örnek: Aşağıdaki örnek; Master veritabanına, northwind veritabanını bağlar
USE master
EXEC sp_attach_single_file_db @dbname = ‘northwind’,
@physname=’C:\MsSQL7\Data\Northwind.mdf’
Tavsiye Edilen Uygulamaları
Veritabanları, transaction loglar veya dosyalar restore edildiği zaman, aşağıdaki tavsiye edilmiş uygulamaları göz önüne almak gerekir.
{ Restore tasarlanarak, restore edilmesi istenen yedekler hakkında bilgi elde edilebilir. Dosyaların geçerli olduğundan ve veritabanını restore etmek için gerekli olan bütün yedekleri içerdiğinden emin olmak gerekir.
{ Restore edilmiş ek yedekler varsa, NORECOVERY seçeneği kullanılmalı.
{ Veritabanını uygun duruma getirmek için, son yedek üzerinde RECOVERY seçeneği kullanılmalı.
Kullanıcıların SQL Server yedeğine erişebilmelerini sağlamak için ve server üzerindeki ek transaction logları restore etmek için STANDBY seçeneğini kullan. Veritabanı uygun duruma getirilene kadar, kullanıcılar SQL Server yedeğindeki veritabanlarına erişemezler. Transaction loglar restore edildiği zaman, SQL Server değişiklikleri geri döndürmek için bir dosya yaratır. Bunun için STANDBY seçeneği kullanılmış olmalı.
7.2. Restore İşlemi Sırasındaki SQL Server Aktivitileri
7.3. Veritabanını Restore Etme Hazırlıkları
7.4. Yedekleri Restore Etmeden Önce Belirli Task'ları Yerine Getirme
7.5. Bozulmuş Kullanıcı Veritabanı Dosyalarını Restore Etme
7.6. Farklı Backup Tiplerinden Veritabanlarını Restore Etme
7.7. Differantial Backup'tan Restore Etme
7.8. Differantial Backup'ları Restore Ederken Göz Önünde Tutulması Gereken Etmenler
7.9. Transaction Log Backup'ı Restore Etme
7.10. Zaman Noktası Belirtme
7.11. Bir Dosya veya FileGroup Yedeğinden Restore Etme
7.12. Bir SQL Server Yedeği Kullanma
7.13. SQL Server Yedeğinin Salt Okunur Olarak Kullanımı
7.14. Standby Seçeneğinin Kullanımı
7.15. Production Server'ı SQL Server Yedeği ile Değiştirmek
7.16. Zarara Uğramış Sistem Veritabanlarını Restore Etme
7.17. Kullanıcı Veritabanlarını Yeniden Kurma
7.18. Tavsiye edilen uygulamalar
Veritabanlarını Yeniden Kurma (Restore)
SQL Server’ın recovery İşlemi
SQL Server’ın recovery işlemi, veritabanının tutarlı olduğunu gösteren içsel bir mekanizmadır.
Ñ SQL Server, son chekpoint’ten, kapatıldığı (shut down) veya başarısız olduğu noktaya kadar olan transaction log’u inceler. Checkpoint kalınan noktayı belirler.
Ñ Transaction log, veritabanına henüz yazılmamış onaylanmış işlemlere sahipse, SQL Server veritabanına değişiklikleri uygulayarak, işlemleri ileriye götürür.
Ñ Transaction log onaylanmamış işlemler içerirse, SQL Server bu işlemleri geriye döndürür. Onaylanmamış işlemler veritabanına yazılmaz.
Otomatik Olarak Meydana Gelir
Sistem bir başarısızlıktan ya da kapatılmadan sonra yeniden başlatıldığında, SQL Server, veri uyumluluğunu sağlamak için otomatik bir recovery işlemi başlatır. Bu işlem otomatik olarak başlar.
Elle Başlatılabilirliği
Restore işlemleri yapıldığında, otomatik recovery işlemi elle başlatılabilir. SQL Server başlatıldığında meydana gelen otomatik recovery işlemi, kullanıcının başlattığı recovery işlemine benzerdir.
Restore İşlemi Sırasındaki SQL Server Aktiviteleri
Veritabanları restore edildiği zaman, SQL Server otomatik olarak veritabanını restore edecek aktiviteleri yerine getirir.
Güvenlik Kontrolü Yapma
RESTORE DATABASE ifadesi çalıştırıldığında, SQL Server güvenlik kontrolü yapar. Bu içsel mekanizma, tamamlanmamış bilgileri yanlışlıkla veritabanı üzerine yazmaya engel olur.
SQL Server aşağıdaki nedenlerden dolayı veritabanını restore edemez.
q RESTORE DATABASE ifadesinde geçen veritabanı ismi zaten server üzerinde bulunuyorsa veya veritabanı ismi ile yedekleme dosyasında tutulan veritabanı ismi farklı ise
q Server’da tutulan veritabanı dosyaları, yedekleme setinde tutulan veritabanı dosyalarından farklı ise.
q Restore etmek için gerekli olan veritabanı veya filegrup dosyaları mevcut değilse, SQL Server, hangi dosyaların restore edilmesine dair bir hata mesajı gönderir.
Örneğin; northwind veritabanı yedeği, server üzerinde zaten varolan accounting ismi ile restore edilmeye kalkışılırsa, SQL Server bu duruma engel olur. Northwind yedeğinin restore edilmesi ve accounting’deki veri üzerine yazılması planlanırsa, güvenlik kontrolü umursanmamalı.
Veritabanını ve Bütün Birleşmiş Dosyaları Yeniden Yaratma
Full database backup’tan bir veritabanı restore edildiği zaman, SQL Server orjinal veritabanı dosyalarını yedeğin kaydedildiği alana yeniden yaratır. Bütün veritabanı nesneleri otomatik olarak yeniden yaratılır. Veritabanı restore edilmeden önce, veritabanı şemasını yeniden build etmeye gerek yoktur.
Veritabanını Restore Etme Hazırlıkları
Yedekleri Doğrulama
Bir backup dosyası restore edilmeden önce, dosyanın doğruluğundan ve gerekli yedekleri içerdiğinden emin olmak gerekir. Backup device özelliklerini incelemek için SQL Server Enterprise Manager kullanılabilir. Yedekler hakkında daha detaylı bilgi elde etmek için aşağıdaki Transact SQL ifadeleri çalıştırılmalı.
RESTORE HEADERONLY İfadesi
Yedek seti veya yedek dosyası hakkındaki header bilgilerini elde etmek için kullanılır. Bir ya da daha fazla yedek bir yedek dosyasına yerleştirilirse, SQL Server bu dosyada yer alan bütün yedekler için header bilgisi döndürür. RESTORE HEADERONLY İfadesi çalıştırılırsa, aşağıdaki bilgiler elde edilir.
* Yedek dosyasının veya yedek setinin ismi ve tanımı
* Kullanılan yedekleme medyasının çeşidi (teyp veya harddisk gibi)
* Yedekleme metodu (full database, differantial, transaction log veya file backup gibi)
* Yedekleme zamanı ve tarihi
* Yedek boyutu
* Yedek dosyaları içindeki yedek sıra numarası
RESTORE FILELISTONLY İfadesi
Yedek dosyasında bulunan orjinal veritabanı veya transaction log dosyaları hakkındaki bilgileri elde etmek için kullanılır. Bu ifade, yanlış yedek dosyalarını restore etmeyi önler.
Bu ifade çalıştırılırsa; SQL aşağıdaki bilgileri geri döndürür.
û Veritabanı ve transaction log dosyalarının mantıksal isimilerini
û Veritabanı ve transaction log dosyalarının fiziksel isimilerini
û Veritabanı veya transaction log dosyası gibi, dosya tipini
û Filegrup üyelerini
û MB olarak backup setinin boyutu
û MB olarak maksimum ayrılmış dosya boyutu
RESTORE LABELONLY İfadesi
Yedek dosyasını tutan yedekleme mediası hakkında bilgi elde etmek için kullanılır.
RESTORE VERIFYONLY İfadesi
Yedek setlerinin tamamlanmış olup olmadığını ve bütün yedeklerin okunabilir olup olmadığını doğrulamak için kullanılır. SQL Server, backup’ta tutulan veri yapısını doğrulamaz.
Yedekleri Restore Etmeden Önce Belirli Task’ları Yerine Getirme
Yedekleri restore etmeden önce, veritabanına erişim ve transaction log’u yedekleme sınırlandırılmalı.
DBO Use Only Veritabanı Seçeneğini Ayarlama
Sadece Sysadmin veya db_owner rolü üyesi, veritabanını restore etmeden önce, veritabanına erişimi sınırlamak için bu seçeneği true’ya ayarlayabilir. Aşağıdakiler kullanılarak dbo use only seçeneği ayarlanabilir.
· SQL Server Enterprise Manager kullanılarak
· Sp_dboption sistem stored procedure’ü çalıştırılarak ve dbo use only seçeneği true’ya ayarlanarak.
Transaction Log’u Yedekleme
Herhangi bir restore işlemi yapılmadan önce, transaction log’un yedeği alınırsa, veritabanı tutarlılığı garantiye alınır.
¨ Transaction log yedeği, restore işlemindeki son adım olarak veritabanını yeniden elde etmek için kullanılır.
¨ Yedekler restore edilmeden önce transaction log yedeklenmezse, son transaction log yedeği ve o anki arasında meydana gelen veri değişiklikleri kaybedilir.
Note: Yedekleri restore etmek için, SQL Server Query Analyzer kullanılırsa veya bir script çalıştırılırsa, master veritabanı kullanılmalı.
Yedekleri Restore Etme
RESTORE İfadesinin Kullanımı
RESTORE ifadesi veya SQL Server Enterprise Manager kullanılarak restore işlemleri yapılabilir.
RESTORE Seçeneğinin Kullanımı
Yedeklerin kurulma detaylarını belirlemeye izin verir.
Syntax RESTORE DATABASE {database_name | @database_name_var}
[FROM <backup_file> [,…n]]
[WITH
[[,] FILE=file_number]
[[,] MOVE ‘logical_file_name’ TO ‘operating_system_file_name’]
[[,] REPLACE]
[[,] {NORECOVERY | RECOVERY| STANDBY=undo_file_name}]]
WHERE <backup_file> is
{{backup_file_name | @backup_file_name_var} |
{DISK | TAPE | PIPE} = {‘temp_backup_file’ | @temp_backup_file_var}
}
Örnek: Aşağıdaki örnek; permanent backup file’dan northwind veritabanını restore eder.
USE master
RESTORE DATABASE northwind
FROM nwindbac
Bozulmuş Kullanıcı Veritabanı Dosyalarını Restore Etme
Veritabanına zarar gelirse, RESTORE ifadesi veya SQL Server Enterprise Manager kullanılarak, varolan veritabanı üzerine restore edilebilir. Veritabanı restore edildiği zaman:
% SQL Server, veritabanı dosyalarını ve nesnelerini otomatik olarak yeniden yaratır.
% Zarara uğramış veritabanını kaldırmaya ihtiyaç duyulmaz.
Recovery İşlemini Başlatma
Restore işlemi sırasında oluşan administrative hataları engellemek için ve ifadenin okunabilirliğini kolaylaştırmak için, RECOVERY veya NORECOVERY seçeneği belirtilmeli. RECOVERY seçeneği SQL Server’ın default seçeneğidir.
RECOVERY Seçeneğini Belirleme
Restore etmek için son transaction log ile birlikte kullanılır.
· SQL Server, transaction logdaki onaylanmamış işlemleri geri ve onaylanmış işlemleri ileri döndürür.
· Recovery işlemi tamamlandıktan sonra, veritabanı kullanım için uygundur.
Note: Restore edilmiş ek transaction log’lara veya differantial backup’lara sahip isen bu seçeneği kullanma
NORECOVERY Seçeneğini Belirleme
Restore için çoklu yedeklere sahip isen bu seçeneği kullan.
¨ NORECOVERY seçeneği son yedek hariç bütün yedekler için belirlenir.
¨ SQL Server, ne transaction logdaki onaylanmamış işlemleri geri döndürür ne de onaylanmış işlemleri ileri döndürür.
¨ Veritabanı recover edilene kadar kullanım için uygun değildir.
Yeniden Kurma Seçeneğini Belirleme
RESTORE ifadesi kullanılacağı zaman, restore işleminin nasıl yapıldığını belirten aşağıdaki seçenekler kullanılır.
FILE Seçeneğinin Kullanımı
Çoklu yedekleri içeren yedek dosyalarından, belirli yedekleri seçmek için kullanılır. Backup dosyasında varolan yedekle uyuşan dosya numarası belirtilmeli.
MOVE TO Seçeneğinin Kullanımı
Dosya farklı bir alana restore edilirse (farklı server, disk sürücüsü veya yedek SQL Server gibi), yedek dosyalarının nereye restore edileceğini belirlemek için kullanılır.
Note: sp_attach_db veya sp_attach_single_file_db sistem stored procedure’leri kullanılarak bir veritabanı, kopyalama yöntemiyle bir server’dan diğerine kopyalanır ve sonra bunlar master veritabanına bağlanır.
REPLACE Seçeneğinin Kullanımı
Farklı veritabanı yedeğindeki verinin, varolan veritabanının yerini alması istenirse, bu seçenek kullanılır.
Eğer aşağıdakiler geçerli ise SQL Server, veritabanının yerini değiştirmemek için güvenlik kontrolü yapar.
§ Veritabanı hedef server üzerinde zaten varsa ve veritabanı ismi yedek setine kaydedilen isimden farklı ise
§ Veritabanındaki dosyalar yedek setindeki dosyalardan farklı ise. SQL Server dosya boyutlarındaki farklılıkları göz ardı eder.
Farklı Backup Tiplerinden Veritabanlarını Restore Etme
Bir veritabanını restore etmek için; yedekleme yaparken kullanılan yedek metodunun tipini bilmek gerekir. Restore edilmesi istenen yedekleri içeren yedekleme dosyalarını onaylamak gerekir. Yedeklerin geçerli olduğundan ve tüm dosyalara veya teyplere sahip olunduğundan emin olmak gerekir.
Full Database Backup’tan Restore Etme
Bu işlem yapıldığında, SQL Server, veritabanını ve onun bağlı olduğu bütün dosyaları yeniden yaratır ve daha sonra onları orjinal yerlerine yerleştirir. Bütün veritabanı nesneleri otomatik olarak yeniden yaratılır. Veritabanı restore edilmeden önce, veritabanı şemasını yeniden build etmeye gerek yoktur.
Nezaman Kullanılır
Aşağıdakiler gerçekleştiği zaman, full database backup’tan restore edilebilir.
% Veritabanının fiziksel diski zarara uğradığı zaman
% Tüm veritabanı zarara uğradığında, bozulduğunda veya silindiğinde
% Veritabanı kopyası, farklı SQL Server’a kurulduğunda (yedek SQL Server gibi)
RECOVERY Seçeneğini Belirleme
Aşağıdakiler gerçekleşirse RECOVERY seçeneği recovery işlemini başlatır.
ü Full database backup stratejisi yerine getirilirse ve transaction log veya differantial backup’lar yoksa, RECOVERY seçeneği belirlenir.
ü Transaction log veya differantial backup’lar mevcut ise, NORECOVERY seçeneği belirtilir.
Örnek: Bu örnekte varsayalım ki; full backup, permanent nwindbac yedek dosyası üzerinde bulunuyor ve iki yedek bu dosyaya ekleniyor. Northwind veritabanı, tamamiyle permanent nwindbac yedek dosyası üzerinde bulunan ikinci yedek ile değiştirilir. Son olarak; recovery işlemi onaylanmış işlemleri ilerletir ve onaylanmamış işlemleri geriye döndürür.
USE master
RESTORE DATABASE northwind
FROM nwindbac
WITH FILE =2
RECOVERY
Differantial Backup’tan Restore Etme
Bir veritabanı differantial database backup’tan restore edildiği zaman, SQL Server:
ª Sadece, son full database backup’tan beri değiştirilmiş veritabanı bölümünü restore eder.
ª Veritabanını, Differantial backup’ın yapıldığı doğru konuma geri döndürür.
ª Differantial backup’ları restore etmek için daha az zaman harcar.
Differantial Backup’ları Restore Ederken Göz Önünde Tutulması Gereken Etmenler
q Full database backup’ı açmak için kullanılan syntax, diferansiyel yedeği açmak için kullanılan syntax ile aynıdır. FROM clause’da, full database backup’ı belirtmek yerine, differantial backup’ı içeren yedek dosyası belirtilir.
q Differantial backup restore edilmeden önce, full database backup restore edilmeli.
q Restore edilecek transaction log’lar kalmışsa, NORECOVERY seçeneği belirtilir, aksi taktirde RECOVERY seçeneği belirtilir.
Örnek: Aşağıdaki örnek; Veritabanını recover etmeden, Differantial backup’ı restore eder. Nwindbacdiff dosyası, Differantial bir backup içerir. SQL Server, northwind veritabanı, NORECOVERY seçeneği belirtilerek uygun duruma getirilmeden önce, transaction log’ları restore etmeye izin verir.
USE master
RESTORE DATABASE northwind
FROM nwindbacdiff
WITH NORECOVERY
Transaction Log Backup’ı Restore Etme
Transaction log backup’tan restore edildiği zaman, SQL Server transaction log içindeki değişiklikleri restore eder.
Transaction log yedeklerini yeniden kurmadan önce, ilk olarak full database backup açılmalı. Çoklu transaction loglar olduğu zaman, en sondaki hariç bütün transaction loglar için NORECOVERY seçeneği belirtilir. SQL Server, son transaction log restore edilene kadar recovery işlemini erteler.
Syntax RESTORE LOG {database_name | @database_name_var}
[FROM <backup_file> [,...n]]
[WITH
[[,] {NORECOVERY | RECOVERY | STANDBY = undo_file_name}]
[[,] STOPAT = {date_time | @date_time_var}]
Örnek: Aşağıdaki örnek; full database, bir yedek dosyası üzerinde bulunur ve iki transaction log yedeği başka yedekleme dosyası üzerinde bulunur. Üç farklı restore işlemi, veritabanı tutarlılığını garantiye almak için kullanılır.
1) İlk adım, veritabanını recover etmeden, full database backup’tan restore eder.
USE master
RESTORE DATABASE northwind
FROM nwindbac
WITH NORECOVERY
2) İkinci adım, veritabanını recover etmeden, ilk transaction log’u restore eder.
USE master
RESTORE DATABASE northwind
FROM nwindbaclog
WITH FILE = 1,
STATS,
NORECOVERY
3) Üçüncü adım, ikinci transaction log’u restore eder. RECOVERY seçeneği northwind veritabanını uygun konuma geri döndürür.
USE master
RESTORE LOG northwind
FROM nwindbaclog
WITH FILE = 2
RECOVERY
Zaman Noktası Belirtme
Transaction loglar restore edilirken, STOPAT seçeneği kullanılarak belirli bir zaman noktasına restore edilebilir.
· Veri bozulmadan önce veritabanını recover etmek için STOPAT seçeneği kullanılır.
Örneğin; bozuk bir güncellemesaat 11:00’de oluşursa, 10:59 süresince transaction log’ değişiklikler restore edilebilir ve bu noktadan sonra oluşan değişkilikler uygulanmaz.
· Veritabanı üzerine, bir yedeği yüklemeyi durdurmak için tarih ve zaman belirtme.
SQL Server belirli bir zaman noktasından önce veritabanına yazılan tüm transaction log kayıtlarını restore eder.
Örnek; full database ve iki transaction log yedeği bir yedek dosyasında bulunur. Sadece 3 Haziran 1998 1:00’den önce meydana gelen değişiklikler restore edilir. Üç farklı restore işlemi veritabanı uyumluluğunu garanti altına almak için yapılmıştır.
1) İlk adım, veritabanını recover etmeden, full database backup’tan restore eder.
USE master
RESTORE DATABASE northwind
FROM nwindbac
WITH NORECOVERY
2) İkinci adım, veritabanını recover etmeden, ilk transaction log’u restore eder.
USE master
RESTORE DATABASE northwind
FROM nwindbaclog
WITH FILE = 1,
NORECOVERY
3) Üçüncü adım, 3 haziran 1998 1:00’den sonra oluşan değişiklikleri uygulayarak ikinci transaction log’u restore eder ve veritabanını recover eder.
USE master
RESTORE LOG northwind
FROM nwindbaclog
WITH FILE = 2
RECOVERY
STOPAT = ‘January 3, 1998 1:00’
Bir Dosya veya FileGrup Yedeğinden Restore Etme
Geniş bir veritabanı dosyasını restore etmek için gerekli olan zamanı düşürmek için, dosya veya filegup yedeğinden restore etmek gerekir. Dosya veya filegrup’tan restore etme, dosya yanlışlıkla silinirse veya zarara uğrarsa, çok yaralıdır.
Dosya veya filegrup’tan restore ederken aşağıdaki adımlar göz önüne alınmalı.
§ SQL Server, sadece restore edilmiş dosyayı etkileyen işlemleri yürütür.
§ SQL Server, bir tablo ve ona bağlı indexler iki farklı filegrupta bulunuyorsa, onları bir parça olarak restore edilmesini ister.
§ SQL Server, full database backup’tan özel veritabanı dosyasını kurmaya izin verir.
Syntax RESTORE DATABASE {database_name | @database_name_var}
<file_or_filegroup> [,...m]
[FROM <backup_file> [,...n]
Where <file_or_filegroup> ,is
{FILE=logical_file_name | FILEGROUP=logical_filegroup_name}
Örnek; Varsayalaım ki; bir veritabanı üç dosya üzerinde yer alsın: Nwind1, Nwind2, Nwind3. Nwind2 veritabanı dosyası tek bir tabloyu ve onunla ilgili indexleri içerir. Nwind2 veritabanı dosyası, Nwind2bac yedek dosyasına yedeklenir. Nwind2’den beri yapılan bir transaction log yedeği son yedeklemedir. Nwind2 restore edilmeli; çünkü fiziksel media zarara uğramış. Örnek veritabanı uyumluluğunu garanti altına almak için iki adımdan oluşmuştur.
1) İlk adım, onaylanmış işlemleri ileri atmadan veya onaylanmamış işlemleri geri döndürmeden, Nwind2 veritabanı dosyasının yedeğini restore eder.
USE master
RESTORE DATABASE northwind
FILE=nwind2
FROM nwind2bac
WITH NORECOVERY
2) İkinci adım, transaction log yedeğini restore eder, onaylanmış işlemleri ileri atar veya onaylanmamış işlemleri geri döndürür.
USE master
RESTORE LOG northwind
FROM nwindbaclog
WITH RECOVERY
Bir SQL Server Yedeği Kullanma
Eğer iş ortamı, production server’ın daima erişilebilir olmasını istiyorsa, SQL Server yedeği kullanılabilir.
Bir SQL Server Yedeği Kurma
SQL Server yedeği, iş ortamı için uygun ise, yedeğin amacını belirlemek, sonra yedeği yaratmak ve bakımını yapmak gerekir.
Syntax RESTORE {DATABASE | LOG} {databsae_name | @database_name_var }
FROM <backup_file> [,...n]
[[,] MOVE ‘logical_file_name’ TO ‘operating_system_file_name’]
[WITH NORECOVERY | RECOVERY | STANDBY =undo_file_name}]
]
Amaç
SQL Server yedeği (standby), production server’ı yansıtan ikinci bir server’dır. SQL Server yedeği, başarısız durumlarda, production server’ın yerine geçmek için veya veritabanının salt okunur kopyası olarak kullanılır. Ayrıca Server yedeği, birincil server üzerindeki yüklemeyi arttırmadan Database Consistency Checker (DBCC) çalıştırılarak, veritabanı güvenilirliğini onaylamak için kullanılır.
İlk Yaratma
Production server üzerindeki transaction logları ve veritabanlarını yedekleyerek, SQL Server yedeğini yarat ve sonra bunları başka bir SQL Server’a restore et.
Yedekler, SQL Server yedeğine restore edildiği zaman, aşağıdaki adımları ele almak gerekir.
· SQL Server yedeği, production server’ın kopyası ise, production server üzerindeki sistem veritabanlarını içeren bir veya daha fazla veritabanı kopyası SQL Server yedeği üzerine yaratılır.
· SQL Server yedeği üzerine veritabanı için yeni alan belirlemek için MOVE TO seçeneğini kullan.
Ayrıca veritabanı dosyaları bir server’dan diğerine kopyalanır ve sonra sp_attach_db veya sp_attach_single_file_db sistem stored procedure’ı kullanılarak, SQL Server yedeğinin master veritabanına bağlanabilir.
· NORECOVERY veya STANDBY seçeneği belirtilmeli.
SQL Server yedeği, production server’ın yerine geçene kadar, veritabanı recover edilmez. SQL Server yedeğinin amacı, production server’ın salt okunur kopyasına sahip olmaksa, veritabanı recover edilmek istenmez.
Bakım
SQL Server yedeğinin bakımını yapmak için, düzenli olarak bütün ek transaction log yedekleri, SQL Server yedeğine restore edilmeli. Transaction logları restore etme, SQL Server yedeğinin production serverla tutarlı olduğunu gösterir. SQL Server yedeğinin bakımını yapmak için aşağıdaki adımları göz önüne almak gerekir.
§ Düzenli olarak production server üzerine transaction log’u yedekleme
§ Her zaman production server üzerine transaction log’un yedeklendiği zaman, SQL Server yedeğine transaction log yedeği restore edilir.
§ Production server yeniden elde edilene kadar SQL Server yedeği istenmiyorsa, NORECOVERY seçeneği belirtilmeli.
§ Veritabanını salt okunur aktiviteler için uygun hale getirmek için STANDBY seçeneği kullanılır.
§ SQL Server yedeği, salt okunur veritabanı olarak kullanılırsa, veritabanını kullanıcılara uygun hale getirmek için, dbo use only seçeneği false’a ayarlanır.
SQL Server Yedeğinin Salt Okunur Olarak Kullanımı
SQL Server yedeği, production server’ın salt okunur kopyası olarak çalışabilir.
Production Server Üzerindeki Aktiviteyi Düşürme
SQL Server yedeği, production server’ın salt okunur kopyası ise, production server üzerindeki aktivite miktarı düşürülebilir.
· Kullanıcılar, sorgular için veriye erişebilirler.
· DBCC ifadeleri;
¨ Veritabanının doğruluğunu kontrol etmek için çalıştırılabilir.
¨ Herbir yedek dosyası, SQL Server yedeği üzerine kurulduktan sonra, her bir yedeği doğrulmak için çalıştırılabilir.
Veri Bozukluklarını Düzeltme
SQL Server yedeği, veritabanı bozukluklarını belirlemek için kullanılabilir. STANDBY seçeneği, bozulmaları veya bozuk veriyi incelemek için kullanılır.
Aşağıdaki adımlar veri bozukluklarının nasıl düzeltilebileceğini gösterir.
1) STANDBY seçeneğini kullanarak, transaction log’u SQL Server yedeğine koyma
2) Bozuklukları kontrol eden DBCC ifadelerini çalıştırarak, sonraki transaction log’u koymadan (apply) önce, veritabanı bölümlerini inceleme
3) Bozuk veriyi kontrol eden sorguları kullanarak, sonraki transaction log’u koymadan önce, veritabanı bölümlerini inceleme
4) Problemin nedeni belirlenene kadar, her bir restore’dan (Adım1, Adım2,3) sonra, veritabanı bölümlerini inceleme ve transaction log’ları koymaya devam etme
5) Problem oluşmadan önce, recovery zamanı kullanılarak, production server üzerine veritabanı ve transaction logları restore etme
6) Production server üzerindeki veritabanı durumunu yansıtan SQL Server yedeğini yeniden kurma
STANDBY Seçeneğinin Kullanımı
SQL Server yedeğindeki veritabanı recover edilirse, ek transaction loglar, production server’dan SQL Server yedeğine restore edilemezler. STANDBY seçeneği:
§ Kullanıcıların, SQL Server yedeğine erişimlerine izin vermek için kullanılır
§ Ek transaction log’ların restore edilmesine izin vermek için kullanılır.
STANDBY seçeneği kullanıldığı zaman, SQL Server, ek transaction loglar kurulurken, değişiklikleri geriye döndürmek için kullanılan bir dosya yaratır. Undo_file_name parametresi kullanılarak bu dosya belirtilebilir.
· Undo_file_name belirtilemezse, SQL Server bir tane yaratır.
· SQL Server, herbir transaction log kurma işlemi için aynı Undo_file_name’i kullanır.
· Undo_file_name mevcutsa, SQL Server dosyanın üzerine yazar.
· Undo_file_name’in boyutu, disk alanı ile sınırlıdır.
Örnek: Veritabanı yedeğini ve transaction log’u server yedeğine restore eder. Server yedeğindeki veritabanı salt okunur moddadır. Burada, Server yedeğinin ve production serverın, veritabanı dosyaları için aynı alanı kullandığı varsayılır.
USE master
RESTORE DATABASE nwcopy FROM nwfullbackup
WITH STANDBY = ‘C:\Nwundo.ldf’
RESTORE LOG nwcopy FROM nwlogbackup
WITH STANDBY = ‘C:\Nwundo.ldf’
Production Server’ı SQL Server Yedeği ile Değiştirmek
Zamanı minimize etmek için SQL Server yedeği, production yedeği olarak kullanılabilir.
Production Server Olarak Kullanım
Aşağıdaki adımlar SQL Server Yedeğinin Production Server olarak kullanılmasını sağlar.
1. Production server’dan transaction log’u yedekle. Son transaction log yedeğinden beri yapılan onaylanmış işlemleri, tutmak için NO_TRUNCATE seçeneği kullanılmalı.
2. Production server’I network’ten uzak tut.
3. SQL Server yedeğinin ismini production server ismi ile değiştir.
4. SQL Server yedeğine son transaction log’u restore et ve RECOVERY seçeneğini belirt. SQL Server, veritabanını recovere eder ve kullanıcıların transaction logları okumasına ve yazmasına izin verir.
SQL Server yedeği, salt okunur server olarak kullanılırsa ve restore eden için transaction log’lar yoksa, RESTORE DATABASE WITH RECOVERY ifadesi ile SQL Server yedeği recover edilir. Bu noktada, SQL Server yedeği, production server olarak tanınır.
Production Server’I Kurma
Problem çözüldükten sonra, production server restore edilir. Production server’I restore etmek için aşağıdaki adımları göz önüne almak gerekir:
1. Bütün değişiklikleri tutmak için, SQL Server yedeğinin full database ve transaction log’larını yedekleme. SQL Server yedeği ile production server yedeği değiştirildiği zaman, SQL Server yedeği, transaction log’a ve veritabanı kopyasına değişiklikleri kaydeder.
2. SQL Server yedeğini uzak tut.
3. Yedek SQL Server veritabanını ve transaction log’ları production server’a restore et.
4. Production server’I kullanıma sok.
5. Production server üzerinde, bütün veritabanların full database backup’larını al.
6. Veritabanını recover etmeden, yedekleri, yedek SQL Server’a restore et. Uygunsa STANDBY seçenğini kullan. SQL Server yedeği, production server’ın kopyasıdır ve restore edilmesi için ek transaction log’lara izin verir.
Zarara Uğramış Sistem Veritabanlarını Restore Etme
Media zarara uğramış veritabanlarını içeriyorsa, sistem veritabanları rebuild edilmeli.
Bir Yedekten Sistem Veritabanlarını Restore Etme
SQL Server servisi başlatıldığında, geçerli veritabanından sistem veritabanlarını restore etmek için RESTORE DATABASE ifadesi veya SQL Server Enterprise Manager kullanılır.
Sistem Veritabanlarını Rebuild Etme
Master veritabanı zarara uğramışsa ve SQL Server başlatılamıyorsa, aşağıdaki adımlar yapılır.
1) MsSQL7/Binn dizininde bulunan rebuild.exe çalıştırılarak, sistem veritabanları rebuild edilmeli.
2) Sistem veritabanları rebuild edildikten sonra, SQL Server servisi başlatılabilir.
3) Sonra, sistem veritabanlarının yedekleri restore edilir.
Note: Sistem veritabanları, rebuild edilirken var olan master, model, msdb veritabalarının üzerine yazılır.
Sistem Veritabanlarını Restore Etme
Sistem veritabanları rebuild edildikten ve SQL Server başlatıldıktan sonra, aşağıdaki adımlar yapılır.
1. Varsa, bir yedekten master veritabanı yeniden kurulur.
Geçerli master veritabanının yedeği yoksa, aşağıdakilerden biri kullanılarak, master’da bulunan bilgi elle yeniden yaratılmalı.
· SQL Server Enterprise Manager
· Master veritabanını yaratmak için kullanılan orjinal scriptler. Master veritabanı aşağıdaki referansları içerir:
· Kullanıcı Veritabanları
· Veritabanı dosyaları
· Yedekleme aygıtları
· SQL Server loginleri ve server-wide güvenlik rolleri
2. Eğer varsa, bir yedekten msdb veritabanı yeniden kurulur.
Master veritabanı rebuild edildiği zaman, msdb veritabanı restore edilmeli. SQL Server Setup’I çalıştırıldığı zaman, msdb veritabanı kaldırılır ve sonra yeniden yaratılır. Böylece bütün tasarlanmış bilgi kaybedilir.
3. Eğer varsa, bir yedekten model veritabanı restore edilir.
Kullanıcı Veritabanlarını Yeniden Kurma
Master veritabanının rebuild edilip edilmediğine bağlı olarak, kullanıcı veritabanları restore edilir:
ü Master veritabanı geçerli yedekten restore edilirse, herbir kullanıcı veritabanı referansını içerir.
ü Master veritabanı rebuil edilirse ve geçerli yedek kullanılmazsa, aşağıdakilerden biri yapılmalı:
ü Bir yedekten kullanıcı veritabanlarını restore et
ü Yeni master veritabanına, varolan kullanıcı veritabanı dosyalarını bağla.
Kullanıcı veritabanı dosyaları zarara uğramamışsa, sp_attach_db veya sp_attach_single_file_db sistem stored procedure’I kullanılarak yeni master veritabanına bunlar bağlanır (attach).
Veritabanı dosyalarını bağlama, kullanıcı veritabanı hakkında master veritabanını haberdar eder. Bunları, master veritabanına bağlamak için veritabanı yedeğine gerek yoktur.
Note: Kullanıcı veritabanını bağlama, bir yedekten restore etmeden daha hızlı ve verimlidir.
Örnek: Aşağıdaki örnek; Master veritabanına, northwind veritabanını bağlar
USE master
EXEC sp_attach_single_file_db @dbname = ‘northwind’,
@physname=’C:\MsSQL7\Data\Northwind.mdf’
Tavsiye Edilen Uygulamaları
Veritabanları, transaction loglar veya dosyalar restore edildiği zaman, aşağıdaki tavsiye edilmiş uygulamaları göz önüne almak gerekir.
{ Restore tasarlanarak, restore edilmesi istenen yedekler hakkında bilgi elde edilebilir. Dosyaların geçerli olduğundan ve veritabanını restore etmek için gerekli olan bütün yedekleri içerdiğinden emin olmak gerekir.
{ Restore edilmiş ek yedekler varsa, NORECOVERY seçeneği kullanılmalı.
{ Veritabanını uygun duruma getirmek için, son yedek üzerinde RECOVERY seçeneği kullanılmalı.
Kullanıcıların SQL Server yedeğine erişebilmelerini sağlamak için ve server üzerindeki ek transaction logları restore etmek için STANDBY seçeneğini kullan. Veritabanı uygun duruma getirilene kadar, kullanıcılar SQL Server yedeğindeki veritabanlarına erişemezler. Transaction loglar restore edildiği zaman, SQL Server değişiklikleri geri döndürmek için bir dosya yaratır. Bunun için STANDBY seçeneği kullanılmış olmalı.