RESTORE İfadeler (Transact-SQL)

Komut kullanılarak BACKUP alınan SQL veritabanı yedeklemelerini geri getirir.

Ürün seçin

Aşağıdaki satırda, ilgilendiğiniz ürün adını seçin ve yalnızca bu ürünün bilgileri görüntülenir.

Söz dizimi kuralları hakkında daha fazla bilgi için bkz. Transact-SQL söz dizimi kuralları.

* SQL Server *  

 

SQL Server

Bu komut aşağıdaki geri yükleme senaryolarını gerçekleştirmenizi sağlar:

  • Tam veritabanı yedeğinden veritabanının tamamını geri yükleme (tam geri yükleme).
  • Veritabanının bir bölümünü geri yükleme (kısmi geri yükleme).
  • Belirli dosyaları veya dosya gruplarını bir veritabanına (dosya geri yükleme) geri yükleyin.
  • Belirli sayfaları veritabanına geri yükleme (sayfa geri yükleme).
  • İşlem günlüğünü veritabanına geri yükleme (işlem günlüğü geri yükleme).
  • Veritabanını, veritabanı anlık görüntüsü tarafından yakalanan belirli bir noktaya geri döndürme.

Diğer kaynaklar

Sözdizimi

  • Argümanların tanımları hakkında daha fazla bilgi için Arguments bölümüne bakınızRESTORE.
--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
     | URL
   } = { '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 | CREDENTIAL

--Backup Set Options
 | FILE = { backup_set_file_number | @backup_set_file_number }
 | PASSWORD = { password | @password_variable }
 | [ METADATA_ONLY | SNAPSHOT ] [ DBNAME = { database_name | @database_name_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']
   }

Arguments

Argümanların açıklamaları için bkz.RESTORE Argümanlar.

Geri Yükleme Senaryoları Hakkında

SQL Server çeşitli geri yükleme senaryolarını destekler:

Çevrimiçi geri yüklemenin desteklendiği durumlarda, veritabanı çevrimiçiyse, dosya geri yüklemeleri ve sayfa geri yüklemeleri otomatik olarak çevrimiçi geri yüklemeler ve parçalı geri yüklemenin ilk aşamasından sonra ikincil dosya grubunun geri yüklemeleridir.

Uyarı

Çevrimiçi geri yüklemeler ertelenen işlemleri içerebilir.

Daha fazla bilgi için bkz . Çevrimiçi Geri Yükleme.

Opsiyonlarla RESTORE İlgilenecek Ek Noktalar

Üretimi RESTORE Durdurulmuş Anahtar Kelimeler

AŞAĞıDAKI anahtar sözcükler SQL Server 2008'de (10.0.x) kullanımdan kaldırılmıştır:

Sonlandırılan anahtar sözcük Şununla değiştirildi:... Değiştirme anahtar sözcüğü örneği
YÜK RESTORE RESTORE DATABASE
İŞLEM KAYIT RESTORE LOG
DBO_ONLY RESTRICTED_USER RESTORE DATABASE ... WITH RESTRICTED_USER

RESTORE GÜNLÜK

RESTORE LOG, rollforward sırasında dosyaların oluşturulmasını sağlayan bir dosya listesi içerebilir. Bu, günlük yedeklemesi veritabanına bir dosya eklendiğinde yazılan günlük kayıtlarını içerdiğinde kullanılır.

Uyarı

Tam veya toplu günlüğe kaydedilen kurtarma modelini kullanan bir veritabanı için, çoğu durumda veritabanını geri yüklemeden önce günlüğün kuyruğunu yedeklemeniz gerekir. Veritabanını, günlüğün kuyruğunu yedeklemeden geri yüklemek, hata ile sonuçlanır; tabii eğer ifade RESTOREDATABASE WITH REPLACE veya WITH STOPAT maddesini içermiyorsa; bu madde veri yedeklemesinin bitmesinden sonra gerçekleşen bir zaman veya işlemi belirtmek zorundadır. Kuyruk günlüğü yedeklemeleri hakkında daha fazla bilgi için bkz. yedeklemelerTail-Log.

KURTARMA ve NORECOVERY Karşılaştırması

Geri alma işlemi RESTORE [ RECOVERY | NORECOVERY ] seçenekleri:

  • NORECOVERY geri alma işleminin gerçekleşmediğini belirtir. Bu, rollforward öğesinin dizideki bir sonraki deyimle devam etmesini sağlar.

    Bu durumda, geri yükleme sırası diğer yedeklemeleri geri yükleyebilir ve ileri taşıyabilir.

  • RECOVERY (varsayılan), geçerli yedekleme için rollforward tamamlandıktan sonra geri alma işleminin gerçekleştirilmesi gerektiğini gösterir. Başka yedekleme geri yüklenemez. Gerekli tüm yedeklemeleri geri yükledikten sonra bu seçeneği belirleyin.

    Veritabanını kurtarmak için geri yüklenen tüm veri kümesinin ( rollforward kümesi) veritabanıyla tutarlı olması gerekir. Rollforward kümesi veritabanıyla tutarlı olacak kadar ileriye doğru alınmadıysa ve RECOVERY belirtilirse, Veritabanı Altyapısı bir hata döndürür. Kurtarma işlemi hakkında daha fazla bilgi için bkz. Geri Yükleme ve Kurtarma'ya Genel Bakış (SQL Server).

Uyumluluk desteği

SQL Server'ın mastermodel önceki bir sürümü kullanılarak oluşturulan ve msdb yedeklemeleri SQL Server tarafından geri yüklenemez.

Uyarı

Sql Server yedeklemesi, yedeklemenin oluşturulduğu sürümden daha eski bir SQL Server sürümüne geri yüklenemez.

SQL Server'ın her sürümü önceki sürümlerden farklı bir varsayılan yol kullanır. Bu nedenle, önceki sürüm yedeklemeleri için varsayılan konumda oluşturulmuş bir veritabanını geri yüklemek için MOVE seçeneğini kullanmanız gerekir. Yeni varsayılan yol hakkında bilgi için bkz. SQL Server'ın Varsayılan ve Adlandırılmış Örnekleri için Dosya Konumları.

Önceki bir sürüm veritabanını SQL Server'a geri yükledikten sonra veritabanı otomatik olarak yükseltilir. Genellikle veritabanı hemen kullanılabilir duruma gelir. Ancak, bir SQL Server 2005 (9.x) veritabanında tam metin dizinleri varsa, yükseltme işlemi upgrade_option sunucu özelliğinin ayarına bağlı olarak bunları içeri aktarır, sıfırlar veya yeniden oluşturur. Yükseltme seçeneği içeri aktarılacak (upgrade_option = 2) veya yeniden derlenecek (upgrade_option = 0) olarak ayarlandıysa, yükseltme sırasında tam metin dizinleri kullanılamaz. Dizine alınan veri miktarına bağlı olarak içeri aktarma işlemi birkaç saat sürebilir ve yeniden derleme on kat daha uzun sürebilir. Ayrıca, yükseltme seçeneği içeri aktarma olarak ayarlandığında, tam metin kataloğu kullanılamıyorsa ilişkili tam metin dizinlerinin yeniden derlendiğini unutmayın. upgrade_option sunucusu özelliğinin ayarını değiştirmek için sp_fulltext_service kullanın.

Bir veritabanı sql server'ın yeni bir örneğine ilk kez eklendiğinde veya geri yüklendiğinde, veritabanı ana anahtarının bir kopyası (hizmet ana anahtarı tarafından şifrelenir) henüz sunucuda depolanmaz. Veritabanı ana anahtarının (DMK) şifresini çözmek için OPEN MASTER KEY deyimini kullanmanız gerekir. DMK şifresi çözüldükten sonra, gelecekte REGENERATE ifadesini kullanarak sunucuya DMK'nın bir kopyasını servis ana anahtarı (SMK) ile şifrelenmiş şekilde sağlama seçeneğiniz ALTER MASTER KEY vardır. Bir veritabanı önceki bir sürümden yükseltildiğinde, DMK daha yeni AES algoritmasını kullanacak şekilde yeniden oluşturulmalıdır. DMK'nın yenilenmesi hakkında daha fazla bilgi için bkz.ALTER MASTER KEY AES'ye yükseltmek için DMK anahtarını yeniden oluşturmak için gereken süre, DMK tarafından korunan nesne sayısına bağlıdır. AES'ye yükseltmek için DMK anahtarını yeniden oluşturmak yalnızca bir kez gereklidir ve anahtar döndürme stratejisinin bir parçası olarak gelecekteki yenilemeleri etkilemez.

Açıklamalar

Çevrimdışı geri yükleme sırasında, belirtilen veritabanı kullanılıyorsa, RESTORE kullanıcılar kısa bir gecikmeyle kapatılır. Birincil olmayan bir dosya grubunun çevrimiçi geri yüklemesi için, geri yüklenen dosya grubunun çevrimdışı duruma alınması dışında veritabanı kullanımda kalabilir. Belirtilen veritabanındaki tüm veriler geri yüklenen veriyle değiştirilir.

Farklı işlemci türleri arasında bile platformlar arası geri yükleme işlemleri, veritabanının harmanlaması işletim sistemi tarafından desteklendiği sürece gerçekleştirilebilir.

RESTORE bir hata sonrası yeniden başlatılabilir. Ayrıca, hatalara rağmen devam etmenizi söyleyebilirsiniz RESTORE ve mümkün olduğunca çok veriyi geri kazanır (seçeneğe CONTINUE_AFTER_ERROR bakınız).

RESTORE açık veya örtük bir işlemde izin verilmez.

Hasarlı master bir veritabanını geri yükleme işlemi özel bir yordam kullanılarak gerçekleştirilir. Daha fazla bilgi için bkz. Sistem Veritabanlarını Yedekleme ve Geri Yükleme.

Veritabanını geri yüklemek, geri yüklenen veritabanı için plan önbelleğini temizler. Plan önbelleğinin temizlenmesi, sonraki tüm yürütme planlarının yeniden derlenmesine neden olur ve sorgu performansında ani, geçici bir düşüşe neden olabilir.

Kullanılabilirlik veritabanını geri yüklemek için önce veritabanını SQL Server örneğine geri yükleyin ve sonra veritabanını kullanılabilirlik grubuna ekleyin.

Yedekleme sıkıştırma ve sıkıştırmayı açma için tümleşik hızlandırma ve boşaltma

SQL Server 2022 (16.x), işlem için bir sıkıştırma algoritması tanımlayan öğesini tanıtır ALGORITHM. Daha fazla bilgi için bkz . Yedekleme SıKıŞTıRMA.

Daha fazla bilgi için bkz . Geri yükleme işlemleri

URL'den geri yükleme

URL, Microsoft Azure Blob Depolama veya S3 uyumlu nesne depolama için konumu ve dosya adını belirtmek için kullanılan biçimdir. Azure Blob Depolama bir hizmet olsa da, uygulama tüm cihazlar için tutarlı ve sorunsuz bir geri yükleme deneyimi sağlamak için diske ve banda benzer.

Birlikte çalışabilirlik

Veritabanı ayarları ve geri yükleme

Geri yükleme sırasında, kullanılabilir veritabanı seçeneklerinin çoğu ALTER DATABASE yedekleme bittiğinde geçerli olan değerlere sıfırlanır.

Bununla birlikte, WITH RESTRICTED_USER seçeneğinin kullanılması, kullanıcı erişimi seçeneği ayarı için bu davranışı geçersiz kılar. Bu ayar her zaman bir RESTORE ifadeden sonra ayarlanır ve bu ifade WITH RESTRICTED_USER seçeneğini içerir.

Şifrelenmiş 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 olmalıdır. Sertifika veya asimetrik anahtar olmadan veritabanı geri yüklenemez. Sonuç olarak, veritabanı şifreleme anahtarını şifrelemek için kullanılan sertifika, yedekleme gerektiği sürece saklanmalıdır. Daha fazla bilgi için bkz. SQL Server Sertifikaları ve Asimetrik Anahtarlar.

Vardecimal depolama için etkinleştirilen bir veritabanını geri yükleme

Yedekleme ve geri yükleme , değişken depolama biçimiyle düzgün çalışır. Değişken depolama biçimi hakkında daha fazla bilgi için bkz. sp_db_vardecimal_storage_format.

Tam metin verilerini geri yükleme

Tam metin verileri, tam geri yükleme sırasında diğer veritabanı verileriyle birlikte geri yüklenir. Normal RESTORE DATABASE database_name FROM backup_device söz dizimi kullanılarak, tam metin dosyaları veritabanı dosyası geri yükleme işleminin bir parçası olarak geri yüklenir.

Bu RESTORE ifade ayrıca alternatif konumlara geri yükleme, diferansiyel geri yükleme, dosya ve dosya grubu geri yükleme ve tam metin verilerin diferansiyel dosya ve dosya grubu geri yüklemeleri için de kullanılabilir. Ayrıca, RESTORE yalnızca tam metin dosyaları ve veritabanı verilerini geri getirebilir.

Uyarı

SQL Server 2005'ten (9.x) içeri aktarılan tam metin katalogları hala veritabanı dosyaları olarak kabul edilir. Bunlar için, tam metin kataloglarını yedeklemeye yönelik SQL Server 2005 (9.x) yordamı, yedekleme işlemi sırasında duraklatma ve sürdürmenin artık gerekli olmaması dışında geçerli olmaya devam eder. Daha fazla bilgi için bkz. Full-Text Kataloglarını Yedekleme ve Geri Yükleme.

SQL Server 2022'ye ve otomatik bırakma özelliğine geri yükleme

Veritabanını önceki bir sürümden SQL Server 2022'ye (16.x) geri yüklerken, istatistik otomatik bırakma özelliği için uygun meta verileri ayarlayarak veritabanında yürütülmesi sp_updatestats önerilir. Daha fazla bilgi için bkz. İstatistik otomatik bırakma seçeneği.

SQL Server Büyük Veri Kümeleri

Sunucu (örnek düzeyi) ayarlarını yapılandırma veya kullanılabilirlik grubuna el ile veritabanı ekleme dahil olmak üzere bazı işlemler IÇIN SQL Server örneğine bağlantı gerekir. Kullanılabilirlik grubuna ait bir veritabanındaki , sp_configureveya herhangi bir DDL komutu gibi RESTORE DATABASEişlemler SQL Server örneğine bağlantı gerektirir. Varsayılan olarak, büyük veri kümesi örneğe bağlantı sağlayan bir uç nokta içermez. Bu uç noktayı el ile kullanıma sunmanız gerekir.

Yönergeler için bkz. Birincil çoğaltmadaki veritabanlarına bağlanma.

Meta veriler

SQL Server, her sunucu örneği için yedekleme ve geri yükleme etkinliğini izleyen yedekleme ve geri yükleme geçmişi tablolarını içerir. Geri yükleme gerçekleştirildiğinde, yedekleme geçmişi tabloları da değiştirilir. Bu tablolar hakkında bilgi için bkz. Yedekleme Geçmişi ve Üst Bilgi.

DEĞİşTİr seçeneği etkisi

DEĞİşTİr nadiren ve ancak dikkatli bir değerlendirmeden sonra kullanılmalıdır. Geri yükleme normalde farklı bir veritabanına sahip bir veritabanının üzerine yanlışlıkla yazılmasını engeller. Bir RESTORE deyimde belirtilen veritabanı geçerli sunucuda zaten varsa ve belirtilen veritabanı ailesi GUID'i yedekleme kümesine kaydedilen veritabanı ailesi GUID'sinden farklıysa, veritabanı geri yüklenmez. Bu önemli bir güvenlik önlemidir.

DEĞİşTİr seçeneği, geri yüklemenin normal olarak gerçekleştirdiği birkaç önemli güvenlik denetimini geçersiz kılar. Geçersiz kılınan denetimler aşağıdaki gibidir:

  • Başka bir veritabanının yedeklenmesiyle mevcut bir veritabanını geri yükleme.

    DEĞİşTİr seçeneğiyle, belirtilen veritabanı adı yedekleme kümesine kaydedilen veritabanı adından farklı olsa bile geri yükleme, yedekleme kümesindeki veritabanıyla var olan bir veritabanının üzerine yazmanıza olanak tanır. Bu, veritabanının yanlışlıkla farklı bir veritabanı tarafından üzerine yazılmasıyla sonuçlanabilir.

  • Kuyruk günlüğü yedeklemesinin alınmadığı ve STOPAT seçeneğin kullanılmadığı tam veya toplu günlüğe kaydedilen kurtarma modelini kullanarak bir veritabanı üzerinden geri yükleme.

    DEĞİşTİr seçeneğiyle, en son yazılan günlük yedeklenmediğinden kaydedilmiş çalışmayı kaybedebilirsiniz.

  • Varolan dosyaların üzerine yazma.

    Örneğin, bir hata, .xls dosyaları gibi veya çevrimiçi olmayan başka bir veritabanı tarafından kullanılan yanlış türde dosyaların üzerine yazılmasını sağlayabilir. Geri yüklenen veritabanı tamamlanmış olsa da mevcut dosyaların üzerine yazılırsa rastgele veri kaybı mümkündür.

Geri yüklemeyi yineleme

Geri yüklemenin etkilerini geri almak mümkün değildir; ancak, dosya başına baştan başlayarak veri kopyalama ve rollforward etkilerini olumsuzlayabilirsiniz. Baştan başlamak için, istediğiniz dosyayı geri yükleyin ve rollforward işlemini yeniden gerçekleştirin. Örneğin, yanlışlıkla çok fazla günlük yedeğini geri yüklediyseniz ve hedeflenen durdurma noktanızın üzerine çıktıysanız, diziyi yeniden başlatmanız gerekir.

Etkilenen dosyaların tüm içeriği geri yüklenerek geri yükleme sırası durdurulabilir ve yeniden başlatılabilir.

Veritabanını veritabanı anlık görüntüsüne döndürme

Veritabanı geri döndürme işlemi (DATABASE_SNAPSHOT seçeneği kullanılarak belirtilir), tam kaynak veritabanını bir veritabanı anlık görüntüsü zamanına döndürerek, yani belirtilen veritabanı anlık görüntüsünde tutulan belirli bir noktadan verilerle kaynak veritabanının üzerine yazarak zamanda geri alır. Yalnızca geri almakta olduğunuz anlık görüntü mevcut olabilir. Geri döndürme işlemi daha sonra günlüğü yeniden oluşturur (bu nedenle, geri döndürülen bir veritabanını daha sonra kullanıcı hatası noktasına iletemezsiniz).

Veri kaybı, anlık görüntünün oluşturulmasından bu yana veritabanı güncelleştirmeleri ile sınırlandırılır. Geri alınan veritabanının meta verileri, anlık görüntü oluşturma sırasındaki meta veriyle aynıdır. Ancak anlık görüntüye geri dönmek tüm tam metin kataloglarını bırakır.

Veritabanı anlık görüntüsünden geri döndürme, medya kurtarma için tasarlanmamıştır. Normal yedekleme kümesinden farklı olarak, veritabanı anlık görüntüsü veritabanı dosyalarının tamamlanmamış bir kopyasıdır. Veritabanı veya veritabanı anlık görüntüsü bozuksa, bir anlık görüntüden geri dönmek mümkün olmayabilir. Ayrıca, mümkün olduğunda bile, bozulma durumunda geri dönmenin sorunu düzeltme olasılığı düşüktür.

Geri alma kısıtlamaları

Geri döndürme aşağıdaki koşullar altında desteklenmez:

  • Kaynak veritabanı tüm salt okunur veya sıkıştırılmış dosya gruplarını içerir.
  • Anlık görüntü oluşturulduğunda çevrimiçi olan tüm dosyalar çevrimdışıdır.
  • Şu anda veritabanının birden fazla anlık görüntüsü var.

Daha fazla bilgi için bkz. Veritabanını Veritabanı Anlık Görüntüsüne Geri Döndürme.

Security

Yedekleme işlemi isteğe bağlı olarak bir medya kümesi, yedekleme kümesi veya her ikisi için parola belirtebilir. Bir medya setinde veya yedek setinde bir şifre tanımlandığında, ifadede doğru şifre veya şifreleri RESTORE belirtmelisiniz. Bu parolalar, SQL Server araçlarını kullanarak yetkisiz geri yükleme işlemlerini ve yedekleme kümelerinin medyaya yetkisiz eklenmesini önler. Ancak, şifre korumalı medya, ifadenin FORMAT seçeneğiyle BACKUP üzerine yazılabilir.

Önemli

Bu parola tarafından sağlanan koruma zayıftır. Yetkili veya yetkisiz kullanıcıların SQL Server araçlarını kullanarak yanlış geri yüklemeyi önlemeye yöneliktir. Yedekleme verilerinin başka yollarla okunmasını veya parolanın değiştirilmesini engellemez. Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Yedeklemeleri korumak için en iyi yöntem, yedekleme bantlarını güvenli bir konumda depolamak veya yeterli erişim denetim listeleri (ACL' ler) tarafından korunan disk dosyalarına yedeklemektir. ACL'ler, yedeklemelerin oluşturulduğu dizin kökünde ayarlanmalıdır.

Permissions

Geri yüklenmekte olan veritabanı mevcut değilse, kullanıcının CREATE DATABASE komutunu çalıştırabilmesi için RESTORE izinlerine sahip olması gerekir. Veritabanı varsa, RESTORE izinler varsayılan olarak sabit sysadmindbcreator sunucu rollerinin üyelerine ve veritabanının sahibine (dbo) atanır (bu FROM DATABASE_SNAPSHOT seçenek için veritabanı her zaman vardır).

RESTORE izinler, üyelik bilgilerinin sunucu tarafından her zaman kullanılabilir olduğu rollere verilir. Sabit veritabanı rolü üyeliği yalnızca veritabanı erişilebilir ve zarar görmediğinde kontrol edilebildiğinden, ki bu her zaman yürütüldüğünde RESTORE böyle değildir; sabit veritabanı rolünün db_owner üyelerinin izni yoktur RESTORE .

Örnekler

Tüm örneklerde tam veritabanı yedeklemesinin gerçekleştirildiği varsayılır.

Örnekler RESTORE şunlardır:

Uyarı

Ek örnekler için Geri Yükleme ve Kurtarma'ya Genel Bakış bölümünde listelenen geri yükleme nasıl yapılır konularına bakın.

A. Tam veritabanını geri yükleme

Aşağıdaki örnek, mantıksal yedekleme cihazından tam veritabanı yedeklemesini AdventureWorksBackups geri yükler. Bu cihazı oluşturma örneği için bkz . Yedekleme Cihazları.

RESTORE DATABASE AdventureWorks2022
  FROM AdventureWorks2022Backups;

Uyarı

Tam veya toplu günlüğe kaydedilen kurtarma modelini kullanan bir veritabanı için, SQL Server çoğu durumda veritabanını geri yüklemeden önce günlüğün kuyruğunu yedeklemenizi gerektirir. Daha fazla bilgi için bkz .Tail-Log Yedeklemeler.

[Örneklerin başı]

B. Tam ve değişiklik veritabanı yedeklemelerini geri yükleme

Aşağıdaki örnek, tam veritabanı yedeklemesini ve ardından yedekleme cihazından her iki yedeklemeyi Z:\SQLServerBackups\AdventureWorks2022.bak de içeren değişiklik yedeğini geri yükler. Geri yüklenecek tam veritabanı yedeklemesi, cihazdaki altıncı yedekleme kümesidir ()FILE = 6 ve değişiklik veritabanı yedeklemesi ise cihazdaki (FILE = 9) dokuzuncu yedeklemedir. Değişiklik yedeği kurtarılır kurtarılır kurtarz veritabanı kurtarılır.

RESTORE DATABASE AdventureWorks2022
    FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2022.bak'
    WITH FILE = 6,
      NORECOVERY;
RESTORE DATABASE AdventureWorks2022
    FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2022.bak'
    WITH FILE = 9,
      RECOVERY;

[Örneklerin başı]

C. RESTART söz dizimlerini kullanarak veritabanını geri yükleme

Aşağıdaki örnekte, sunucu güç kesintisi RESTART nedeniyle kesilen bir RESTORE işlemi yeniden başlatma seçeneği kullanılır.

-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE AdventureWorks2022
    FROM AdventureWorksBackups;
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE AdventureWorks2022
    FROM AdventureWorksBackups WITH RESTART;

[Örneklerin başı]

D. Veritabanını geri yükleme ve dosyaları taşıma

Aşağıdaki örnek tam veritabanını ve işlem günlüğünü geri yükler ve geri yüklenen veritabanını dizine C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data taşır.

RESTORE DATABASE AdventureWorks2022
    FROM AdventureWorksBackups
    WITH NORECOVERY,
      MOVE 'AdventureWorks2022_Data' TO
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf',
      MOVE 'AdventureWorks2022_Log'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';
RESTORE LOG AdventureWorks2022
    FROM AdventureWorksBackups
    WITH RECOVERY;

[Örneklerin başı]

E. Veritabanını ve BACKUP kullanarak kopyalayın RESTORE

Aşağıdaki örnek veritabanının BACKUP bir kopyasını RESTORE oluşturmak için hem ve AdventureWorks2025 deyimlerini kullanır. deyimi MOVE , verilerin ve günlük dosyasının belirtilen konumlara geri yüklenmesine neden olur. deyimi RESTORE FILELISTONLY , geri yüklenen veritabanındaki dosyaların sayısını ve adlarını belirlemek için kullanılır. Veritabanının yeni kopyası olarak adlandırılır TestDB. Daha fazla bilgi için bkz. RESTORE FILELISTONLY.

BACKUP DATABASE AdventureWorks2022
    TO AdventureWorksBackups ;

RESTORE FILELISTONLY
    FROM AdventureWorksBackups ;

RESTORE DATABASE TestDB
    FROM AdventureWorksBackups
    WITH MOVE 'AdventureWorks2022_Data' TO 'C:\MySQLServer\testdb.mdf',
    MOVE 'AdventureWorks2022_Log' TO 'C:\MySQLServer\testdb.ldf';
GO

[Örneklerin başı]

F. STOPAT kullanarak belirli bir zamana geri yükleme

Aşağıdaki örnek, şu aşamadan itibaren veritabanını durumuna 12:00 AMApril 15, 2020 geri yükler ve birden çok günlük yedeklemesi içeren bir geri yükleme işlemi gösterir. yedekleme cihazında, AdventureWorksBackupsgeri yüklenecek tam veritabanı yedeklemesi cihazdaki üçüncü yedekleme kümesidir ()FILE = 3 ve ilk günlük yedeklemesi dördüncü yedekleme kümesidir ()FILE = 4 ve ikinci günlük yedeklemesi beşinci yedekleme kümesidir (FILE = 5).

RESTORE DATABASE AdventureWorks2022
    FROM AdventureWorksBackups
    WITH FILE = 3, NORECOVERY;

RESTORE LOG AdventureWorks2022
    FROM AdventureWorksBackups
    WITH FILE = 4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

RESTORE LOG AdventureWorks2022
    FROM AdventureWorksBackups
    WITH FILE = 5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks2022 WITH RECOVERY;

[Örneklerin başı]

G. İşlem günlüğünü bir işarete geri yükleme

Aşağıdaki örnek, işlem günlüğünü adlı ListPriceUpdateişaretli işlemdeki işarete geri yükler.

USE AdventureWorks2022;
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 AdventureWorks2022
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
GO

RESTORE LOG AdventureWorks2022
  FROM AdventureWorksBackups
    WITH FILE = 4,
    RECOVERY,
    STOPATMARK = 'UPDATE Product list prices';

[Örneklerin başı]

H. TAPE söz dizimlerini kullanarak geri yükleme

Aşağıdaki örnek, bir yedekleme cihazından tam veritabanı yedeklemesini TAPE geri yükler.

RESTORE DATABASE AdventureWorks2022
    FROM TAPE = '\\.\tape0';

[Örneklerin başı]

I. FILE ve FILEGROUP söz dizimlerini kullanarak geri yükleme

Aşağıdaki örnek, biri ikincil dosya grubu ve biri işlem günlüğü olmak üzere iki dosyası olan adlı MyDatabase bir veritabanını geri yükler. Veritabanı tam kurtarma modelini kullanır.

Veritabanı yedeklemesi, adlı MyDatabaseBackupsmantıksal yedekleme cihazında medya kümesindeki dokuzuncu yedekleme kümesidir. Ardından, cihazdaki sonraki üç yedekleme kümesinde (10, 11ve 12) MyDatabaseBackups bulunan üç günlük yedeği kullanılarak WITH NORECOVERYgeri yüklenir. ile son günlük yedeklemesi geri yüklendikten NORECOVERYsonra veritabanı kurtarılır.

Uyarı

Kurtarma, tüm günlük yedeklemeleri geri yüklenmeden önce çok erken kurtarma olasılığını azaltmak için ayrı bir adım olarak gerçekleştirilir. Kurtarma işlemi hakkında daha fazla bilgi için bkz. Geri Yükleme ve Kurtarma'ya Genel Bakış (SQL Server).

RESTORE DATABASEiçinde iki tür FILE seçenek olduğuna dikkat edin. FILE Yedekleme cihazı adından önceki seçenekler, yedekleme kümesinden geri yüklenecek veritabanı dosyalarının mantıksal dosya adlarını belirtir; örneğin, FILE = 'MyDatabase_data_1'. Bu yedekleme kümesi, medya kümesindeki ilk veritabanı yedeklemesi değildir; bu nedenle, medya kümesindeki konumu yan tümcesindeki FILEWITHseçeneği kullanılarak FILE = 9 belirtilir.

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şı]

J. Veritabanı anlık görüntüsünden geri dönme

Aşağıdaki örnek, veritabanını bir veritabanı anlık görüntüsüne döndürür. Örnekte, veritabanında şu anda yalnızca bir anlık görüntü olduğu varsayılır. Bu veritabanı anlık görüntüsünün nasıl oluşturulacağını gösteren bir örnek için bkz. Veritabanı Anlık Görüntüsü Oluşturma.

Uyarı

Anlık görüntüye geri dönülürken tüm tam metin katalogları bırakılır.

USE master;
RESTORE DATABASE AdventureWorks2022 FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO

Daha fazla bilgi için bkz. Veritabanını Veritabanı Anlık Görüntüsüne Geri Döndürme.

[Örneklerin başı]

K. Microsoft Azure Blob depolamadan geri yükleme

Aşağıdaki üç örnek, Microsoft Azure depolama hizmetinin kullanımını içerir. Depolama Hesabı adı mystorageaccount. Veri dosyalarının kapsayıcısı olarak adlandırılır myfirstcontainer. Yedekleme dosyalarının kapsayıcısı olarak adlandırılır mysecondcontainer. Her kapsayıcı için okuma, yazma, silme ve listeleme haklarıyla bir depolanmış erişim ilkesi oluşturulmuştur. SQL Server kimlik bilgileri, Saklı Erişim İlkeleri ile ilişkili Paylaşılan Erişim İmzaları kullanılarak oluşturulmuştur. MICROSOFT Azure Blob Depolama ile SQL Server yedekleme ve geri yükleme özelliklerine özgü bilgiler için bkz. Microsoft Azure Blob Depolama ile SQL Server Yedekleme ve Geri Yükleme.

K1. Microsoft Azure depolama hizmetinden tam veritabanı yedeklemesini geri yükleme
konumunda mysecondcontainerbulunan tam veritabanı yedeklemesi Sales öğesine myfirstcontainergeri yüklenir. Sales şu anda sunucuda yok.

RESTORE DATABASE Sales
  FROM URL = 'https://mystorageaccount.blob.core.windows.net/mysecondcontainer/Sales.bak'
  WITH MOVE 'Sales_Data1' to 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/Sales_Data1.mdf',
  MOVE 'Sales_log' to 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/Sales_log.ldf',
  STATS = 10;

K2. Microsoft Azure depolama hizmetinden yerel depolamaya tam veritabanı yedeklemesini geri yükleme konumunda mysecondcontainerbulunan tam veritabanı yedeklemesi Sales yerel depolama alanına geri yüklenir. Sales şu anda sunucuda yok.

RESTORE DATABASE Sales
  FROM URL = 'https://mystorageaccount.blob.core.windows.net/mysecondcontainer/Sales.bak'
  WITH MOVE 'Sales_Data1' to 'H:\DATA\Sales_Data1.mdf',
  MOVE 'Sales_log' to 'O:\LOG\Sales_log.ldf',
  STATS = 10;

K3. Yerel depolamadan Microsoft Azure depolama hizmetine tam veritabanı yedeklemesini geri yükleme

RESTORE DATABASE Sales
  FROM DISK = 'E:\BAK\Sales.bak'
  WITH MOVE 'Sales_Data1' to 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/Sales_Data1.mdf',
  MOVE 'Sales_log' to 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/Sales_log.ldf',
  STATS = 10;

L. Anlık görüntü yedeklemesinden geri yükleme

SQL Server 2022(16.x) ile kullanıma sunulmuştur. Daha fazla bilgi için bkz. Transact-SQL anlık görüntü yedeklemesi oluşturma.

L1. Tam yedeklemeyi geri yükleme

RESTORE DATABASE Sales
  FROM DISK = 'D:\MSSQL\Backup\SalesSnapshotFull.bkm'
  WITH METADATA_ONLY;

L2. Yedeklemeyi geri yükleme ve işlem günlüğü uygulama

RESTORE DATABASE Sales
  FROM DISK = 'D:\MSSQL\Backup\SalesSnapshotFull.bkm'
  WITH METADATA_ONLY,
  NORECOVERY;

RESTORE LOG Sales
  FROM DISK = 'D:\MSSQL\Backup\SalesLog.trn'
  WITH RECOVERY;

L3. Anlık görüntü yedeklemesinden geri yükleme ve veritabanı ile günlük dosyalarını yeni bir konuma yerleştirme

RESTORE DATABASE Sales
FROM DISK = 'D:\MSSQL\Backup\SalesSnapshotFull.bkm'
WITH METADATA_ONLY,
    MOVE Sales_Data TO 'D:\MSSQL\Sales.mdf',
    MOVE Sales_Log TO 'D:\MSSQL\Sales_log.ldf';

[Örneklerin başı]

* SQL Yönetilen Örneği *

 

Azure SQL Yönetilen Varlık

Bu komut, bir veritabanının tamamını Azure Blob Depolama hesabından tam veritabanı yedeklemesinden (tam geri yükleme) geri yüklemenize olanak tanır.

Desteklenen diğer RESTORE komutlar için bkz:

Önemli

SQL Yönetilen Örneği otomatik yedeklemelerinden geri yüklemek için bkz. SQL Veritabanı Geri Yükleme.

Sözdizimi

--To Restore an Entire Database from a Full database backup (a Complete Restore):
RESTORE DATABASE { database_name | @database_name_var }
 FROM URL = { 'physical_device_name' | @physical_device_name_var } [ ,...n ]
[;]

Arguments

DATABASE

Hedef veritabanını belirtir.

URL'DEN

Geri yükleme işlemi için kullanılacak URL'lere yerleştirilen bir veya daha fazla yedekleme cihazını belirtir. URL biçimi, Microsoft Azure depolama hizmetinden yedeklemeleri geri yüklemek için kullanılır.

Önemli

URL'den geri yükleme yaparken birden çok cihazdan geri yüklemek için Paylaşılan Erişim İmzası (SAS) belirteçlerini kullanmanız gerekir. Paylaşılan Erişim İmzası oluşturma örnekleri için bkz. SQL Server'ı URL'ye Yedekleme ve PowerShell ile Azure Depolama'da Paylaşılan Erişim İmzası (SAS) belirteçleriyle SQL Kimlik Bilgilerinin oluşturulmasını basitleştirme.

n Virgülle ayrılmış bir listede en fazla 64 yedekleme cihazının belirtilebileceğini gösteren bir yer tutucudur.

Açıklamalar

Önkoşul olarak, blob depolama hesabı URL'si ile eşleşen ada ve gizli dizi olarak yerleştirilmiş Paylaşılan Erişim İmzası'na sahip bir kimlik bilgisi oluşturmanız gerekir. RESTORE komut, yedek cihazını okumak için gereken bilgileri bulmak için blob depolama URL'sini kullanarak kimlik bilgilerini arar.

RESTORE İşlem asenkron - istemci bağlantısı kesilse bile geri yükleme devam eder. Bağlantınız bırakılırsa, geri yükleme işleminin durumunu (create ve DROP veritabanının yanı sıra) sys.dm_operation_status görünümünü de de kontrol edebilirsiniz.

Aşağıdaki veritabanı seçenekleri ayarlanır/geçersiz kılınabilir ve daha sonra değiştirilemez:

  • NEW_BROKER (aracı .bak dosyasında etkinleştirilmediyse)
  • ENABLE_BROKER (aracı .bak dosyasında etkinleştirilmemişse)
  • AUTO_CLOSE=KAPALI (.bak dosyasındaki bir veritabanında AUTO_CLOSE=ON varsa)
  • KURTARMA DOLU (.bak dosyasındaki bir veritabanında SIMPLE veya BULK_LOGGED kurtarma modeli varsa)
  • Bellek için iyileştirilmiş dosya grubu eklenir ve kaynak .bak dosyasında değilse XTP olarak adlandırılır. Mevcut bellek için iyileştirilmiş dosya grupları XTP olarak yeniden adlandırılır
  • SINGLE_USER ve RESTRICTED_USER seçenekleri MULTI_USER dönüştürülür

Sınırlamalar - SQL Yönetilen Örneği

Bu sınırlamalar geçerlidir:

  • . Birden çok yedekleme kümesi içeren BAK dosyaları geri yüklenemez.
  • . Birden çok günlük dosyası içeren BAK dosyaları geri yüklenemez.
  • .bak FILESTREAM verileri içeriyorsa geri yükleme başarısız olur.
  • Etkin Bellek içi nesneleri olan veritabanlarını içeren yedeklemeler Genel Amaçlı performans katmanına geri yüklenemez.
  • Salt okunur modda veritabanlarını içeren yedeklemeler şu anda geri yüklenemez.

Daha fazla bilgi için bkz. Azure SQL Yönetilen Örneği

Şifrelenmiş 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 olmalıdır. Sertifika veya asimetrik anahtar olmadan veritabanı geri yüklenemez. Sonuç olarak, veritabanı şifreleme anahtarını şifrelemek için kullanılan sertifika, yedekleme gerektiği sürece saklanmalıdır. Daha fazla bilgi için bkz. SQL Server Sertifikaları ve Asimetrik Anahtarlar.

Permissions

Kullanıcının çalıştırabilmesi CREATE DATABASEiçin izinlere sahip RESTORE olması gerekir.

CREATE LOGIN mylogin WITH PASSWORD = 'Very Strong Pwd123!';
GRANT CREATE ANY DATABASE TO [mylogin];

RESTORE izinler, üyelik bilgilerinin sunucu tarafından her zaman kullanılabilir olduğu rollere verilir. Sabit veritabanı rolü üyeliği yalnızca veritabanı erişilebilir ve zarar görmediğinde kontrol edilebildiğinden, ki bu her zaman yürütüldüğünde RESTORE böyle değildir; sabit veritabanı rolünün db_owner üyelerinin izni yoktur RESTORE .

Örnekler

Aşağıdaki örnekler, kimlik bilgisi oluşturma dahil olmak üzere URL'den yalnızca kopya veritabanı yedeğini geri yükler.

A. Veritabanını dört yedekleme cihazından geri yükleme

-- Create credential
CREATE CREDENTIAL [https://mybackups.blob.core.windows.net/wide-world-importers]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
      SECRET = 'sv=2017-11-09&ss=bq&srt=sco&sp=rl&se=2022-06-19T22:41:07Z&st=2018-06-01T14:41:07Z&spr=https&sig=s7wddcf0w%3D';
GO
-- Restore database
RESTORE DATABASE WideWorldImportersStandard
FROM URL = N'https://mybackups.blob.core.windows.net/wide-world-importers/00-WideWorldImporters-Standard.bak',
URL = N'https://mybackups.blob.core.windows.net/wide-world-importers/01-WideWorldImporters-Standard.bak',
URL = N'https://mybackups.blob.core.windows.net/wide-world-importers/02-WideWorldImporters-Standard.bak',
URL = N'https://mybackups.blob.core.windows.net/wide-world-importers/03-WideWorldImporters-Standard.bak'

Veritabanı zaten varsa aşağıdaki hata gösterilir: Msg 1801, Level 16, State 1, Line 9 Database 'WideWorldImportersStandard' already exists. Choose a different database name.

B. Değişken aracılığıyla belirtilen veritabanını geri yükleme

DECLARE @db_name sysname = 'WideWorldImportersStandard';
DECLARE @url nvarchar(400) = N'https://mybackups.blob.core.windows.net/wide-world-importers/WideWorldImporters-Standard.bak';

RESTORE DATABASE @db_name
FROM URL = @url

C. Geri yükleme deyiminin ilerleme durumunu izleme

SELECT query = a.text, start_time, percent_complete,
    eta = dateadd(second,estimated_completion_time/1000, getdate())
FROM sys.dm_exec_requests r
    CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a
WHERE r.command = 'RESTORE DATABASE'

Uyarı

Bu görünümde büyük olasılıkla iki geri yükleme isteği gösterilir. Biri istemci tarafından gönderilen orijinal RESTORE ifade, diğeri ise istemci bağlantısı başarısız olsa bile yürüten arka plan RESTORE ifadesidir.