Aracılığıyla paylaş


SQL Server yedekleme uygulamaları - Birim Gölge Kopyası Hizmeti (VSS) ve SQL Yazıcı

Şunlar için geçerlidir:Windows üzerinde SQL Server

SQL Server, bir üçüncü taraf yedekleme uygulamasının veritabanı dosyalarını yedeklemek için VSS çerçevesini kullanabilmesi için bir yazıcı (SQL yazıcısı) sağlayarak Birim Gölge Kopyası Hizmeti (VSS) için destek sağlar. Bu makalede SQL Server veritabanları için SQL yazıcı bileşeni ve VSS anlık görüntü oluşturma ve geri yükleme işlemindeki rolü açıklanmaktadır. Ayrıca, VSS çerçevesinde yedekleme uygulamalarıyla çalışmak için SQL yazıcısının nasıl yapılandırılıp kullanılacağına ilişkin ayrıntıları da yakalar.

VSS altyapısı

VSS, WINDOWS sistemlerinde VSS uygulamalarını çalıştırmak için sistem altyapısı sağlar. Hem kullanıcı hem de geliştirici için büyük ölçüde saydam olsa da VSS:

  • Sağlayıcıların, yazarların ve istekte bulunanların gölge kopya oluşturma ve kullanma etkinliklerini koordine eder.
  • Varsayılan sistem sağlayıcısını sağlar.
  • Herhangi bir sağlayıcının çalışması için gereken alt düzey sürücü işlevselliğini uygular.

VSS hizmeti isteğe bağlı olarak başlar, bu nedenle VSS işlemlerinin başarılı olması için bu hizmetin etkinleştirilmesi gerekir.

VSS bileşenleri

VSS, aşağıdaki işbirliği bileşenlerinin etkinliklerini koordine eder:

  • Sağlayıcılar gölge kopya verilerinin sahibidir ve gölge kopyaların örneğini oluşturur.

  • Yazıcılar, verileri değiştiren ve gölge kopya eşitleme işlemine katılan uygulamalardır.

  • İstek sahipleri, gölge kopyaların oluşturulmasını ve yok edilmesini başlatır. Tasarım, istek sahibinin bir yedekleme uygulaması olduğu senaryoya odaklanır.

VSS, bu taraflar arasında koordinasyon sağlar:

VSS'nin taraflar arasında nasıl koordinasyon sağladığını gösteren diyagram.

Bu diyagram, tipik bir VSS anlık görüntü etkinliğine katılan tüm bileşenleri gösterir. Böyle bir senaryoda, SQL Server (SQL yazıcı dahil) Yazıcı kutularından birinde yazar görevi görür. Diğer bu tür yazarlar arasında Exchange Server gibi örnekler olabilir.

  • Sanal Cihaz Arabirimi: SQL Server, bağımsız yazılım satıcılarının yedekleme ve geri yükleme işlemleri için destek sağlayarak SQL Server'ı ürünleriyle tümleştirmesine yardımcı olan Sanal Cihaz Arabirimi (VDI) adlı bir uygulama programlama arabirimi sağlar. Bu API'ler, en yüksek güvenilirlik ve performansı sağlamak üzere tasarlanmıştır ve SQL Server yedekleme ve geri yükleme işlevselliğinin yanı sıra, bütün sıcak ve anlık yedekleme özelliklerinin kapsamını da destekler. Daha fazla bilgi için bkz . SQL Server 2005 Sanal Yedekleme Cihazı Arabirimi Belirtimi.

  • İstek sahibi: Bir veya daha fazla anlık görüntü kümesinin bir veya daha fazla özgün birimden alınmasını isteyen bir işlem (otomatik veya GUI). Bu makalede "istemci", SQL Server veritabanlarının anlık görüntüsünü oluşturan yedekleme uygulaması için de kullanılmaktadır.

Daha fazla bilgi için bkz. Birim Gölge Kopyası Hizmeti.

SQL yazıcısı

SQL yazıcı, SQL Server örneği tarafından sağlanan bir VSS yazıcıdır. SQL Server ile VSS etkileşimini işler. SQL yazıcı tek başına bir hizmet olarak SQL Server ile birlikte gönderilir ve SQL Server yüklemesinin bir parçası olarak yüklenir.

VSS anlık görüntü yedekleme işleminde SQL yazıcısının rolü:

VSS anlık görüntüsünün ekran görüntüsü.

SQL yazıcısını yapılandırma

SQL yazıcı hizmeti, SQL Server yüklemesinin bir parçası olarak sisteme yüklenir ve Windows başlatıldığında otomatik olarak başlatacak şekilde yapılandırılır.

SQL yazma hizmeti hesabı

Yükleme sırasında, Yerel Sistem hesabını kullanmak için SQL yazıcı hesabı yüklenir. SQL yazıcısının özel VDI API'lerini kullanarak SQL Server ile konuşması gerektiğinden, SQL yazıcı hesabının hem SQL Server hem de VSS için yeterli erişim haklarına sahip olması gerekir. Hizmeti Yerel Sistem hesabı olarak yapılandırmak, hizmetin düzgün çalışması için yeterli haklar sağlar.

Önemli

SQL yazıcı hizmetinin Yerel Sistem hesabı altında çalıştığından ve SQL Server NT SERVICE\SQLWriter hesabının sysadmin rolünün bir üyesi olduğundan emin olun.

SQL yazıcısını yeniden etkinleştirme ve başlatma

Varsayılan olarak, SQL yazıcı hizmeti etkinleştirilir ve otomatik olarak başlatılır. Bu yapılandırma değiştirildiyse, varsayılan ayarlara geri dönmek için aşağıdaki adımların izlenmesi gerekir:

SQL yazıcı hizmeti, bu hizmeti Otomatik olarak işaretleyerek etkinleştirilebilir. Hizmetleri denetim masası aracılığıyla açmak için Başlat'ı seçin, Denetim Masası'nı seçin, Yönetimsel Araçlar'a çift tıklayın ve ardından Hizmetler'e çift tıklayın. Hizmetler bölmesinde SQL yazıcı hizmetine çift tıklayın ve Başlangıç Türü özelliğini Otomatik olarak değiştirin.

Daha sonra hizmet, daha önce bahsedilen hizmet özelliği ekranındaki Hizmet Durumu özelliğinin altındaki Başlat düğmesi seçilerek başlatılmalıdır.

Uyarı

SQL Server Express örneğinin yüklü olduğu ve bir uygulamanın Kullanıcı Örnekleri özelliğini kullandığı bazı durumlarda SQL yazıcısı SQL Server tarafından otomatik olarak başlatılabilir. Bu, VSS yedekleme işlemi sırasında bu Kullanıcı Örneklerinin numaralandırmasını kolaylaştırmak için yapılır.

SQL yazıcı tarafından desteklenen özellikler

  • Tam metin: SQL yazıcısı, yazıcının meta veri belgesindeki veritabanı bileşenleri altında özyinelemeli dosya belirtimlerine sahip tam metin katalog kapsayıcılarını raporlar. Veritabanı bileşeni seçildiğinde yedeklemeye otomatik olarak eklenirler.

  • Değişiklik yedekleme ve geri yükleme: SQL yazıcısı, iki VSS değişiklik mekanizması aracılığıyla değişiklik yedekleme ve geri yüklemeyi destekler:

    • Kısmi dosya: SQL yazıcısı, veritabanı dosyalarında değiştirilen bayt aralıklarını raporlamak için VSS Kısmi Dosya mekanizmasını kullanır.

    • Dosya son değiştirme zamanına göre farklılık gösterir: SQL yazıcısı, değiştirilen dosyaları tam metin kataloglarında raporlamak için VSS Fark Eden Dosya ile Son Değiştirme Zamanı mekanizmasını kullanır.

  • Taşıma ile geri yükleme: SQL yazıcısı, geri yükleme sırasında VSS'nin Yeni Hedef belirtimini destekler. Yeni Hedef belirtimi, geri yükleme işleminin bir parçası olarak bir veritabanı/günlük dosyası veya tam metin katalog kapsayıcısının yeniden yerleştirilmesini sağlar.

  • Veritabanını yeniden adlandırma: Özellikle veritabanı özgün veritabanıyla yan yana geri yüklenecekse, istek sahibinin yeni bir adla SQL Server veritabanını geri yüklemesi gerekebilir. SQL yazıcısı, veritabanı özgün SQL örneğinde kaldığı sürece geri yükleme işlemi sırasında veritabanını yeniden adlandırmayı destekler.

  • Yalnızca kopyalama yedeklemesi: Bazen, örneğin test amacıyla veritabanının bir kopyasını almanız gerektiğinde özel bir amaca yönelik bir yedekleme almak gerekir. Bu yedekleme, veritabanı için genel yedekleme ve geri yükleme yordamlarını etkilememelidir. seçeneğinin COPY_ONLY kullanılması, yedeklemenin bant dışı yapıldığını ve normal yedekleme sırasını etkilememesi gerektiğini belirtir. SQL yazıcı, SQL Server örnekleriyle yalnızca kopya yedekleme türünü destekler.

  • Veritabanı anlık görüntüsünün otomatik olarak kurtarılma durumu: Genellikle VSS çerçevesi kullanılarak alınan bir SQL Server veritabanının anlık görüntüsü kurtarılmamış durumdadır. Anlık görüntüdeki verilere, uçuş içi işlemleri geri almak ve veritabanını tutarlı bir duruma getirmek için kurtarma aşamasından geçmeden önce güvenli bir şekilde erişilemiyor. VsS yedekleme uygulamasının anlık görüntü oluşturma işleminin bir parçası olarak anlık görüntülerin otomatik kurtarılmasını istemesi mümkündür.

Bu yeni özellikler ve kullanımları, bu makaledeki Yedekleme ve Geri Yükleme Seçeneği Ayrıntıları bölümünde daha ayrıntılı olarak açıklanmıştır.

Desteklenmeyenler

  • Günlük yedeklemeler SQL yazarı tarafından desteklenmez.
  • Dosya ve dosya grubu yedeklemesi desteklenmez.
  • Sayfa geri yükleme desteklenmez.
  • Veritabanı anlık görüntüleri desteklenmez ve hem bileşen hem de bileşen olmayan VSS anlık görüntüleri oluşturulurken yoksayılır.
  • Veritabanlarını veya kapatmanın etkinleştirildiği veritabanlarını otomatik kapatma.
  • Linux bir VSS çerçevesi sağlamaz ve bu nedenle SQL yazıcı Linux'ta kullanılamaz.

Aşağıdaki tabloda, Windows üzerinde SQL Server'ın tüm sürümleri için VSS çerçevesiyle çalışan SQL yazıcısı/SQL Server tarafından desteklenen anlık görüntü yedekleme türleri listelenmektedir.

Yedekleme ve geri yükleme işlemi Bileşen tabanlı Bileşen tabanlı olmayan
Tam veri yedekleme
(Tam metin kataloğu dahil)
Yes Yes
Tam geri yükleme Yes Yes
Tam geri yükleme (Kurtarma yok) Yes Hayı
Diferansiyel yedekleme Yes Hayı
Diferansiyel geri yükleme Yes Hayı
Taşıma ile geri yükleme Yes Hayı
Veritabanını yeniden adlandırma Yes Hayı
Yalnızca yedeklemeyi kopyala Yes Hayı
Otomatik kurtarılan anlık görüntüler Yes Hayı
Günlük yedekleme Hayı Hayı
Veritabanı anlık görüntüleri Hayı Hayı
Veritabanlarını otomatik kapat
Kapanış durumunda olan veritabanları
Yes Hayı
Kullanılabilirlik grubu veritabanları Yes İkincilde hayır

Yedekleme işlemleri

SQL Server (SQL yazıcısını kullanarak) VSS tabanlı yedekleme işlemlerinin aşağıdaki modlarını destekler:

  • Bileşen tabanlı olmayan
  • Bileşen tabanlı

Sürüm desteği

SQL yazıcı, SQL Server'ın bir parçası olarak gönderilir ve yalnızca SQL Server örneklerini destekler. SQL yazıcı, SQL Server Express sürümü tarafından başlatılan kullanıcı örnekleri de dahil olmak üzere SQL Server Express örneklerini de numaralandırır.

Bileşen tabanlı olmayan yedekleme işlemleri

Bileşen tabanlı olmayan yedeklemeler, anlık görüntü kümesindeki birimlerin listesini kullanarak veritabanlarını örtük olarak seçer. SQL yazıcısı, yırtılmış veritabanlarını denetler ve bulunursa hataya neden olur. Yırtılmış veritabanı, dosyaların bir alt kümesinin birim listesi tarafından seçildiği veritabanıdır.

Bileşen tabanlı olmayan modelde yalnızca basit kurtarma modeline sahip veritabanları desteklenir. Geri yüklemeden sonra ileri sarma desteklenmez.

Bileşen tabanlı yedekleme işlemleri

Uygulama (VSS yedekleme uygulaması) SQL yazıcısından döndürülen meta verilerden veritabanlarını açıkça seçtiğinden, bileşen tabanlı yedeklemeler SQL yazıcıda tercih edilir ve önerilir. Anlık görüntü kümesi, bu veritabanlarını yedeklemek için gereken tüm birimleri içermelidir. VSS altyapısı seçilen veritabanı kümesi için gerekli birimleri otomatik olarak eklemez. Tüm yedekleme birimleri birim anlık görüntüsü kümesine eklenmelidir. Tüm yedekleme birimlerinin anlık görüntü kümesine dahil olduğundan emin olmak yedekleme uygulamasının sorumluluğundadır. SQL yazıcısı, yırtılmış veritabanlarını algılar (anlık görüntü kümesinin dışındaki yedekleme birimleriyle) ve yedeklemeyi başarısız olur.

Bu bölümün geri kalanında, SQL Server için VSS anlık görüntü oluşturma işleminin bir parçası olarak bileşen tabanlı yedeklemelerin kullanıldığı varsayılır.

Anlık görüntü oluşturma işlemi

VSS çerçevesi, SQL Server anlık görüntüleri oluşturulurken istek sahibinin (bir yedekleme uygulaması) ve SQL yazıcısının etkinliklerini koordine eder. Bu koordinasyonu etkinleştirmek için VSS çerçevesi istek sahibi ve yazıcı arabirimlerini tanımlar. Bu arabirimler, katılımcı istek sahibi uygulamalar ve yazarlar tarafından uygulanmalıdır. SQL yazıcısı gerekli yazıcı arabirimlerini uygular. Anlık görüntü oluşturma işleminin bir parçası olarak, SQL yazıcısının arabirimleri VSS çerçevesi tarafından çağrılır. SQL yazıcı, anlık görüntü oluşturmayı kolaylaştırmak için sistemdeki SQL Server örnekleriyle etkileşim kurar.

VSS çerçevesi, bir istek sahibinin veya yedekleme uygulamasının kullanımına yönelik bir API seti tanımlar. Bir yedekleme uygulaması geliştiricisinin VSS çerçevesi anlık görüntü oluşturma işlemiyle çalışması için bu API çağrı desenlerini izlemesi gerekir. Sonraki bölümlerde SQL yazıcı görünümünden anlık görüntü oluşturma işlemi açıklanmaktadır. Ayrıca istek sahibi, VSS çerçevesi, SQL yazıcısı ve SQL Server örnekleri arasındaki iç etkileşimlerin bazılarını ayrıntılı olarak açıklar.

Bu adımlar hakkında daha fazla bilgi edinmek ve VSS çerçeve arabirimlerinin ayrıntıları için bkz. Birim Gölge Kopyası Hizmeti (VSS).

Uyarı

VSS çerçevesi ve yedekleme oluşturma işlemini genel olarak bildiğiniz varsayılır. Bu bölümler, SQL yazıcısının VSS yedekleme oluşturma işlemine nasıl katıldığı hakkında ek bilgi olarak sağlanır.

Anlık görüntü oluşturma iş akışı

Aşağıdaki görüntüde, bileşen tabanlı anlık görüntü oluşturma/yedekleme işlemi sırasında veri akışı diyagramı gösterilmektedir.

Veri akışının ekran görüntüsü.

Yedekleme gerçekleştirmeyle ilgili temel görevleri daha iyi anlamak için bu genel bakışı aşağıdaki aşamalara bölmek yararlı olur:

Yedekleme başlatma

Yedeklemenin bu aşamasında, istek sahibi (yedekleme uygulaması) anlık görüntü arabirimine IvssBackupComponentsbağlanır ve yedeklemeye hazırlanırken başlatır. Ayrıca VSS API'sini IVssGatherWriterMetadata çağırarak VSS çerçevesine tüm yazarlardan meta verilerini toplaması gerektiğini söyler.

VSS çerçevesi, OnIdentify olayı kullanılarak SQL yazarı da dahil olmak üzere kayıtlı bileşenlerin her birini yazar meta verisi için çağırır. SQL yazıcısı, her veritabanı için yedek meta veri bilgilerini almak ve Yazıcı Meta Verileri Belgesi oluşturmak için SQL Server örneklerini sorgular. Bu aşama meta veri numaralandırması olarak da adlandırılır.

Yazıcı meta verileri belgesi, yazıcıdan istek sahibine (yedekleme uygulaması) geçirilen bilgileri içeren bir belgedir. Yazıcı meta verileri belgesi aşağıdaki bilgileri içerir:

  • Uygulama kimliği ve anlaşılır isim
  • Dosyaların ve bileşenlerin bulunduğu yer
  • Yedeklemeye dahil edilmesi ve dışlanması gereken dosyalar
  • Geri yükleme zamanında hangi seçeneklerin kullanılması gerekir?

Bu, VSS çerçevesi aracılığıyla istek sahibine geri geçirilir.

Yedekleme bulma

Bu aşamada, istek sahibi yazar meta veri belgesini inceler ve yedeklenmesi gereken her bileşen için bir Yedekleme Bileşeni Belgesi oluşturup doldurur. Ayrıca, bu belgenin bir parçası olarak gerekli yedekleme seçeneklerini ve parametrelerini belirtir. SQL yazıcısı için, yedeklenmesi gereken her veritabanı örneği ayrı bir bileşendir.

Yedekleme bileşenleri belgesi

Bu, bir geri yükleme veya yedekleme işleminin ayarlanması sırasında, IVssBackupComponents arabirimini kullanarak istekte bulunan tarafından oluşturulan bir XML belgesidir. Yedekleme bileşenleri belgesi, bir veya daha fazla yazıcıdan bir yedekleme veya geri yükleme işlemine katılan, açıkça dahil edilen bileşenlerin listesini içerir. Örtük olarak eklenen bileşen bilgilerini içermez. Buna karşılık, bir yazıcı meta veri belgesi yalnızca bir yedeklemeye katılabilecek yazıcı bileşenlerini içerir. Yedekleme bileşeni belgesinin yapısal ayrıntıları VSS API belgelerinde açıklanmıştır.

Ön geri yükleme görevleri

VSS altındaki geri yükleme görevleri, yedekleme için veri içeren birimlerin gölge kopyasını oluşturmaya odaklanır. Yedekleme uygulaması verileri gerçek hacimden değil, gölge kopyadan kaydeder.

İstek sahipleri genellikle yedekleme hazırlığı sırasında ve gölge kopya oluşturulurken yazıcıları bekler. SQL yazar yedekleme işlemine katılıyorsa, dosyalarını ve kendisini yedekleme ve gölge kopya oluşturma için hazır olacak şekilde yapılandırması gerekir.

Yedeklemeye hazırlanma

Talep sahibinin gerçekleştirilmesi gereken yedekleme işleminin türünü ayarlaması ve ardından VSS aracılığıyla yazarları IVssBackupComponents::PrepareForBackup kullanarak bir yedekleme işlemine hazırlaması gerekir.

SQL yazıcısına yedekleme bileşeni belgesine erişim verilir ve bu belge hangi veritabanlarının yedekleneceği hakkında ayrıntılı bilgi sağlar. Tüm yedekleme birimleri birim anlık görüntüsü kümesine eklenmelidir. SQL yazıcısı, yırtılmış veritabanlarını algılar (anlık görüntü kümesinin dışındaki yedekleme birimleriyle) ve PostSnapshot olayı sırasında yedekleme başarısız olur.

Dosyaların gerçek yedeklemesi

Bu aşamada, istek sahibi gerekirse verileri bir yedek medyaya taşıyabilir. Bu aşamadaki etkileşimler istek sahibi ile VSS çerçevesi arasındadır. SQL yazıcısı bu işe dahil değildir.

  1. Yazar durumunu alma. Yazarların durumunu döndürür. İstek sahibinin buradaki hataları işlemesi gerekebilir.
  2. Yedeklemeyi gerçekleştirin.

İstek sahibi, şu anda gerekirse medyayı yedeklemek için verileri taşıyabilir.

Yedekleme tamamlandı

Bu olay yedeklemenin başarıyla tamamlandığını gösterir.

Bu aynı zamanda, geçerli yedekleme veritabanının tam bir yedeğiyse (ve yalnızca kopya yedeği değilse), SQL yazıcısının yedeklemeyi fark tabanı olarak kaydedebileceği zamandır.

Uyarı

İstek sahibi, SQL yazıcısının değişiklik temeli yedeklemeleri işlemesine izin vermek için bu olayı (Backup Complete olayı) açıkça göndermelidir. Bu olay alınmazsa, oluşturulan yedekleme uygun bir farklılık tabanlı yedekleme değildir.

Yazıcı meta verilerini kaydetme

İstek sahibinin yedekleme bileşeni belgesini ve her bileşen yedekleme meta verilerini anlık görüntüden yedeklenen verilerle birlikte kaydetmesi gerekir. Bu yazıcı meta verileri, geri yükleme işlemleri için SQL yazıcısı/SQL Server tarafından gereklidir.

Yedeklemenin sonlandırılması

İstek sahibi, IVssBackupComponents arabirimi serbest bırakarak veya IVssBackupComponents::DeleteSnapshots çağırarak gölge kopyayı sonlandırır.

SQL yazar meta veri belgesi

Bu, arabirimi kullanılarak bir yazıcı (bu örnekte SQL yazıcısı) tarafından oluşturulan ve yazıcının IVssCreateWriterMetadata durumu ve bileşenleri hakkında bilgi içeren bir XML belgesidir. Yazıcı meta veri belgesinin yapısal ayrıntıları VSS API belgelerinde açıklanmıştır. SQL yazıcı meta veri belgesinin bazı ayrıntıları aşağıdadır.

  • Yazar Belirleme Bilgileri

    • Yazıcı adı - L"SqlServerWriter"
    • Yazıcı sınıf kimliği - 0xa65faa63, 0x5ea8, 0x4ebc, 0x9d, 0xbd, 0xa0, 0xc4, 0xdb, 0x26, 0x91, 0x2a
    • Yazıcı örneği kimliği - L"SQL Server:SQLWriter"
    • VSSUsageType - VSS_UT_USERDATA
    • VSSSourceType - VSS_ST_TRANSACTEDDB
  • Yazar Düzeyi Bilgileri - VSS_APP_BACK_END

  • Geri Yükleme Yöntemi Belirtimi – VSS_RME_RESTORE_IF_CAN_REPLACE.

  • Desteklenen Yedekleme şeması (IVssCreateWriterMetadata::SetBackupSchema API)

    • VSS_BS_DIFFERENTIAL – farklı yedekleme
    • VSS_BS_TIMESTAMPED – Zaman damgası esaslı – tam metin katalog dosyaları için.
    • VSS_BS_LAST_MODIFY –Son değiştirme zamanına göre değişiklik yedeklemesi,
    • VSS_BS_WRITER_SUPPORTS_NEW_TARGET – yeni hedef konum seçeneğini destekler.
    • VSS_BS_WRITER_SUPPORTS_RESTORE_WITH_MOVE – taşıma ile geri yüklemeyi destekler
    • VSS_BS_COPY – "yalnızca kopyalama" yedekleme seçeneğini destekler.
  • Bileşen Düzeyi Bilgileri (SQL yazıcısı tarafından sağlanan bileşen düzeyine özgü bilgileri içerir)

    • Tür - VSS_CT_FILEGROUP
    • Ad - bileşenin adı (veritabanı adı)
    • Mantıksal yol – sunucu örneğinin (adlandırılmış örnekler için "sunucu\örnek-adı" ve varsayılan örnek için "sunucu" biçiminde).)
    • Bileşen Bayrakları
    • VSS_CF_APP_ROLLBACK_RECOVERY – SQL Server anlık görüntülerinin, dosyaları yedekleme dışı (yani uygulama geri alma) senaryolarında tutarlı ve kullanılabilir hale getirmek için her zaman bir "kurtarma" aşaması gerektirdiğini gösterir.
    • Seçilebilir - True
    • Geri Yükleme için Seçilebilir - True
    • Desteklenen geri yükleme yöntemleri - VSS_RME_RESTORE_IF_CAN_REPLACE

SQL Server'daki bileşen kümesi yapısının tek uzantısı, tam metin kataloglarının kullanıma sunulmasıdır. Tam metin katalogları, kapsayıcı dizinlerdir ve VSS veritabanı veya günlük dosyaları olarak ifade edilemezler; çünkü VSS veritabanı ve günlük dosyaları özyinelemeli belirtimler içermezler. Bu nedenle, SQL yazıcısı veritabanı düzeyi bileşenini ve veritabanı, günlük ve tam metin katalog dosyalarını temsil eden dosya grubu dosyalarını temsil etmek için bir VSS dosya grubu bileşeni (VSS_CT_FILEGROUP) kullanır.

Bu belgenin sonunda örnek bir yazıcı meta veri belgesi sağlanır.

Anlık görüntüyü başlat

İstek sahibi, VSS çerçeve arabirimini DoSnapshotSetçağırarak anlık görüntü işlemini başlatır.

Anlık görüntü oluştur

Bu aşama, VSS çerçevesi ile SQL yazıcısı arasında bir dizi etkileşim içerir.

  1. Anlık görüntüye hazırlanın. SQL yazıcısı, anlık görüntü oluşturmaya hazırlanmak için SQL Server'ı çağırır.

  2. Dondur. SQL yazıcı, anlık görüntüde yedeklenen veritabanlarının her biri için tüm veritabanı G/Ç'sini dondurmak için SQL Server'ı çağırır. Dondurma olayı VSS çerçevesine geri döndüğünde VSS anlık görüntüyü oluşturur.

  3. Çözül. Bu olayda, SQL yazıcı normal G/Ç işlemlerini çözmek veya sürdürmek için SQL Server örneklerini çağırır.

Veritabanına yapılan tüm yazmaların engellenmesini önlemek için anlık görüntü oluşturma aşaması 60 saniyeden kısa sürer.

Anlık görüntü sonrası

Anlık görüntü için otomatik kurtarma gerekiyorsa, SQL yazıcısı anlık görüntüde olmak üzere seçilen her veritabanı için otomatik kurtarma işlemini yapar. Ayrıntılı bir açıklama için bkz. Otomatik kurtarılan anlık görüntüler.

Geri yükleme işlemi

Bu bölümde geri yükleme işlemi iş akışı ve ilgili çeşitli adımlar açıklanmaktadır.

İşlem iş akışını geri yükleme

Aşağıdaki şekilde, VSS geri yükleme işlemi sırasında veri akışı diyagramı gösterilmektedir.

Geri yükleme işlemi akışının ekran görüntüsü.

Geri yükleme gerçekleştirmeyle ilgili temel görevleri daha iyi anlamak için bu genel bakışı aşağıdaki bölümlere ayırmak yararlı olur:

Tüm VSS bileşen tabanlı geri yükleme senaryolarında, veritabanı geri yükleme sql yazıcısı tarafından iki ayrı aşamada işlenir.

  • Ön geri yükleme: SQL yazıcısı doğrulamayı, dosya tanıtıcılarını kapatmayı vb. işler.
  • Geri yükleme sonrası: SQL yazıcısı veritabanını ekler ve gerekirse kilitlenme kurtarması yapar.

Bu iki aşama arasında, ilgili verileri SQL'in altına taşımak yedekleme uygulamasına aittir.

Başlatmayı geri yükle

Geri yüklemenin başlatma aşamasında, istek sahibinin depolanan yedekleme bileşenleri belgelerine erişimi olmalıdır.

Yedekleme işlemi sırasında oluşturulan yedekleme bileşeni belgesi, yedekleme verilerinin bir parçası olarak depolanır. Yedekleme uygulamasının bu verileri VSS çerçevesine geri geçirmesi gerekir. SQL yazıcısı, geri yükleme işleminin başında bu verilere erişim elde eder.

Geri yüklemeye hazırlanın

İstek sahibi geri yüklemeye hazırlanırken, neyin geri yükleneceğini ve nasıl geri yükleneceğini belirlemek için depolanan yedekleme bileşenleri belgesini kullanır. İstek sahibi, geri yüklenecek bileşenleri seçer ve gerektiğinde uygun geri yükleme seçeneklerini ayarlar.

Yedekleme uygulaması geçerli geri yükleme işleminin üzerine diferansiyel veya günlük yedeklemeleri uygulamayı planlıyorsa (yani norecovery ile geri yükleme gereklidir), geri yüklenen her veritabanı için bileşen oluşturulurken aşağıdaki seçenek ayarlanmalıdır.

IVssBackupComponents::SetAdditionalRestores(true)

Gerekli tüm ayrıntılar yedekleme bileşeni belgesinde ayarlandıktan sonra, istek sahibi, yazarlar tarafından yönetilen VSS aracılığıyla önceden geri yükleme olayı oluşturmak için IVssBackupComponents::PreRestore aramayı yapar.

SQL yazıcısı, sağlanan yedekleme bileşeni belgesini inceleyerek uygun veritabanlarını tanımlar ve yedekleme zamanından bu yana oluşturulan ek dosyaları siler. Ayrıca disk alanlarını denetler ve açılan veritabanı dosya tanıtıcılarını kapatarak istek sahibinin Geri Yükleme aşamasında gerekli verileri kopyalayabilmesini sağlar. Bu aşama, istek sahibi gerçek dosya kopyalama işlemini gerçekleştirmeden önce erken hata koşullarının algılanmasını sağlar. SQL Server ayrıca veritabanını geri yükleme durumuna geçirir. Bu noktadan sonra, veritabanı başarılı bir geri yükleme işlemine kadar başlatılamaz.

Dosyaları geri yükleme

Bu yalnızca istek sahibine özgü bir eylemdir. gerekli veritabanı dosyalarını (veya değişiklik geri yüklemeleri için ilgili veri aralıklarını) uygun yerlere kopyalamak istek sahibinin (yedekleme uygulaması) sorumluluğundadır. SQL yazıcısı bu işleme dahil değildir.

Temizleme ve sonlandırma

Tüm veriler doğru yerlere geri yüklendikten sonra, geri yükleme işleminin tamamlandığını IvssBackupComponents::PostRestorebildiren bir istek sahibi çağrısı, SQL yazıcısının geri yükleme sonrası eylemlerin başlatılabildiğini bilmesini sağlar. Bu noktada SQL yazıcı çökme kurtarma işleminin yeniden yapma aşamasını gerçekleştirir. Kurtarma istenmezse (istek SetAdditionalRestores(true) sahibi tarafından belirtilmezse), kurtarma adımının geri alma aşaması da bu aşamada gerçekleştirilir.

Yedekleme ve geri yükleme seçeneği ayrıntıları

Bu bölümde, SQL yazıcısı tarafından desteklenen tüm yedekleme ve geri yükleme seçenekleri ayrıntılı olarak açıklanmaktadır.

İstek sahibi bir gölge hacim kopyası oluşturur.

Veritabanı dosyaları birim anlık görüntüsü kümesine eklendiğinden, SQL yazıcı birim gölge kopyası oluşturma işlemine (yedekleme ve geri yükleme işlemlerinin dışında) dahil edilebilir. Bu durumda, SQL yazıcısı yalnızca meta veri numaralandırması, Freeze, Thaw, PrepareForSnapshotve PostSnapshot koordinasyona katılır (ayrıntılı bilgi için veri akışı diyagramına bakın).

Tam yedekleme ve geri yükleme

SQL yazıcı, hem bileşen tabanlı olmayan modda hem de bileşen tabanlı modda tam yedekleme ve geri yükleme işlemlerini destekler.

Bileşen tabanlı olmayan yedekleme ve geri yükleme

Bileşen tabanlı olmayan bir yedekleme ve geri yüklemede, istek sahibi yedeklenecek ve geri yüklenecek bir birim veya klasör ağacı belirtir. Belirtilen birim ve klasördeki tüm veriler yedeklenip geri yüklenir.

Yedekleme

Bileşen tabanlı olmayan bir yedeklemede SQL yazıcısı, anlık görüntü kümesindeki birimlerin listesini kullanarak veritabanlarını örtük olarak seçer. Yazılımcı, yırtılmış veritabanlarını denetler ve bulunursa bir hata bildirir. Yırtılmış veritabanı, dosyaların bir alt kümesinin birim listesi tarafından seçildiği veritabanıdır. Yedekleme sonrası ileri taşıma (fark veya günlük geri yüklemeleri) SQL Writer aracılığıyla desteklenmez.

Restore

İstek sahibi, bileşen tabanlı olmayan modda yedeklenmiş veritabanlarını geri yükler. Bu tür geri yüklemeler, günlük geri yükleme veya fark geri yükleme gibi ileri düzeltme geri yüklemeleriyle takip edilemez.

Bileşen tabanlı olmayan geri yükleme işlemleri için, dosyaların çevrimdışı olduğundan emin olmak için geri yüklemenin SQL Server örneğiyle çevrimdışı olarak gerçekleştirilmesi veya hedef veritabanlarının bırakılması/ayrılması gerekir. Dosyalar yerine kopyalanır ve ardından veritabanları eklenir. Tüm bunlar SQL yazıcısının kapsamı dışında gerçekleşir.

Bileşen tabanlı yedekleme ve geri yükleme

Bileşen tabanlı yedeklemede istek sahibi, yedeklenecek/geri yüklenecek veritabanı bileşenlerini (SQL yazıcısının istemciye döndürdüğü meta verilerden) açıkça seçer.

Yedekleme

Bileşen tabanlı yedeklemede, seçilen veritabanları için tüm yedekleme birimleri birim anlık görüntüsü kümesine eklenmelidir. Aksi takdirde, SQL yazıcısı yırtılmış veritabanlarını algılar (anlık görüntü kümesinin dışındaki yedekleme birimleriyle) ve yedekleme başarısızlıkla sonuçlanır. Tam yedekleme, veritabanını geri yükleme zamanında işlemsel olarak tutarlı bir duruma getirmek için gereken veritabanı verilerini ve tüm günlük dosyalarını yedekler.

İleri alma olmadan tam geri yükleme

Veritabanı yedeklemesinin tam geri yüklemesi bazen ek ileri sarma işlemi yapılmadan gerçekleştirilir. Bunun nedeni ileri sarmayı kolaylaştıracak meta verilerin olmaması veya bazı durumlarda ileri sarmanın gerekli olmaması olabilir. Bu bölümde bu iki durum kısaca ele alınır.

Meta veri yok/ileri sarma yok

Yedekleme işlemi sırasında hiçbir yazıcı meta verileri (bileşen tabanlı yedekleme meta verileri) kaydedilmezse, dosyaların çevrimdışı olduğundan emin olmak için geri yükleme SQL Server örneğiyle çevrimdışı gerçekleştirilmelidir veya hedef veritabanları bırakılır/ayrılır. Dosyalar yerine kopyalanır ve ardından veritabanları eklenir. Tüm bunlar SQL yazıcısının kapsamı dışında gerçekleşir.

Meta veriler var ancak ek ileri sarma gerekmez

İstek sahibi, bileşen tabanlı modda yedeklenmiş olan veritabanlarını, ileri alma talebi olmaksızın geri yükler. Bu durumda SQL Server, geri yüklemenin bir parçası olarak veritabanında kilitlenme kurtarımı gerçekleştirir.

Ek ileri sarma ile tam geri yükleme

İstek sahibi, SetAdditionalRestores(true) seçeneğini spesifik ederek bir geri yükleme işlemi yapabilir. İstek sahibinin daha fazla ileriye dönük geri yükleme işlemi (örneğin, günlük geri yükleme, diferansiyel geri yükleme vb.) yapmayı planladığını gösterir. Bu, SQL Server'a geri yükleme işleminin sonunda kurtarma adımı gerçekleştirmemesini sağlar.

Bu yalnızca yazıcı meta verileri yedekleme sırasında kaydedildiyse ve geri yükleme sırasında SQL yazıcısı tarafından kullanılabiliyorsa mümkündür. İstek sahibi geri yükleme etkinliğini gerçekleştirmek için VSS'yi yönlendirmeden önce SQL Server hizmetinin çalışıyor olması gerekir.

SQL yazıcı aşağıdaki diziyi bekler:

  1. Her veritabanını geri yükleme hazırlığı. Bu etkinlik, veritabanı dosyalarının talep eden uygulama tarafından kopyalanabilmesi/eklenebilmesi için tüm dosya tanıtıcılarının kapatılmasını içerir.

  2. Dosyalar istek sahibi uygulama tarafından kopyalanır/bağlanır.

  3. Geri yüklemeyi sonlandırın (NORECOVERY ile). Veritabanları çevrimiçi duruma getirilir, ancak geri yükleme durumuna getirilir.

Geleneksel SQL Server yedeklemeleri, değişiklik veya günlükleri daha sonra VDI veya Transact-SQL aracılığıyla veritabanını iletmek için ya da VSS çerçevesini kullanarak değişiklik geri yüklemesini uygulayarak kullanılabilir.

Tam metin desteği

SQL yazıcısı, yazar meta veri belgesindeki veritabanı bileşenleri altında özyinelemeli dosya belirtimlerine sahip tam metin katalog kapsayıcılarını bildirir. Veritabanı bileşeni seçildiğinde yedeklemeye otomatik olarak eklenirler.

Diferansiyel yedekleme ve geri yükleme

Değişiklik yedekleme işlemi yalnızca en son temel tam yedeklemeden bu yana değişen verileri yedekler. Değişiklik yedeği, veritabanı dosyalarının yalnızca değiştirilmiş olan bölümlerini içerir. Böyle bir yedekleme yapmak için istekte bulunanın (yedekleme uygulaması), dosyaların uygun bölümlerinin yedeklenebilmesi için veritabanı dosyalarındaki değişikliklerin konumu hakkında bilgiye ihtiyacı olacaktır. Değişiklik yedekleme işlemi sırasında, SQL yazıcısı bu bilgileri VSS kısmi dosya bilgileri tarafından belirtilen biçimde sağlar. Bu bilgiler, veritabanı dosyalarının yalnızca değiştirilen bölümünü yedeklemek için kullanılabilir.

Yedekleme

İstek sahibi, VSS ile bir yedekleme işlemi başlatırken yedekleme bileşeni belgesindeki DIFFERENTIALseçeneğini VSS_BT_DIFFERENTIAL ayarlayarak IVssBackupComponents::SetBackupState değişiklik yedeği verebilir. SQL komut oluşturucu, SQL Server tarafından döndürülen kısmi dosya bilgilerini VSS'ye iletir. İstek sahibi VSS API'sini IVssComponent::GetPartialFileçağırarak bu dosya bilgilerini alabilir. Bu kısmi dosya bilgileri, istek sahibinin veritabanı dosyaları için yedeklemek üzere yalnızca değiştirilmiş bayt aralıklarını seçmesine olanak tanır.

Yedekleme öncesi görevler aşamasında, SQL yazıcısı seçilen her veritabanı için tek bir fark tabanının mevcut olduğundan emin olur.

PostSnapshot Olay sırasında, SQL yazıcı SQL Server'dan kısmi dosya bilgilerini alır ve çağrıyı kullanarak IVssComponent::AddPartialFile yedekleme bileşeni belgesine ekler.

Uyarı

SQL yazıcısı, değişiklik yedeklemeleri için yalnızca tek bir fark taban çizgisini destekler. Çoklu taban çizgileri desteklenmez.

Kısmi dosya bilgileri biçimi

Değişiklik yedeklemesi sırasında yedeklenen her veritabanı için, SQL yazıcısı her veritabanı dosyası için kısmi dosya bilgilerini depolar. Bu bilgiler, istek sahibi veya yedekleme uygulaması tarafından dosyaların gerçek yedeklemesi sırasında dosyanın yalnızca ilgili bölümlerini yedekleme ortamına kopyalamak için kullanılır.

Bu kısmi dosya bilgilerinin biçimi hakkında daha fazla bilgi için bkz. Birim Gölge Kopyası Hizmeti (VSS).

İstek sahibi, IVssComponent::GetPartialFileCount ve IVssComponent::GetPartialFile çağrısı yaparak bu dosyaları belirleyebilir. IVssComponent::GetPartialFile dosyaya işaret eden bir yol ve dosya adı ve dosyada yedeklenmesi gerekenleri gösteren bir aralık dizesi döndürür.

Kısmi dosya bilgileri alma hakkında daha fazla bilgi için VSS belgelerine bakın.

Dosyaları yedekleme

Bu aşamada, yedekleme uygulaması yedekleme bileşeni belgesinde depolanan yazıcı meta verilerine bakmalı ve dosyaların yalnızca ilgili bölümlerini yedeklemelidir. (Tam metin katalog dosyaları için bu yedekleme, dosya zaman damgalarına göre yapılmalıdır. Bu, bu makalenin devamında açıklanmıştır).

Değişiklik yedeklemesi her zaman veritabanı için mevcut olan en son temel yedeklemeyle ilgilidir. Geri yükleme zamanında SQL Server eşleşmeyen temel ve değişiklik yedeklemelerini algılar. Bu nedenle, değişiklik beklenen tam yedeklemeye göre olduğundan emin olmak yedekleme uygulamasının veya sistem yöneticisinin sorumluluğundadır. Bant dışı bazı işlemler başka bir tam yedekleme yaptıysa, yedekleme uygulaması temel yedeğin sahibi olmadığından diferansiyel yedeği geri yükleyemeyebilir.

Şu anda bayt aralığı bilgileri (kısmi dosya bilgileri) çok büyükse (arabellek boyutu 64 KB'yi aşıyorsa), SQL Server kullanıcıya tam yedekleme gerçekleştirmesini belirten bir hata oluşturur.

Sorun giderme

Dosya ekleme/bırakma/küçültme/büyüme/mantıksal-yeniden adlandırma/fiziksel-yeniden adlandırma, yedekleme sorunlarını gidermede ilginç durumlar oluşturur.

Temel alındıktan sonra yeni eklenen dosyalar

Veritabanı dosyasının her üst bilgisinin kısmi belirtim içinde olması gerektiğinden, bu dosyalar kısmi belirtim içinde yer alır. Üst bilgi sayfasının yanı sıra, ayrılan tüm sayfaların kısmi belirtimlere dahil edilmesi gerekir.

Temel alındıktan sonra bırakılan dosyalar

Temel alındıktan sonra veri dosyaları yüklenebilir. Bu tür dosyalar, değişiklik yedeklemesi sırasında yazıcı meta verileri belgesine dahil değildir. Ayrıca, bırakılan dosyayla kısmi bilgi ilişkilendirilmemiştir.

Temel alındıktan sonra dosyalar küçüldü

Dosya küçültmeleri sunucuda devre dışı bırakılana kadar kısmi bilgiler dosyalardan toplanmaz. Bu, VSS'nin hiçbir zaman veri dosyasının küçültülen bölgesine karşılık gelen kısmi bilgiler içermemesini sağlar.

Temel alındıktan sonra büyüyen dosyalar

Büyüme, kısmi bilgi toplanmadan önce gerçekleştiyse, o zaman kısmi bilgiler büyütülen bölgedeki ayrılan sayfaları içermeliydi. Kısmi bilgiler toplandıktan sonra büyüme gerçekleşirse, kısmi bilgiler yetiştirilen bölgedeki değişiklikleri içermez. Aşağıdaki bölümlerde, bu tür değişikliklerin günlük ileri sarma ile geri yüklendiğini görürsünüz.

Temel alındıktan sonra dosya mantıksal olarak yeniden adlandırıldı.

Dosyanın mantıksal adına yazıcı meta veri belgesinde veya yedekleme bileşeni belgesinde herhangi bir yerde başvurulmadığından, dosyanın mantıksal yeniden adlandırması yedeklemeyi veya geri yüklemeyi etkilemez.

Daha fazla bilgi için bkz . Yazıcı meta verileri belgesi: Bu makalenin devamında yer alan bir örnek.

Temel alındıktan sonra dosya fiziksel olarak yeniden adlandırıldı

Fiziksel veritabanı dosyası yeniden adlandırma işlemi, veritabanı yeniden başlatılana kadar geçerli olmaz. Bu nedenle, veritabanı yapılandırma bilgileri veya kısmi bilgi arabelleğindeki dosya yolu bilgileri hala anlık görüntüdeki bu veritabanı dosyalarının tek geçerli yolları olan eski fiziksel yolları temel alır.

Restore

Değişiklik geri yükleme sırasında, istek sahibinin SQL yazara geri verdiği yedekleme meta verileri yedekleme türü bilgilerini içerir. Bu nedenle, SQL yazıcıdan özel bir işlem yapılması gerekmez. SQL Server bunun bir diferansiyel geri yükleme olduğunu kendi kendine anlar. SQL Server, bu tür bir değişiklik geri yüklemesini VSS aracılığıyla gerçekleştirilmeyecek yerel bir değişiklik geri yüklemesine karşı olduğu gibi işler.

Geri yükleme öncesi aşama

Bu aşamada SQL Server, değişiklik yedeğinin dosya meta verilerine göre tüm dosyaları uygun boyuta yeniden boyutlandırıyor. Dosya büyütüldiyse, SQL Server büyütülen kısmı sıfırlar. Yeni bir dosyanın oluşturulması gerekiyorsa (temel alındıktan sonra oluşturulduysa), SQL Server yeni dosyayı sıfırlar. Ayrıca, yedekleme uygulamasının yedekleme medyasından geri yüklenen verilerle dosyaların üzerine yazabilmesi için tüm dosya tanıtıcılarını kapatır.

Dosyaları geri yükleme

İstemci, kısmi dosya belirtimine göre dosyaları geri yüklemelidir. Veriler, yazıcı meta verilerinde depolanan kısmi dosya belirtiminde belirtilen veritabanı dosyasının uzaklığı/aralığına geri yüklenmelidir.

Veritabanı dosyasını ekleme/bırakma/genişletme/daraltma/mantıksal-yeniden adlandırma/fiziksel-yeniden adlandırma işlemleri, geri yükleme sırasında ilginç sorun giderme senaryoları oluşturur.

Tam taban alındıktan sonra bir veritabanı dosyası eklendiyse

Bu tür dosyalar, geri yükleme hazırlama aşamasında SQL Server tarafından önceden oluşturulmuş olmalıdır. Doğru boyuta genişletilip sıfırlandıklarına emin olunması gerekirdi. İstemci yalnızca verileri kısmi spesifikasyona göre yerleştirmelidir (kısmi spesifikasyon ayrılan tüm kapsamları içerir).

Tam yedek alındıktan sonra bir veritabanı dosyası silindiyse

SQL Server'ın sağladığı kısmi bilgiler, bu tür dosya bırakma işlemleri için herhangi bir izleme bilgisi içermez. SQL Server, geri yüklenen dosyalar meta verilerini mevcut kapsayıcılarla karşılaştırarak ve aslında silerek silinecek dosyaları algılamaktan sorumludur. Bu işlem, hazırlık adımı olarak geri yükleme işleminden önce gerçekleştirilir.

Tam taban alındığından bu yana bir veritabanı dosyası büyüdüyse

Bu tür dosyalar, geri yükleme hazırlama aşamasında SQL Server tarafından doğru boyuta genişletilmelidir. Genişletilmiş bölge SQL Server tarafından da sıfırlanmalıdır. Bu nedenle istemci, verileri kısmi belirtime göre genişletilmiş bölgede bile güvenli bir şekilde yerleştirebilir. Kısmi bilgiler alındıktan sonra dosya büyütüldüyse, büyütülen bölgedeki değişiklikler, fark yedeğiyle birlikte yedeklenen günlüğün yeniden yürütülmesiyle geri yüklenir.

Tam taban alındığından bu yana veritabanı dosyası küçülmüşse

SQL Server, dosyayı meta veriye göre gerekli boyuta bölmekle sorumludur. Bu işlem, hazırlık adımı olarak geri yükleme işleminden önce gerçekleştirilir.

Veritabanı dosyası, tam yedek alındığından beri mantıksal olarak yeniden adlandırıldıysa

Mantıksal ad, yazar meta veri belgesinde veya yedekleme bileşeni belgesinde görünmediğinden, bu geri yüklemeyi etkilemez. İstemci, değişikliği sistem kataloğu bilgilerini içeren birincil veritabanı dosyasına uyguladığında mantıksal ad değişikliği geri yüklenir.

Tam taban alındığından bu yana bir veritabanı dosyası fiziksel olarak yeniden adlandırıldıysa

Değişiklik yedeklemesi zamanına kadar yeniden adlandırma etkili olmadıysa, istemci verileri eski konuma geri yüklemeye devam eder. Geri yükleme sonrasında veritabanının yeniden başlatılması, fiziksel yeniden adlandırmanın etkili olmasına neden olur. Değişiklik yedeklemesi zamanına kadar fiziksel dosya yeniden adlandırması zaten etkili olmuşsa, varsa kısmi veriler yeni fiziksel yoldan yedeklenmiştir.

Geri yükleme sonrası

Geri yükleme sonrası olayları sırasında, SQL yazıcı veritabanının normal yineleme işlemini ve kurtarmasını (olarak ayarlandıysa SetAdditionalRestores()False) gerçekleştirir.

Tam metin katalogları için farklı yedekleme ve geri yükleme

SQL Server tam metin katalogları, veritabanı dosyalarının geri kalanıyla birlikte yedeklenmesi veya geri yüklenmesi gereken veritabanı kaynaklarının bir parçasıdır. Değişiklik yedeği, tam metin kataloğu için zaman damgasına dayalıdır. SQL Server VSS değişiklik yedekleme ve geri yükleme tek bir temel yedeklemeye sahiptir. Başka bir deyişle, farklı kapsayıcılar için farklı temeller yoktur. VSS tam metin kataloğu yedeklemesi için bu, tüm tam metin kataloğu kapsayıcıları için değişiklik yedeklemesinin, tam metin kataloğu kapsayıcısı başına bir kez damga tabanının bulunduğu yerel SQL Server değişiklik yedeklemesi durumundan farklı olarak tek zaman damgası tabanlı olduğu anlamına gelir.

VSS'de bu zaman damgası, tam yedekleme sırasında ayarlanan ve sonraki değişiklik yedeklemesi sırasında kullanılan bileşen genelinde bir özellik olarak ifade edilir.

OnIdentify

OnIdentify içinde, SQL yazıcısı değeri ayarlamak için IVssCreateWriterMetadata::SetBackupSchema() öğesini çağırır VSS_BS_TIMESTAMPED. Bu, yedekleme uygulamasına diferansiyel tabanının yönetiminin SQL yazıcıya ait olduğunu gösterir.

Temel zaman damgasını ayarlama

Temel zaman damgası tam yedekleme sırasında ayarlanır. İçinde OnPostSnapshot() yazar, zaman damgasını yedekleme belgesindeki komponentle depolamak için IVssComponent::SetBackupStamp() çağırır.

Diferansiyel yedekleme

Yedekleme uygulaması bu zaman damgasını temel tam yedeklemeden alır ve önceki temel yedeklemeden temel damgayı almak üzere çağırarak IVssComponent::GetBackupStamp() zaman damgasını yazıcı için kullanılabilir hale getirir. Ardından IVssBackupComponent::SetPreviousBackupStamp() çağrılarak yazarın kullanımına sunuluyor. Yazıcı daha sonra IVssComponent::GetPreviousBackupStamp() öğesini çağırarak damgayı alır ve bu damgayı IVssComponent::AddDifferencedFilesByLastModifyTime() için kullanılan bir zaman damgasına çevirir.

Diferansiyel yedekleme sırasında yedekleme uygulamasının sorumluluğu

Değişiklik yedeklemesi sırasında yedekleme uygulaması şunların sorumluluğundadır:

  • Son değiştirilen zaman damgası bileşendeki dosya kümesi için son değiştirme zamanı tarafından belirtilen zaman damgasından büyük olan tüm dosyaları (dosyanın tamamı) yedekleme.

  • Silinen dosyaları izleme ve algılama.

Diferansiyel geri yükleme sırasında yedekleme uygulamasının sorumlulukları

Değişiklik geri yüklemesi sırasında yedekleme uygulaması şunların sorumluluğundadır:

  • Henüz yoksa yeni bir dosya oluşturarak veya zaten varsa var olan bir dosyanın üzerine yazarak, yedeklenen tüm dosyaların geri yükleme işlemi.

  • Geri yüklenen dosya mevcut dosyadan daha büyükse, içeriği yerleştirmeden önce dosyayı büyütme.

  • Geri yüklenen dosya mevcut dosyadan daha küçükse, dosyayı geri yüklenen dosyanın boyutuyla aynı boyuta keserek.

  • Silinmesi gereken tüm dosyaları silme; başka bir ifadeyle, değişiklik yedeklemesinin belirli bir noktasında mevcut olmaması gereken dosyalardır.

Yalnızca kopya yedekleme

Bazen özel bir amaca yönelik bir yedekleme almak gerekir. Örneğin, test amacıyla veritabanının bir kopyasını oluşturmanız gerekebilir. Bu yedekleme, veritabanı için genel yedekleme ve geri yükleme yordamlarını etkilememelidir. seçeneğinin COPY_ONLY kullanılması, yedeklemenin bant dışı yapıldığını ve normal yedekleme sırasını etkilememesi gerektiğini belirtir. SQL yazıcı, SQL Server örnekleriyle yalnızca kopya yedekleme türünü destekler.

Yedekleme bulma aşamasında, SQL Writer yalnızca kopyalama yedeklemesi yapabilme yeteneğini, IVssCreateWriterMetadata::SetBackupSchema çağrısını kullanarak desteklenen yedekleme şeması seçeneğini VSS_BS_COPY ayarlamak suretiyle belirtir. İstek sahibi, VSS_BACKUP_TYPE seçeneğini VSS_BT_COPY, IVssBackupComponents::SetBackupState çağrısında yalnızca kopya yedekleme türü olarak ayarlayabilir.

Yalnızca kopya yedekleme seçildiğinde, disk üzerindeki dosyaların her dosyanın yedekleme geçmişinin durumundan bağımsız olarak bir yedekleme ortamına (istek sahibi tarafından) kopyalandığını varsayılır. SQL Server yedekleme geçmişini güncelleştirmez. Bu yedekleme türü, daha fazla değişiklik yedekleme işlemi için temel bir yedekleme oluşturmaz ve ayrıca önceki değişiklik yedeklemelerinin geçmişini rahatsız etmez.

Taşıma ile geri yükleme

VSS, istek sahibinin (yedekleme uygulaması) çağrıyı kullanarak yeni bir geri yükleme hedefi belirtmesine IVssComponent::SetNewTarget olanak tanır. Hem PreRestore() hem de PostRestore() içinde, SQL yazar en az bir yeni hedef belirtilip belirtilmediğini denetler. Gerçek dosya geri yükleme/kopyalama süresi boyunca dosyaları yeni konuma fiziksel olarak kopyalamak yedekleme uygulamasının sorumluluğundadır.

Yedekleme uygulamasının yalnızca fiziksel yol için yeni hedefler belirtmesine izin verilir, ancak dosya belirtimi belirtilmemiştir. Örneğin, konumunda c:\data\test.mdfbulunan bir veritabanı dosyası için gerçek dosya adı test.mdf değiştirilemez. Yalnızca yol c:\data değiştirilebilir. VSS'deki dosya belirtimi "*" ve yol belirtimi c:\ftdata\foo olduğundan, c:\ftdata\foo konumunda bulunan bir tam metin katalog kapsayıcısının yolu tamamen değiştirilebilir.

Veritabanını yeniden adlandırma

Özellikle veritabanı özgün veritabanıyla yan yana geri yüklenecekse, istek sahibinin yeni bir adla SQL Server veritabanını geri yüklemesi gerekebilir. Bu seçenek, VSS çağrısı < (>parametresinde) kullanılarak özel bir geri yükleme seçeneği "Yeni Bileşen Adı" = IVssBackupComponents::SetRestoreOptions()"Yeni Ad"wszRestoreOptions olarak ayarlanarak geri yükleme işlemi sırasında istek sahibi tarafından belirtilebilir.

SQL yazıcısı, Yeni Bileşen Adı değerinin tüm içeriğini alır ve geri yüklenen veritabanı için yeni ad olarak kullanır. Hiçbir seçenek belirtilmezse, SQL Server veritabanını özgün adıyla (bileşen adı) geri yükler.

Uyarı

SQL yazıcısı şu anda bir veritabanını yeni bir örneğe taşımak için Örnekler Arasında Yeniden Adlandır'ı desteklememektedir.

Otomatik kurtarılan anlık görüntüler

Genellikle VSS çerçevesi kullanılarak alınan SQL Server veritabanının anlık görüntüsü kurtarılmamış durumdadır. Anlık görüntüdeki verilere, uçuş içi işlemleri geri almak ve veritabanını tutarlı bir duruma getirmek için kurtarma aşamasından geçmeden önce güvenli bir şekilde erişilemiyor. Anlık görüntü salt okunur durumda olduğundan, veritabanı eklenerek normal yöntemle kurtarılamaz.

Anlık görüntü oluşturma işleminin bir parçası olarak anlık görüntüleri otomatik olarak kurtarabilirsiniz. Yazıcı meta veri belgesinin bir parçası olarak, SQL yazıcısı, veritabanına erişilmeden önce anlık görüntüdeki veritabanı için kurtarma gerçekleştirilmesi gerektiğini belirten bileşen bayrağını VSS_CF_APP_ROLLBACK_RECOVERY olarak belirtir. Anlık görüntü kümesi belirtilirken, istek sahibi, anlık görüntünün bir uygulama geri alma anlık görüntüsü (bu, anlık görüntüdeki tüm veritabanı dosyalarının uygulama kullanımı için tutarlı bir durumda olması gerektiği anlamına gelir) veya bir yedekleme anlık görüntüsü (sistem hatası durumunda daha sonra geri yüklenmek üzere veriyi yedeklemek için kullanılan bir anlık görüntü) olması gerektiğini belirtebilir.

İstek sahibi, bu bileşenin yedekleme dışı bir amaç için yedeklendiğini belirtmek adına VSS_VOLSNAP_ATTR_ROLLBACK_RECOVERY ayarlanmalıdır. VSS daha sonra VSS_CF_APP_ROLLBACK_RECOVERY seçili bileşene ilişkin belirtilen SQL yazıcısını VSS_VOLSNAP_ATTR_ROLLBACK_RECOVERY ile ilişkilendirir ve otomatik kurtarmanın gerçekleştiğini belirler. VSS, anlık görüntüyü sınırlı bir süre için yazılabilir hale getirir ve biti VSS_VOLSNAP_ATTR_AUTORECOVERY otomatik olarak anlık görüntü bağlamı içine ekler.

SQL Server'da otomatik kurtarma yalnızca uygulama geri alma anlık görüntülerine uygulanmalıdır ancak yedekleme anlık görüntüleri için uygulanmamalıdır. Uygulama geri alma anlık görüntüleri için, SQL yazıcısı tarafından PostSnapShotevent sırasında bir otomatik kurtarma işlemi başlatılır. Bu işlem, anlık görüntü kümesinde açıkça seçilen (istek sahibi tarafından) her SQL Server veritabanı için aşağıdakileri yapar:

  • Anlık görüntü veritabanını özgün SQL Server örneğine (yani özgün veritabanının eklendiği örneğe) ekleyin.

  • Veritabanını kurtarın (bu, "ekleme" işleminin bir parçası olarak gerçekleşir).

  • Günlük dosyalarını küçültme.

    Bu, VSS sağlayıcısı bir yazılım sağlayıcısıysa, VSS çerçevesi tarafından yapılması gereken gereksiz yazma kopyalama miktarını azaltır. Günlük dosyalarını küçültmek varsayılan davranıştır. Bu, değeri aşağıdaki kayıt defteri anahtarı 1olarak ayarlanarak devre dışı bırakılabilir.

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLWriter\Settings\DisableLogShrink
    

    Çevrimiçi veritabanında bir sorunu düzeltmek amacıyla, belirli bir sayfadaki (belirli bir zamanda) verileri günlükten dışa aktarmak için anlık görüntü kullanılabilir. Bu tür senaryolarda bu işlem yararlı olabilir.

  • Veritabanını ayırma.

Artık sorgu için ekleyebileceğiniz tutarlı ve kurtarılmış bir anlık görüntü vardır.

Çok veritabanılı işlemler

SQL Server'ın eski sürümlerinde, anlık görüntü veritabanları bazen bazı uçuş içi çok veritabanılı işlemler içerebilir. Kurtarma işlemi sırasında SQL yazıcısı veritabanını Varsayılan Durdurma seçeneğiyle anlık görüntülere ekler. Bu, henüz işlenmeyen çok veritabanılı işlemleri (İşlemeye Hazır durumundaki işlemler dahil) geri alır. Bu, anlık görüntü kümesindeki veritabanları arasında bazı tutarsızlıklara neden olabilir.

Örneğin, A ve B veritabanlarını göz önünde bulundurun. Bu iki veritabanı arasında dağıtılmış bir işlem vardır ve bu işlem A veritabanında kaydedilmiş durumda ve B veritabanında İşlemeye Hazır durumundadır. Otomatik kurtarma işleminin bir parçası olarak bu işlem A veritabanında işlenir ve B veritabanında geri alınır. Bu, anlık görüntü kümesinde bazı tutarsızlıklara neden olabilir.

Windows'un daha yeni sürümleri, SQL Server örnekleri genelinde veritabanlarını kapsayan işlemler için bu tutarsızlık sorununu düzelten geliştirilmiş bir Microsoft Dağıtılmış İşlem Düzenleyicisi (MS DTC) bileşenine sahiptir. SQL Server'ın daha yeni sürümleri, SQL Server örneğindeki veritabanlarını kapsayan işlemler için bu tutarsızlıkları düzeltir.

Otomatik geri kurtarılan anlık görüntüler için güvenlik etkileri

VSS anlık görüntüleri için, otomatik kurtarmadan sonra dosyalar yalnızca SQL Server hesabının ait olduğu özel yerleşik gruba erişime izin vermek için Erişim Denetim Listeleri (ACL' ler) kullanılarak güvenli hale getirilir. Bu, kutu yöneticisinin veya özel grubun üyelerinin veritabanını ekleyebileceği anlamına gelir. Veritabanı dosyalarının anlık görüntüye eklenmesini isteyen istemcinin Builtin/Administrators veya SQL Server hesabının üyesi olması gerekir.

Basit kurtarma modeli kullanıcı veritabanları

master Veritabanı, basit kurtarma modelini kullanan kullanıcı veritabanlarıyla birlikte geri yüklenirse, kullanıcı veritabanları veritabanıyla aynı teknikle master geri yüklenebilir: örnek kapatıldığında birimleri kopyalamanız veya bağlamanız yeter. SQL örneği başlatıldığında her şey kurtarılır.

Kullanıcı veritabanlarını ileri sarma

Kullanıcı veritabanları, master veritabanı kurtarma işlemi ile birlikte kurtarılıp ileriye taşınacaksa, örneklem başlatılmamalı ve master ile kullanıcı veritabanları birlikte kurtarılmamalıdır.

Yordam aşağıdaki gibidir:

  1. SQL Server örneğinin durduruldığından emin olun.

  2. Geri yüklemeyi iki aşamada gerçekleştirin.

    1. VsS aracılığıyla dosya kopyalama veya birim bağlama yoluyla aynı anda kurtarılması gereken sistem veritabanlarını ve kullanıcı veritabanlarını (basit kurtarma modelindeki kullanıcı veritabanları) geri yükleyin.

      • İleriye aktarılacak kullanıcı veritabanları sistem veritabanlarıyla aynı birimde değilse, bu birim şu anda geri getirilmemelidir. Bu senaryo yedeklemeden önce planlama gerektirir.

      • Kullanıcı veritabanları sistem veritabanlarıyla aynı birimdeyse, kullanıcı veritabanlarının SQL Server'dan gizlenmiş olması gerekir.

    2. -f parametresini kullanarak SQL Server örneğini başlatın. (Başlangıç seçeneği kullanılırken -f yalnızca master veritabanı geri yüklenebilir.)

      1. İleriye doğru taşınacak her veritabanı için bir ALTER DATABASE <database> SET OFFLINE (veya veritabanını ayırma) oluşturun.

      2. SQL Server örneğini durdurun.

      3. SQL Server örneğini başlatın (kullanıcı veritabanlarının ileriye dönük dosyaları SQL Server'da görünmez).

Kullanıcı veritabanlarını WITH NORECOVERYgeri yüklemek için VSS'yi, ek ileri sarma ile tam geri yükleme bölümünde açıklandığı gibi kullanın.

Yazıcı meta veri belgesi: Örnek

SQL Server örneği Instance1 üzerinde, Server1 makinesine ait DB1 adlı veritabanı aşağıdaki veritabanı / günlük dosyalarını içerir:

  • konumunda depolanan "birincil" adlı veritabanı dosyası c:\db\DB1.mdf
  • konumunda depolanan "ikincil" adlı veritabanı dosyası c:\db\DB1.ndf
  • konumunda depolanan "log" adlı veritabanı günlük dosyası c:\db\DB1.ldf
  • "Tam metin kataloğu 'foo', c:\db\ftdata\foo adlı dizinin altında depolanmıştır"
  • Dizin altında depolanan "bar" adlı tam metin kataloğu c:\db\ftdata\bar

Veritabanının yazıcı meta verileri aşağıdadır:

Veritabanı düzeyinde dosya grubu bileşeni

Birincil veritabanı dosyası:

ComponentType: VSS_CT_FILEGROUP
LogicalPath: "Server1\Instance1"
ComponentName: "DB1"
Caption: NULL
pbIcon: NULL
cbIcon: 0
bRestoreMetadata: FALSE
NotifyOnBackupComplete: TRUE
Selectable: TRUE
SelectableForRestore: TRUE
ComponentFlags: VSS_CF_APP_ROLLBACK_RECOVERY

İkincil veritabanı dosyası:

LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db"
FileSpec: "DB1.mdf"
Recursive: FALSE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED
Filegroup file
LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db"
FileSpec: "DB1.ndf"
Recursive: FALSE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED

Tam metin dosya günlüğü:

LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db"
FileSpec: "DB1.ldf"
Recursive: FALSE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED

Tam metin dosyası foo:

LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db\ftdata\foo"
FileSpec: "*"
Recursive: TRUE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED

Tam metin dosya çubuğu:

LogicalPath: "Server1\Instance1"
GroupName: "DB1"
Path: "c:\db\ftdata\bar"
FileSpec: "*"
Recursive: TRUE
AlternatePath: NULL
BackupTypeMask: VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED

Sunucu örneği makinedeki varsayılan örnekse mantıksal yol bir parçaya dönüşür: Server1.

Özel durumlar

Bu bölümde, SQL yazıcı tabanlı yedekleme ve geri yükleme işlemleri sırasında karşılaşılan bazı özel durumlar açıklanmaktadır.

Veritabanlarını otomatik kapat

Bileşen tabanlı olmayan yedeklemeler için, yırtık koşullar kontrol edilirken veritabanları otomatik olarak kapatılır, ancak otomatik kapatılan veritabanları yedekleme operasyonları sırasında doğrudan dondurulmaz.

Burada beklenen senaryo, birçok kapalı veritabanının mevcut olması ve anlık görüntünün maliyetini en aza indirmek istemenizdir. Otomatik kapatılan veritabanları genellikle kaynakların az olduğu alt düzey yapılandırmalarda kullanılır.

Dosya listesi

Her veritabanı için dosya listesi, Yedeklemeye Hazırlama olayından önceki bir numaralandırma adımı sırasında belirlenir. Veritabanı dosyalarının listesi numaralandırma ve donma arasında değişirse, uygulama dosya listesini yeniden denetlemediği sürece veritabanı yırtılabilir. Bu senaryo pek olası olmasa da satıcıların dikkate alınması gereken bir durumdur.

Durdurulan örnekler

Numaralandırma adımı gerçekleştiği sırada bir SQL Server örneği çalışmıyorsa, bu örneklerin veritabanlarından hiçbiri seçilemiyor demektir.

Bir örnek, numaralandırma ile Yedekleme için Hazırla olayı arasındaki aralıkta durursa, durdurulan örnekteki veritabanları yoksayılır.

Sistem ve kullanıcı veritabanları

SQL Server'daki sistem veritabanları, SQL Server'ın bir parçası olarak gönderilen ve yüklenen , masterve model veritabanlarını içerirmsdb. Bu bölümde, bu veritabanlarının VSS anlık görüntü yedekleme işleminde nasıl işlendiği açıklanmaktadır.

Veritabanı master yalnızca örneği durdurarak, veritabanı dosyalarını değiştirerek (yedekleme uygulaması tarafından yapılır) ve ardından örneği yeniden başlatarak geri yüklenebilir. İleri sarma mümkün değildir.

SQL yazıcı, örneği kapatmadan hem hem model de msdb veritabanlarının çevrimiçi olarak geri yüklenmesini destekler.