RESTORE (Transact-SQL)
BACKUP komutu kullanılarak alınmış yedekleri geri yükler. Bu komut aşağıdaki geri yükleme senaryolarını gerçekleştirmenizi sağlar:
Veritabanının tamamını tam bir yedeğinden geri yükleme (tam bir geri yükleme).
Veritabanının bir kısmını geri yükleme (kısmi geri yükleme).
Belirli dosyaları veya dosya gruplarını veritabanına geri yükleme (dosya geri yükleme).
Belirli sayfaları veritabanına geri yükleme (sayfa geri yükleme).
Bir işlem günlüğünü veritabanına geri yükleme (işlem günlüğü yükleme).
Veritabanını bir veritabanı anlık görüntüsü ile yakalanan bir noktaya geri döndürme.
SQL Server geri yükleme senaryoları hakkında daha fazla bilgi için, bkz. Geri yükleme ve Kurtarma Özet (SQL Server).
[!NOT]
Değişkenlerin açıklamaları hakkında daha fazla bilgi için, bkz. restore değişkenlerini (Transact-sql).
Transact-SQL Sözdizim Kuralları
Sözdizimi
--To Restore an Entire Database from a Full database backup (a Complete Restore):
RESTORE DATABASE { database_name | @database_name_var }
[ FROM <backup_device> [ ,...n ] ]
[ WITH
{
[ RECOVERY | NORECOVERY | STANDBY =
{standby_file_name | @standby_file_name_var }
]
| , <general_WITH_options> [ ,...n ]
| , <replication_WITH_option>
| , <change_data_capture_WITH_option>
| , <FILESTREAM_WITH_option>
| , <service_broker_WITH options>
| , <point_in_time_WITH_options—RESTORE_DATABASE>
} [ ,...n ]
]
[;]
--To perform the first step of the initial restore sequence
-- of a piecemeal restore:
RESTORE DATABASE { database_name | @database_name_var }
<files_or_filegroups> [ ,...n ]
[ FROM <backup_device> [ ,...n ] ]
WITH
PARTIAL, NORECOVERY
[ , <general_WITH_options> [ ,...n ]
| , <point_in_time_WITH_options—RESTORE_DATABASE>
] [ ,...n ]
[;]
--To Restore Specific Files or Filegroups:
RESTORE DATABASE { database_name | @database_name_var }
<file_or_filegroup> [ ,...n ]
[ FROM <backup_device> [ ,...n ] ]
WITH
{
[ RECOVERY | NORECOVERY ]
[ , <general_WITH_options> [ ,...n ] ]
} [ ,...n ]
[;]
--To Restore Specific Pages:
RESTORE DATABASE { database_name | @database_name_var }
PAGE = 'file:page [ ,...n ]'
[ , <file_or_filegroups> ] [ ,...n ]
[ FROM <backup_device> [ ,...n ] ]
WITH
NORECOVERY
[ , <general_WITH_options> [ ,...n ] ]
[;]
--To Restore a Transaction Log:
RESTORE LOG { database_name | @database_name_var }
[ <file_or_filegroup_or_pages> [ ,...n ] ]
[ FROM <backup_device> [ ,...n ] ]
[ WITH
{
[ RECOVERY | NORECOVERY | STANDBY =
{standby_file_name | @standby_file_name_var }
]
| , <general_WITH_options> [ ,...n ]
| , <replication_WITH_option>
| , <point_in_time_WITH_options—RESTORE_LOG>
} [ ,...n ]
]
[;]
--To Revert a Database to a Database Snapshot:
RESTORE DATABASE { database_name | @database_name_var }
FROM DATABASE_SNAPSHOT = database_snapshot_name
<backup_device>::=
{
{ logical_backup_device_name |
@logical_backup_device_name_var }
| { DISK | TAPE } = { 'physical_backup_device_name' |
@physical_backup_device_name_var }
}
<files_or_filegroups>::=
{
FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }
| FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
| READ_WRITE_FILEGROUPS
}
<general_WITH_options> [ ,...n ]::=
--Restore Operation Options
MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name'
[ ,...n ]
| REPLACE
| RESTART
| RESTRICTED_USER
--Backup Set Options
| FILE = { backup_set_file_number | @backup_set_file_number }
| PASSWORD = { password | @password_variable }
--Media Set Options
| MEDIANAME = { media_name | @media_name_variable }
| MEDIAPASSWORD = { mediapassword | @mediapassword_variable }
| BLOCKSIZE = { blocksize | @blocksize_variable }
--Data Transfer Options
| BUFFERCOUNT = { buffercount | @buffercount_variable }
| MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }
--Error Management Options
| { CHECKSUM | NO_CHECKSUM }
| { STOP_ON_ERROR | CONTINUE_AFTER_ERROR }
--Monitoring Options
| STATS [ = percentage ]
--Tape Options
| { REWIND | NOREWIND }
| { UNLOAD | NOUNLOAD }
<replication_WITH_option>::=
| KEEP_REPLICATION
<change_data_capture_WITH_option>::=
| KEEP_CDC
<FILESTREAM_WITH_option>::=
| FILESTREAM ( DIRECTORY_NAME = directory_name )
<service_broker_WITH_options>::=
| ENABLE_BROKER
| ERROR_BROKER_CONVERSATIONS
| NEW_BROKER
<point_in_time_WITH_options—RESTORE_DATABASE>::=
| {
STOPAT = { 'datetime'| @datetime_var }
| STOPATMARK = 'lsn:lsn_number'
[ AFTER 'datetime']
| STOPBEFOREMARK = 'lsn:lsn_number'
[ AFTER 'datetime']
}
<point_in_time_WITH_options—RESTORE_LOG>::=
| {
STOPAT = { 'datetime'| @datetime_var }
| STOPATMARK = { 'mark_name' | 'lsn:lsn_number' }
[ AFTER 'datetime']
| STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' }
[ AFTER 'datetime']
}
Bağımsız değişkenler
Değişkenlerin açıklamaları için, bkz. restore değişkenlerini (Transact-sql).
Geri Yükleme Senaryoları Hakkında
SQL Server çeşitli geri yükleme senaryolarını destekler:
Veritabanının tamamını geri yükleme
Veritabanını, tam bir veritabanı yedeği ile başlayarak geri yükler; bu işlemin ardından veritabanı değişiklikleri yedeğinin (ve günlük yedeklerinin) geri yüklenmesi gelebilir. Daha fazla bilgi için, bkz. Tam veritabanı (Basit kurtarma modeli) yükler veya Tam veritabanı (tam kurtarma modeli) yükler.
Dosya geri yükleme
Birden çok dosya grubu olan bir veritabanında bir dosyayı veya dosya grubunu geri yükler. Basit kurtarma modelinde dosyanın bir salt okunur dosya grubuna ait olması gerektiğine dikkat edin. Tüm dosyaların geri yüklenmesinden sonra dosya değişiklikleri yedeği geri yüklenebilir. Daha fazla bilgi için, bkz. Dosya (tam kurtarma modeli) yükler ve Dosya (Basit kurtarma modeli) yükler.
Sayfa geri yükleme
Ayrı ayrı sayfaları geri yükler. Sayfa geri yükleme yalnızca tam ve günlüğü toplu tutulan kurtarma modellerinde kullanılabilir. Daha fazla bilgi için, bkz. Sayfalar (SQL Server) geri yükleme.
Parça parça geri yükleme
Veritabanını, birincil dosya grubundan ve bir veya daha fazla ikincil dosya grubundan başlayarak aşamalı olarak geri yükler. Parça parça geri yükleme PARTIAL seçeneğini kullanan ve geri yüklenecek bir veya daha fazla ikincil dosya grubu belirten bir RESTORE DATABASE ile başlar. Daha fazla bilgi için, bkz. Piecemeal geri yüklemeler (SQL Server).
Yalnızca kurtarma
Yalnızca veritabanı ile tutarlı olan ve kullanılır olması gereken verileri kurtarır. Daha fazla bilgi için, bkz. Bir veritabanı (Transact-sql) veri geri yüklemeden kurtarmak.
İşlem günlüğü geri yükleme.
Tam veya günlüğü toplu tutulan kurtarma modellerinde, istenen kurtarma noktasına ulaşılabilmesi için günlük yedeklerinin geri yüklenmesi gerekir. Günlük yedeklerini geri yükleme hakkında daha fazla bilgi için, bkz. Işlem günlüğü yedekleri uygulayın.
Bir yansıtma veritabanı oluşturun.
Daha fazla bilgi için, bkz. How to: Prepare a Mirror Database for Mirroring (Transact-SQL).
Yedek bir sunucu oluşturun ve hazır durumda tutun. Hazır tutulan sunucular hakkında daha fazla bilgi için, bkz. Using Warm Standby Servers.
Çevrimiçi Geri Yükleme
[!NOT]
Çevrimiçi geri yükleme yalnızca SQL Server 2005 Enterprise Edition ve sonraki sürümlerde yapılabilir.
Çevrimiçi geri yüklemenin desteklendiği durumlarda, veritabanı çevrimiçiyse, dosya ve sayfa geri yüklemeleri otomatik olarak çevrimiçi geri yüklemelerdir ve parça parça bir geri yüklemenin ilk aşamasından sonra ikincil dosya grubunu geri yükler.
[!NOT]
Çevrimiçi geri yüklemelerde ertelenmiş işlemler söz konusu olabilir.
Daha fazla bilgi için, bkz. Çevrimiçi geri yükleme (SQL Server).
RESTORE Seçenekleri Hakkında Ek Değerlendirmeler
Artık Desteklenmeyen RESTORE Anahtar Sözcükleri
Aşağıdaki anahtar sözcükler SQL Server 2008 ürününde artık desteklenmemektedir:
Artık desteklenmeyen anahtar sözcük |
Yerine gelen… |
Yerine gelen anahtar sözcüğe örnek |
---|---|---|
LOAD |
RESTORE |
RESTORE DATABASE |
TRANSACTION |
LOG |
RESTORE LOG |
DBO_ONLY |
RESTRICTED_USER |
RESTORE DATABASE ... WITH RESTRICTED_USER |
RESTORE LOG
RESTORE LOG, ileri sarma işlemi sırasında dosya oluşturulabilmesi için bir dosya listesi içerebilir. Bu, günlük yedeği, veritabanına bir dosya eklendiğinde yazılan günlük kayıtlarını içerdiğinde kullanılır.
[!NOT]
Tam veya günlüğü toplu tutulan kurtarma modeli kullanan bir veritabanında, çoğu durumda veritabanını geri yüklemeden önce günlüğün son kısmını yedeklemeniz gerekir. Veritabanını ilk önce günlüğün son kısmını yedeklemeden geri yüklemek, RESTORE DATABASE deyimi, veri yedeklemesinin bitmesinden sonraki bir zamanı veya işlemi belirtmesi gereken WITH REPLACE veya WITH STOPAT yan tümcesini içermiyorsa hata ile sonuçlanır. Günlük sonu yedekleri hakkında daha fazla bilgi için, bkz. Tail günlük yedekleme (SQL Server).
RECOVERY ve NORECOVERY'nin karşılaştırılması
Geri alma, [ RECOVERY | NORECOVERY ] seçenekleri ile RESTORE deyimi yoluyla denetlenir:
NORECOVERY geri almanın oluşmadığını belirtir. Bu, iler sarmanın sıradaki bir sonraki deyimle devam etmesine izin verir.
Bu durumda geri yükleme sırası diğer yedekleri geri yükleyip bunları ileri sarabilir.
RECOVERY (varsayılan), geçerli yedekte geri almanın ileri sarma tamamlandıktan sonra gerçekleştirilmesi gerektiğini gösterir.
Veritabanını kurtarma, geri yüklenmekte olan tüm veri kümesinin (ileri sarma kümesi) veritabanı ile tutarlı olmasını gerektirir. İleri sarma kümesi veritabanı ile tutarlı olacak kadar ileri sarılmadıysa ve RECOVERY belirtilirse, Veritabanı Altyapısı bir hata oluşturur.
Uyumluluk Desteği
SQL Server 2012'da, SQL Server 2005 veya sonraki bir sürümü kullanılarak oluşturulmuş bir veritabanı yedeğinden bir kullanıcı veritabanını geri yükleyebilirsiniz. Ancak, SQL Server 2005 veya SQL Server 2008 ile oluşturulmuş asıl, model vemsdb, SQL Server 2012 ile geri yüklenemez. Ayrıca, SQL Server 2012 ile oluşturulmuş yedekler daha önceki bir SQL Server sürümü ile geri yüklenemez.
[!NOT]
Hiçbir SQL Server yedeği yedeğin oluşturulduğu SQL Server sürümünden daha önceki bir sürüme geri yüklenemez.
SQL Server 2012, önceki sürümlerden farklı bir varsayılan yol kullanır. Dolayısıyla, SQL Server 2005 veya SQL Server 2008 yedeklerinin varsayılan konumunda oluşturulmuş bir veritabanını geri yüklemek için MOVE seçeneğini kullanmanız gerekir. Yeni varsayılan yol hakkında daha fazla bilgi için, bkz. File Locations for Default and Named Instances of SQL Server.
Siz bir SQL Server 2005 veya SQL Server 2008 veritabanını SQL Server 2012 sürümüne geri yükledikten sonra veritabanı otomatik olarak yükseltilir. Normal olarak veritabanı hemen kullanılabilir durumda olur. Ancak, bir SQL Server 2005 veritabanının tam metin dizinleri varsa, yükseltme işlemi bunları, upgrade_option sunucu özelliğine bağlı olarak alır, sıfırlar veya yeniden oluşturur. Yükseltme seçeneği almaya (upgrade_option = 2) veya yeniden oluşturmaya (upgrade_option = 0) ayarlıysa, yükseltme sırasında tam metin dizinleri kullanılamaz. Dizinlenen veri miktarına bağlı olarak alma birkaç saat ve yeniden oluşturma bunun on katına kadar süre alabilir. Ayrıca, yükseltme seçeneği almaya ayarlıysa, tam metin kataloğu kullanılamadığında ilişkili tam metin dizinleri yeniden oluşturulur. upgrade_option sunucu özelliğinin ayarını değiştirmek için sp_fulltext_service yordamını kullanın.
Bir veritabanı SQL Server'ın yeni bir örneğine ilk kez bağlandığında veya geri yüklendiğinde, veritabanı asıl anahtarının (hizmet asıl anahtarı tarafından şifrelenen) bir kopyası henüz sunucuya geri yüklenmemiştir. Veritabanı asıl anahtarının (DMK) şifresini çözmek için OPEN MASTER KEY deyimini kullanmalısınız. DMK'nın şifresi çözüldükten sonra, sunucuya DMK'nın hizmet asıl anahtarı (SMK) ile şifrelenmiş bir kopyasını sağlamak üzere gelecekte ALTER MASTER KEY REGENERATE deyimini kullanarak otomatik şifre çözmeyi etkinleştirme seçeneğiniz bulunur. Bir veritabanı daha önceki bir sürümden yükseltildiğinde, daha yeni AES algoritmasını kullanmak üzere DMK'nın yeniden üretilmesi gerekir. DMK'yı yeniden üretme hakkında daha fazla bilgi için, bkz. alter MASTER KEY (Transact-sql). AES'ye yükseltmek üzere DMK anahtarını yeniden üretmek için gereken zaman, DMK tarafından korunan nesnelerin sayısına bağlıdır. DMK anahtarının AES'ye yükseltmek üzere yalnızca bir kez yeniden üretilmesi gerekir ve bunun anahtar dönüşüm stratejisinin bir parçası olarak gelecekte yapılacak yeniden üretmeler üzerinde hiçbir etkisi yoktur.
Genel Yorumlar
Çevrimdışı bir geri yükleme sırasında, belirtilen veritabanı kullanımdaysa, RESTORE, kısa bir gecikmeden sonra kullanıcıları çevrimdışına zorlar. Birincil olmayan bir dosya grubunun çevrimiçi olarak geri yüklenmesinde, veritabanı, geri yüklenmekte olan dosya grubunun çevrimdışına alındığı zaman dışında kullanımda kalabilir. Belirtilen veritabanındaki tüm veriler geri yüklenen verilerle değiştirilir.
Veritabanı kurtarma hakkında daha fazla bilgi için, bkz. Geri yükleme ve Kurtarma Özet (SQL Server).
Platformlar arası, hatta farklı işlemci türleri arası geri yükleme işlemleri, veritabanının harmanlaması işletim sistemi tarafından desteklendiği sürece gerçekleştirilebilir.
RESTORE bir hatadan sonra yeniden başlatılabilir. Ayrıca, RESTORE deyimini hatalar olsa da devam edecek şekilde programlarsanız, deyim, olabildiğince çok veriyi geri yükler (CONTINUE_AFTER_ERROR seçeneğine bakın).
RESTORE açık veya örtük bir işlemde kullanılamaz.
Hasarlı bir asıl veritabanı, özel bir yordam kullanılarak geri yüklenir. Daha fazla bilgi için, bkz. Yedekleme ve geri yükleme sistem veritabanları (SQL Server).
Bir veritabanın geri yüklemek SQL Server örneğinin planlama önbelleğini temizler. Plan önbelleğini temizlemek, tüm sonraki yürütme planlarının yeniden derlenmesine neden olur ve sorgu performansında ani, geçici bir düşüşe neden olabilir. SQL Server 2005 Hizmet Paketi 2'den başlayarak, planlama önbelleğindeki temizlenen her önbellek deposu için SQL Server hata günlüğü şu bilgi iletisini içerir: "SQL Server, bazı veritabanı bakım ve yeniden yapılandırma işlemleri nedeniyle, '%s' önbellek deposu için %d adet önbellek deposu boşaltma oluşumuyla karşılaştı". Bu ileti, her beş dakikada bir, önbellek bu süre zarfında boşaltıldığı sürece günlüğe yazılır.
Bir kullanılabilirlik veritabanını geri yüklemek için, önce veritabanını SQL Server örneğine geri yükleyin, sonra veritabanını kullanılabilirlik grubuna ekleyin.
Birlikte Çalışabilirlik
Veritabanı Ayarları ve Geri Yükleme
Geri yükleme sırasında, ALTER DATABASE ile ayarlanabilen veritabanı seçeneklerinin çoğu, yedekleme sonunda yürürlükte olan değerlere sıfırlanır.
Ancak WITH RESTRICTED_USER seçeneğinin kullanılması, bu davranışı kullanıcı erişim seçeneği ayarı için geçersiz kılar. Bu ayar, her zaman, WITH RESTRICTED_USER seçeneğini içeren bir RESTORE deyiminin ardından ayarlanır.
Şifrelenmiş bir Veritabanını Geri Yükleme
Şifrelenmiş bir veritabanını geri yüklemek için, veritabanını şifrelemek için kullanılan sertifikaya veya asimetrik anahtara erişiminiz olması gerekir. Sertifika veya asimetrik anahtar olmadan veritabanı geri yüklenemez. Bunun sonucunda, veritabanı şifreleme anahtarını şifrelemek için kullanılan sertifikanın, yedek gerekli olduğu sürece tutulması gerekir. Daha fazla bilgi için, bkz. sql sunucu sertifikaları ve asimetrik anahtarları.
vardecimal Depolaması Etkinleştirilmiş bir Veritabanını Geri Yükleme
Yedekleme ve geri yükleme vardecimal depolama biçimiyle doğru çalışır. vardecimal depolama biçimi hakkında daha fazla bilgi için, bkz. sp_db_vardecimal_storage_format (Transact-sql).
Tam Metin Veritabanını Geri Yükleme
Tam metin verileri, tam bir geri yükleme sırasında diğer veritabanı verileriyle birlikte geri yüklenir. Tam metin dosyaları, düzenli RESTORE DATABASE database_name FROM backup_device sözdizimi kullanılarak veritabanı dosya geri yüklemesinin parçası olarak geri yüklenir.
RESTORE deyimi, ayrıca, değişik konumlara geri yükleme, değişiklikleri geri yükleme, dosya ve dosya grubu geri yükleme ve tam metin verilerinin dosya ve dosya grubu düzeyinde değişikliklerini geri yükleme işlemleri için de kullanılabilir. Ek olarak, RESTORE deyimi tam metin verilerini veritabanı verileriyle geri yüklemenin yanı sıra tek başına da geri yükleyebilir.
[!NOT]
SQL Server 2005 ürününden alınan tam metin katalogları veritabanı dosyaları olarak işlem görmeye devam eder. Bunlar için SQL Server 2005 tam metin kataloglarını yedekleme yordamı hala geçerlidir, ancak yedekleme işlemi sırasında artık duraklama ve sürdürme gerekli değildir. Daha fazla bilgi için, bkz. SQL Server 2005 Books Online'daki Tam Metin Kataloglarını Yedekleme ve Geri Yükleme.
Meta veriler
SQL Server, her sunucu örneğinin yedekleme ve geri yükleme etkinliklerini izleyen yedekleme ve geri yükleme geçmişi tabloları içerir. Bir geri yükleme gerçekleştirildiğinde, yedekleme geçmişi tabloları değiştirilir. Bu tablolar hakkında bilgi için, bkz. Yedekleme geçmişini ve başlık bilgileri (SQL Server).
Yeniden Geri Yükleme
Geri yüklemenin etkilerini geri almak olanaklı değildir; ancak, işleme yeniden ve dosya dosya başlayarak veri kopyalamanın etkilerini kaldırabilir ve ileri sarabilirsiniz. Yeniden başlamak için, istenen dosyayı geri yükleyin ve yeniden ileri sarın. Örneğin, yanlışlıkla çok fazla sayıda günlük yedeğini geri yükleyip istediğiniz durma noktasının ötesine geçtiyseniz, sırayı yeniden başlatmanız gerekir.
Bir geri yükleme sırası durdurulup etkilenen dosyaların tüm içeri geri yüklenerek yeniden başlatılabilir.
Veritabanını bir Veritabanı Anlık Görüntüsüne Geri Döndürme
Veritabanı geri alma işlemi (DATABASE_SNAPSHOT seçeneği ile belirtilir), bir kaynak veritabanını, bir veritabanı anlık görüntüsü alınan zaman döndürerek; yani belirtilen veritabanı anlık görüntüsünde o zamandan başlayarak korunan verileri kaynak veritabanının üzerine yazarak zamanda geri götürebilir. O anda yalnızca geri dönmekte olduğunuz anlık görüntü var olabilir. Geri alma işlemi daha sonra günlüğü yeniden oluşturur (dolayısıyla geri döndürülmüş bir veritabanını daha sonra kullanıcı hatası noktasına kadar ileri saramazsınız).
Veri kaybı, veritabanında anlık görüntünün alınmasından bu yana yapına güncelleştirmelerle sınırlıdır. Geri döndürülen veritabanının meta verileri, anlık görüntünün oluşturulduğu zamanki meta verilerle aynıdır. Ancak, anlık bir görüntüye geri dönme tüm tam metin kataloglarını bırakır.
Veritabanı anlık görüntüsüne geri dönme, medya kurtarma amacıyla tasarlanmamıştır. Düzenli bir yedekleme kümesinden farklı olarak veritabanı anlık görüntüsü veritabanı dosyalarının eksik bir kopyasıdır. Veritabanı veya veritabanı anlık görüntüsü bozulursa, anlık görüntüye geri dönmek olasılıkla olanaksız olacaktır. Dahası, bu olanaklı olduğunda bile bozulma yaşandığında geri dönmenin sorunu çözmesi pek olası değildir.
Geri Dönmeyle İlgili Kısıtlamalar
Geri dönme aşağıdaki koşullarda desteklenmez:
Kaynak veritabanı herhangi bir salt okunur veya sıkıştırılmış dosya grupları içeriyorsa.
Anlık görüntü oluşturulduğunda çevrimiçi olan herhangi bir dosya çevrimdışıysa.
Veritabanının halen birden fazla anlık görüntüsü varsa.
Daha fazla bilgi için, bkz. NIB - Reverting to a Database Snapshot.
Güvenlik
Bir yedekleme işlemi, isteğe bağlı olarak bir medya kümesi, bir yedekleme kümesi veya her ikisi için parolalar belirtebilir. Bir medya kümesinde veya yedekleme kümesinde bir parola tanımlandığında, RESTORE deyiminde doğru parolayı veya parolaları belirtmelisiniz. Bu parolalar, yedekleme kümelerinin SQL Server araçları kullanılarak medyaya yetkisiz geri yüklenmesini veya yetkisiz eklenmesini önler. Ancak, BACKUP deyiminin FORMAT seçeneği ile parolayla korunan medyanın üzerine yazılabilir.
Güvenlik Notu |
---|
Parolanın sağladığı koruma yetersizdir. Yetkili veya yetkisiz kişilerde SQL Server araçları kullanılarak yapılacak yanlış bir geri yüklemeyi önleme amaçlıdır. Yedek verilerin başka yollarla okunmasını veya parolanın değiştirilmesini önlemez. Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın. Yedekleri korumada en iyi uygulama yedekleme teyplerini güvenli bir konumda depolamak veya yeterli erişim denetim listeleri (ACL'ler) ile korunan disk dosyalarına yedekleme yapmaktır. ACL'lerin yedeklerin oluşturulduğu dizinin kökünde ayarlanması gerekir. |
İzinler
Geri yüklenen veri tabanı yoksa, RESTORE deyimini yürütebilmek için kullanıcının CREATE DATABASE izinleri olması gerekir. Veritabanı varsa, RESTORE izinleri varsayılan olarak sysadmin ve dbcreator sabit sunucu rolünün üyelerine ve veritabanının sahibine (dbo) verilir (FROM DATABASE_SNAPSHOT seçeneği için, veritabanının her zaman olması gerekir).
RESTORE izinleri, üyeleri hakkında sunucuda her zaman hemen bilgi bulunabilen rollere verilir. Sabit veritabanı rolüne üyelik yalnızca veritabanına erişilebildiğinde ve veritabanı hasarsız durumda olduğunda denetlenebildiğinden ve RESTORE yürütülürken bu durum zaman söz konusu olmadığında, db_owner sabit veritabanı rolünün üyelerinin RESTORE izinleri yoktur.
Örnekler
Tüm örnekler, tam bir veritabanı yedeklemesinin yapılmış olduğunu varsayar.
RESTORE örnekleri aşağıdakileri içerir:
A. Veritabanının tamamını geri yükleme
B. Tam ve farklı veritabanı yedeklemelerini geri yükleme
C. Veritabanını RESTART sözdizimini kullanarak geri yükleme
D. Veritabanını geri yükleme ve dosya taşıma
E. Veritabanını BACKUP ve RESTORE kullanarak kopyalama
F. STOPAT kullanarak geçmişteki bir noktadan geri yükleme
G. İşlem günlüğünü bir işaretten geri yükleme
H. TAPE sözdizimini kullanarak geri yükleme
I. FILE ve FILE GROUP sözdizimini kullanarak geri yükleme
J. Bir veritabanı anlık görüntüsüne geri dönme
[!NOT]
Ek örnekler için bkz. Examples of Restore Sequences for Several Restore Scenarios ve ayrıca Restoring Data Backups How-to Topics (SQL Server) altında listelenen nasıl geri yüklenir konuları.
A.Veritabanının tamamını geri yükleme
Aşağıdaki örnek, AdventureWorksBackups mantıksal yedekleme aygıtından tam bir veritabanı yedeğini geri yüklemektedir. Bu aygıtı oluşturmanın bir örneği için, bkz. Yedekleme Aygıtları.
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorks2012Backups;
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorks2012Backups;
[!NOT]
SQL Server, tam veya günlüğü toplu tutulan kurtarma modeli kullanan bir veritabanında, çoğu durumda veritabanı geri yüklemeden önce günlüğün son kısmını yedeklemenizi ister. Daha fazla bilgi için, bkz. Tail günlük yedekleme (SQL Server).
[Örneklerin başına git]
B.Tam ve farklı veritabanı yedeklemelerini geri yükleme
Aşağıdaki örnek, hem tam bir veritabanı yedeğini, hem bir veritabanı değişiklikleri yedeğini içeren Z:\SQLServerBackups\AdventureWorks2012.bak aygıtından her iki yedeği geri yüklemektedir. Geri yüklenecek tam veritabanı yedeği aygıttaki altıncı yedekleme kümesi (FILE = 6); veritabanı değişiklikleri yedeği ise aygıttaki dokuzuncu yedekleme kümesidir (FILE = 9). Değişiklik yedeği kurtarılır kurtarılmaz veritabanı da kurtarılmaktadır.
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 6
NORECOVERY;
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 9
RECOVERY;
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 6
NORECOVERY;
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 9
RECOVERY;
[Örneklerin başına git]
C.Veritabanını RESTART sözdizimini kullanarak geri yükleme
Aşağıdaki örnek, bir sunucu elektrik kesintisi nedeniyle yarıda kesilen bir RESTORE işlemini yeniden başlatmak için RESTART seçeneğini kullanmaktadır.
-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups;
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups WITH RESTART;
-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups;
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups WITH RESTART;
[Örneklerin başına git]
D.Veritabanını geri yükleme ve dosya taşıma
Aşağıdaki örnek, tam bir veritabanını ve işlem günlüğünü geri yüklemekte ve geri yüklenen veritabanını C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data dizinine taşımaktadır.
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups
WITH NORECOVERY,
MOVE 'AdventureWorks2012_Data' TO
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf',
MOVE 'AdventureWorks2012_Log'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';
RESTORE LOG AdventureWorks2012
FROM AdventureWorksBackups
WITH RECOVERY;
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups
WITH NORECOVERY,
MOVE 'AdventureWorks2012_Data' TO
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf',
MOVE 'AdventureWorks2012_Log'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';
RESTORE LOG AdventureWorks2012
FROM AdventureWorksBackups
WITH RECOVERY;
[Örneklerin başına git]
E.Veritabanını BACKUP ve RESTORE kullanarak kopyalama
Aşağıdaki örnek, AdventureWorks2012 veritabanının bir kopyasını yapmak için hem BACKUP hem de RESTORE deyimlerini kullanmaktadır. MOVE deyimi, veri ve günlük dosyasının belirtilen konumlara geri yüklenmesine neden olmaktadır. RESTORE FILELISTONLY deyimi veritabanındaki geri yüklenmekte olan dosyaların sayısını ve adlarını belirlemek için kullanılmaktadır. Veritabanının yeni kopyasına TestDB adı verilmektedir. Daha fazla bilgi için, bkz. restore FILELISTONLY (Transact-sql).
BACKUP DATABASE AdventureWorks2012
TO AdventureWorksBackups ;
RESTORE FILELISTONLY
FROM AdventureWorksBackups ;
RESTORE DATABASE TestDB
FROM AdventureWorksBackups
WITH MOVE 'AdventureWorks2012_Data' TO 'C:\MySQLServer\testdb.mdf',
MOVE 'AdventureWorks2012_Log' TO 'C:\MySQLServer\testdb.ldf';
GO
BACKUP DATABASE AdventureWorks2012
TO AdventureWorksBackups ;
RESTORE FILELISTONLY
FROM AdventureWorksBackups ;
RESTORE DATABASE TestDB
FROM AdventureWorksBackups
WITH MOVE 'AdventureWorks2012_Data' TO 'C:\MySQLServer\testdb.mdf',
MOVE 'AdventureWorks2012_Log' TO 'C:\MySQLServer\testdb.ldf';
GO
[Örneklerin başına git]
F.STOPAT kullanarak geçmişteki bir noktadan geri yükleme
Aşağıdaki örnek, bir veritabanını April 15, 2020 12:00 AM itibariyle olan durumuna geri döndürmekte ve birden çok günlük yedekleri içeren bir geri yükleme işlemini göstermektedir. AdventureWorksBackups yedekleme aygıtında, geri yüklenecek tam veritabanı yedeği aygıttaki üçüncü yedek kümesi (FILE = 3); ilk günlük yedeği dördüncü yedek kümesi (FILE = 4); ikinci günlük yedeği ise beşinci yedek kümesidir (FILE = 5).
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE=3, NORECOVERY;
RESTORE LOG AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE LOG AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks2012 WITH RECOVERY;
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE=3, NORECOVERY;
RESTORE LOG AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE LOG AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks2012 WITH RECOVERY;
[Örneklerin başına git]
G.İşlem günlüğünü bir işaretten geri yükleme
Aşağıdaki örnek, işlem günlüğünü ListPriceUpdate adlı işaretli işlemdeki işaretten geri yüklemektedir.
USE AdventureWorks2012
GO
BEGIN TRANSACTION ListPriceUpdate
WITH MARK 'UPDATE Product list prices';
GO
UPDATE Production.Product
SET ListPrice = ListPrice * 1.10
WHERE ProductNumber LIKE 'BK-%';
GO
COMMIT TRANSACTION ListPriceUpdate;
GO
-- Time passes. Regular database
-- and log backups are taken.
-- An error occurs in the database.
USE master;
GO
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
GO
RESTORE LOG AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE = 4,
RECOVERY,
STOPATMARK = 'ListPriceUpdate';
USE AdventureWorks2012
GO
BEGIN TRANSACTION ListPriceUpdate
WITH MARK 'UPDATE Product list prices';
GO
UPDATE Production.Product
SET ListPrice = ListPrice * 1.10
WHERE ProductNumber LIKE 'BK-%';
GO
COMMIT TRANSACTION ListPriceUpdate;
GO
-- Time passes. Regular database
-- and log backups are taken.
-- An error occurs in the database.
USE master;
GO
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
GO
RESTORE LOG AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE = 4,
RECOVERY,
STOPATMARK = 'ListPriceUpdate';
[Örneklerin başına git]
H.TAPE sözdizimini kullanarak geri yükleme
Aşağıdaki örnek, bir TAPE yedekleme aygıtından tam bir veritabanı yedeğini geri yüklemektedir.
RESTORE DATABASE AdventureWorks2012
FROM TAPE = '\\.\tape0';
RESTORE DATABASE AdventureWorks2012
FROM TAPE = '\\.\tape0';
[Örneklerin başına git]
I.FILE ve FILE GROUP sözdizimini kullanarak geri yükleme
Aşağıdaki örnek, iki dosyası, bir ikincil dosya grubu ve bir işlem günlüğü olan MyDatabase adlı veritabanını geri yüklemektedir. Veritabanı tam kurtarma modelini kullanmaktadır.
Veritabanı yedeği, MyDatabaseBackups adlı bir mantıksal yedekleme aygıtındaki medya kümesinin dokuzuncu yedek kümesidir. Sonra, MyDatabaseBackups adlı aygıttaki daha sonra gelen üç yedekleme kümesi (10, 11 ve 12) WITH NORECOVERY kullanılarak geri yüklenmektedir. Son günlük yedeği geri yüklendikten sonra veritabanı kurtarılmaktadır.
[!NOT]
Kurtarma; tüm günlük yedekleri geri yüklenmeden erken kurtarma yapmanız olasılığını düşürmek için ayrı bir adım olarak gerçekleştirilmektedir.
RESTORE DATABASE deyiminde iki tür FILE seçeneği olduğuna dikkat edin. Yedekleme aygıt adından önce gelen FILE seçenekleri yedek kümesinden geri yüklenecek olan veritabanı dosyalarının mantıksal dosya adlarını belirtmektedir; örneğin, FILE = 'MyDatabase_data_1'. Bu yedekleme kümesi medya kümesindeki ilk veritabanı yedeği değildir; dolayısıyla, medya kümesindeki konumu, WITH yan tümcesinde FILE seçeneği kullanılarak, FILE=9 şeklinde gösterilmektedir.
RESTORE DATABASE MyDatabase
FILE = 'MyDatabase_data_1',
FILE = 'MyDatabase_data_2',
FILEGROUP = 'new_customers'
FROM MyDatabaseBackups
WITH
FILE = 9,
NORECOVERY;
GO
-- Restore the log backups.
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 10,
NORECOVERY;
GO
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 11,
NORECOVERY;
GO
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 12,
NORECOVERY;
GO
--Recover the database:
RESTORE DATABASE MyDatabase WITH RECOVERY;
GO
RESTORE DATABASE MyDatabase
FILE = 'MyDatabase_data_1',
FILE = 'MyDatabase_data_2',
FILEGROUP = 'new_customers'
FROM MyDatabaseBackups
WITH
FILE = 9,
NORECOVERY;
GO
-- Restore the log backups.
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 10,
NORECOVERY;
GO
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 11,
NORECOVERY;
GO
RESTORE LOG MyDatabase
FROM MyDatabaseBackups
WITH FILE = 12,
NORECOVERY;
GO
--Recover the database:
RESTORE DATABASE MyDatabase WITH RECOVERY;
GO
[Örneklerin başına git]
J.Bir veritabanı anlık görüntüsüne geri dönme
Aşağıdaki örnek bir veritabanını bir veritabanı anlık görüntüsüne geri döndürmektedir. Örnek, veritabanında halen yalnızca bir anlık görüntünün var olduğunu varsaymaktadır. Bu veritabanı anlık görüntüsünün nasıl oluşturulacağının bir örneği için, bkz. Veritabanı Snapshot (Transact-sql) oluştur.
[!NOT]
Anlık bir görüntüye geri dönme tüm tam metin kataloglarını bırakır.
USE master;
RESTORE DATABASE AdventureWorks2012 FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO
USE master;
RESTORE DATABASE AdventureWorks2012 FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO
Daha fazla bilgi için, bkz. NIB - Reverting to a Database Snapshot.
[Örneklerin başına git]
Ayrıca bkz.
Başvuru
REWINDONLY (Transact-sql) geri yükleme
restore VERIFYONLY (Transact-sql)
Kavramlar
Yedekleme ve geri yükleme SQL Server veritabanları
Yedekleme ve geri yükleme sistem veritabanları (SQL Server)
Yedekleme ve geri yükleme tam metin kataloglar ve dizinler
Yedekleme ve geri yükleme veritabanları yinelenmiş
Media kümelerini, Media aileleri ve yedekleme kümelerini (SQL Server)