Aracılığıyla paylaş


Veritabanını Veritabanı Anlık Görüntüsüne Geri Döndürme

Şunlar için geçerlidir: SQL Server

Çevrimiçi veritabanındaki veriler zarar görürse, bazı durumlarda veritabanını hasarı önleyen bir veritabanı anlık görüntüsüne geri döndürmek, veritabanını yedekten geri yüklemeye uygun bir alternatif olabilir. Örneğin, veritabanını geri döndürmek, bırakılan tablo gibi son zamanlarda ciddi bir kullanıcı hatasını ters çevirmek için yararlı olabilir. Ancak, anlık görüntü oluşturulduktan sonra yapılan tüm değişiklikler kaybolur.

Başlamadan Önce

Sınırlamalar ve Kısıtlamalar

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

  • Veritabanı için birden çok anlık görüntü vardır. Geri dönmek için, dönmeyi planladığınız veritabanı için yalnızca bir anlık görüntü olmalıdır.

  • Veritabanında salt okunur veya sıkıştırılmış dosya grupları vardır.

  • Tüm dosyalar artık çevrimdışıdır ancak anlık görüntü oluşturulduğunda çevrimiçiydi.

Veritabanını geri döndürmeden önce aşağıdaki sınırlamaları göz önünde bulundurun:

  • Geri döndürme, medya kurtarma için tasarlanmamıştır. Veritabanı anlık görüntüsü, veritabanı dosyalarının tamamlanmamış bir kopyasıdır, bu nedenle veritabanı veya veritabanı anlık görüntüsü bozulursa, 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. Bu nedenle, veritabanını korumak için düzenli yedeklemeler almak ve geri yükleme planınızı test etmek çok önemlidir. Daha fazla bilgi için bkz. SQL Server Veritabanlarını Yedekleme ve Geri Yükleme.

    Uyarı

    Kaynak veritabanını veritabanı anlık görüntüsünü oluşturduğunuz noktaya geri yükleyebilmeniz gerekiyorsa, tam kurtarma modelini kullanın ve bunu yapmanızı sağlayan bir yedekleme ilkesi uygulayın.

  • Geri döndürülen veritabanı özgün kaynak veritabanının üzerine yazılır, bu nedenle anlık görüntünün oluşturulmasından bu yana veritabanında yapılan tüm güncelleştirmeler kaybolur.

  • Geri alma işlemi, eski günlük dosyasının üzerine yazmanın yanı sıra günlüğü yeniden oluşturur. Sonuç olarak, geri alınan veritabanını kullanıcı hatası noktasına iletemezsiniz. Bu nedenle, veritabanını geri döndürmeden önce günlüğü yedeklemenizi öneririz.

    Uyarı

    Veritabanını iletmek için özgün günlüğü geri yükleyemediğiniz halde, özgün günlük dosyasındaki bilgiler kayıp verileri yeniden oluşturmak için yararlı olabilir.

  • Geri döndürme işlemi, günlük yedekleme zincirini bozar. Bu nedenle, geri alınan veritabanının günlük yedeklemelerini alabilmeniz için önce tam veritabanı yedeklemesi veya dosya yedeklemesi almanız gerekir. Tam veritabanı yedeklemesi öneririz.

  • Geri döndürme işlemi sırasında hem anlık görüntü hem de kaynak veritabanı kullanılamaz. Kaynak veritabanı ve anlık görüntü "Geri yüklemede" olarak işaretlenir. Geri döndürme işlemi sırasında bir hata oluşursa, veritabanı yeniden başlatıldığında geri döndürme işlemi geri döndürmeyi bitirmeye çalışır.

  • Geri alınan veritabanının meta verileri, anlık görüntü sırasındaki meta veriyle aynıdır.

  • Geri alma işlemi, tüm tam metin kataloglarını siler.

Önkoşullar

Kaynak veritabanının ve veritabanı anlık görüntüsünün aşağıdaki önkoşulları karşıladığından emin olun:

Security

Permissions

Kaynak veritabanında RESTORE DATABASE izinlerine sahip olan tüm kullanıcılar, veritabanı anlık görüntüsü oluşturulduğunda bunu durumuna geri döndürebilir.

Veritabanını Veritabanı Anlık Görüntüsüne Döndürme (Transact-SQLKullanarak)

Veritabanını veritabanı anlık görüntüsüne döndürmek için

Uyarı

Bu yordamın bir örneği için, bu bölümün devamında yer alan Örnekler (Transact-SQL) bölümüne bakın.

  1. Veritabanını geri döndürmek istediğiniz veritabanı anlık görüntüsünü tanımlayın. Anlık görüntüleri SQL Server Management Studio'daki bir veritabanında görüntüleyebilirsiniz (bkz. Veritabanı Anlık Görüntüsünü Görüntüleme (SQL Server)). Ayrıca, sys.databases (Transact-SQL) katalog görünümünün source_database_id sütunundan görünümün kaynak veritabanını tanımlayabilirsiniz.

  2. Diğer veritabanı anlık görüntülerini silin.

    Anlık görüntüleri bırakma hakkında bilgi için bkz . Veritabanı Anlık Görüntüsünü Bırakma (Transact-SQL). Veritabanı tam kurtarma modelini kullanıyorsa, geri dönmeden önce günlüğü yedeklemeniz gerekir. Daha fazla bilgi için bkz . İşlem Günlüğünü Yedekleme (SQL Server) veya Veritabanı Zarar Gördüğünde İşlem Günlüğünü Yedekleme (SQL Server).

  3. Geri döndürme işlemini gerçekleştirin.

    Geri döndürme işlemi, kaynak veritabanında RESTORE DATABASE izinleri gerektirir. Veritabanını geri almak için aşağıdaki Transact-SQL deyimini kullanın:

    VERITABANı database_name VERITABAN ANLIK GÖRÜNTÜSÜ =database_snapshot_name 'DAN GERI YÜKLE

    burada database_name kaynak veritabanıdır ve database_snapshot_name veritabanını geri döndürmek istediğiniz anlık görüntünün adıdır. Bu ifade içerisinde, yedekleme cihazı yerine bir anlık görüntü adı belirtmeniz gerektiğine dikkat edin.

    Daha fazla bilgi için bkz . RESTORE (Transact-SQL).

    Uyarı

    Geri döndürme işlemi sırasında hem anlık görüntü hem de kaynak veritabanı kullanılamaz. Kaynak veritabanı ve anlık görüntü "Geri yüklemede" olarak işaretlenir. Geri döndürme işlemi sırasında bir hata oluşursa, veritabanı yeniden başlatıldığında geri döndürmeyi bitirmeyi dener.

  4. Veritabanı anlık görüntüsü oluşturulduktan sonra veritabanı sahibi değiştiyse, geri alınan veritabanının veritabanı sahibini güncelleştirmek isteyebilirsiniz.

    Uyarı

    Geri alınan veritabanı, veritabanı anlık görüntüsünün izinlerini ve yapılandırmasını (veritabanı sahibi ve kurtarma modeli gibi) korur.

  5. Veritabanını başlatın.

  6. İsteğe bağlı olarak, özellikle tam (veya toplu günlüğe kaydedilen) kurtarma modelini kullanıyorsa geri alınan veritabanını yedekleyin. Veritabanını yedeklemek için bkz. Tam Veritabanı Yedeklemesi (SQL Server) oluşturma.

Örnekler (Transact-SQL)

Bu bölüm, veritabanını veritabanı anlık görüntüsüne döndürmeye ilişkin aşağıdaki örnekleri içerir:

A. AdventureWorks veritabanında anlık görüntüyü geri alma

Bu örnekte, veritabanında şu anda yalnızca bir anlık görüntü olduğu AdventureWorks2025 varsayılır. Veritabanının geri döndürüldiği anlık görüntüyü oluşturan örnek için bkz. Veritabanı Anlık Görüntüsü Oluşturma (Transact-SQL).

USE master;  
-- Reverting AdventureWorks to AdventureWorks_dbss1800  
RESTORE DATABASE AdventureWorks from   
DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';  
GO  

B. Sales veritabanında anlık görüntüyü geri alma

Bu örnekte Şu anda Sales veritabanında iki anlık görüntü olduğu varsayılır: sales_snapshot0600 ve sales_snapshot1200. Örnek, eski anlık görüntüleri siler ve veritabanını daha yeni anlık görüntüye döndürür.

Bu örneğin bağımlı olduğu örnek veritabanını ve anlık görüntüleri oluşturma kodu için bkz:

--Test to see if sales_snapshot0600 exists and if it   
-- does, delete it.  
IF EXISTS (SELECT database_id FROM sys.databases  
    WHERE NAME='sales_snapshot0600')  
    DROP DATABASE SalesSnapshot0600;  
GO  
-- Reverting Sales to sales_snapshot1200  
USE master;  
RESTORE DATABASE Sales FROM DATABASE_SNAPSHOT = 'sales_snapshot1200';  
GO  

İlgili Görevler

Ayrıca Bkz.

Veritabanı Anlık Görüntüleri (SQL Server)
RESTORE (Transact-SQL)
sys.databases (Transact-SQL)
Veritabanı Yansıtma ve Veritabanı Anlık Görüntüleri (SQL Server)