Aracılığıyla paylaş


Tam Veritabanı Yedeklemesi Oluşturma

Şunlar için geçerlidir: SQL Server

Bu makalede SQL Server Management Studio, Transact-SQL veya PowerShell kullanarak SQL Server'da tam veritabanı yedeklemesi oluşturma işlemi açıklanmaktadır.

Daha fazla bilgi için bkz. Azure Blob Depolama ile SQL Server Yedekleme ve Geri Yükleme ve URL'ye SQL Server Yedekleme.

Sınırlamalar ve kısıtlamalar

  • BACKUP deyimine açık veya örtük bir işlemde izin verilmez.
  • SQL Server'ın daha yeni bir sürümü tarafından oluşturulan yedeklemeler, SQL Server'ın önceki sürümlerinde geri yüklenemez.

Yedekleme kavramlarına ve görevlerine genel bakış ve daha ayrıntılı bilgi için devam etmeden önce bkz. Yedeklemeye Genel Bakış (SQL Server).

Öneriler

  • Veritabanının boyutu arttıkça tam veritabanı yedeklemelerinin tamamlanması daha uzun sürer ve daha fazla depolama alanı gerektirir. Büyük veritabanları için, tam veritabanı yedeklemelerini bir dizi değişiklik veritabanı yedeklemesiyle tamamlayı göz önünde bulundurun.
  • sp_spaceused sistem saklı yordamını kullanarak tam veritabanı yedeklemesinin boyutunu tahmin edin.
  • Varsayılan olarak, her başarılı yedekleme işlemi SQL Server hata günlüğüne ve sistem olay günlüğüne bir girdi ekler. Sık sık yedeklerseniz başarı iletileri hızla birikerek büyük hata günlüklerine neden olur ve diğer iletilerin bulunmasını zorlaştırır. Böyle durumlarda, betiklerinizin hiçbiri bu girdilere bağımlı değilse izleme bayrağı 3226'yı kullanarak bu yedekleme günlüğü girdilerini gizleyebilirsiniz. Daha fazla bilgi için bkz. İzleme Bayrakları (Transact-SQL).

Güvenlik

TRUSTWORTHY , veritabanı yedeklemesinde KAPALI olarak ayarlanır. TRUSTWORTHY AÇIK olarak ayarlama hakkında bilgi için bkz. ALTER DATABASE SET Options (Transact-SQL).

SQL Server 2012 (11.x) sürümünden başlayarak , PAROLA ve MEDIAPASSWORD seçenekleri artık yedekleme oluşturmak için kullanılamaz. Yine de parolalarla oluşturulan yedeklemeleri geri yükleyebilirsiniz.

İzinler

BACKUP DATABASE ve BACKUP LOG izinleri varsayılan olarak sysadmin sabit sunucu rolünün üyeleriyle db_owner ve db_backupoperator sabit veritabanı rolleridir.

Yedekleme cihazının fiziksel dosyasındaki sahiplik ve izin sorunları yedekleme işlemini etkileyebilir. SQL Server hizmetinin cihazı okuması ve cihaza yazması gerekir. SQL Server hizmetinin çalıştırıldığı hesabın yedekleme cihazı üzerinde yazma izinleri olmalıdır. Ancak, sistem tablolarında bir yedekleme cihazı için giriş ekleyen sp_addumpdevice, dosya erişim izinlerini denetlemez. Yedekleme kullanılana veya geri yükleme denenene kadar yedekleme cihazının fiziksel dosyasındaki sorunlar görünmeyebilir.

SQL Server Management Studio'yu kullanma

Uyarı

SQL Server Management Studio kullanarak bir yedekleme görevi belirttiğinizde, Betik düğmesine tıklayıp bir betik hedefi seçerek ilgili Transact-SQL BACKUP betiğini oluşturabilirsiniz.

  1. Microsoft SQL Server Veritabanı Altyapısı'nın uygun örneğine bağlandıktan sonra Nesne Gezgini'nde sunucu ağacını genişletin.

  2. Veritabanları'yı genişletin ve bir kullanıcı veritabanı seçin veya Sistem Veritabanları'yı genişletin ve bir sistem veritabanı seçin.

  3. Yedeklemek istediğiniz veritabanına sağ tıklayın, Görevler'in üzerine gelin ve ardından Yedekle... seçeneğini belirleyin.

  4. Veritabanını Yedekle iletişim kutusunda, seçtiğiniz veritabanı açılan listede görünür (bunu sunucudaki başka bir veritabanına değiştirebilirsiniz).

  5. Yedekleme türü açılan listesinde bir yedekleme türü seçin. Varsayılan değer Tam'dır.

    Önemli

    Değişiklik veya işlem günlüğü yedeklemesi gerçekleştirmeden önce en az bir tam veritabanı yedeklemesi gerçekleştirmeniz gerekir.

  6. Yedekleme bileşeni'nin altında Veritabanı'yı seçin.

  7. Hedef bölümünde, yedekleme dosyası için varsayılan konumu gözden geçirin (.. /mssql/data klasörü).

    Yedekle açılan listesini farklı bir cihaz seçmek için kullanabilirsiniz. Yedekleme nesneleri ve veya hedefleri eklemek için Ekle'yi seçin. Daha yüksek yedekleme hızı için yedekleme kümesini birden çok dosya arasında ayırabilirsiniz.

    Yedekleme hedefini kaldırmak için, hedefi seçin ve Kaldır'ı seçin. Var olan bir yedekleme hedefinin içeriğini görüntülemek için bunu seçin ve İçerikler'i seçin.

  8. (isteğe bağlı) Medya Seçenekleri ve Yedekleme Seçenekleri sayfalarının altındaki diğer kullanılabilir ayarları gözden geçirin.

    Çeşitli yedekleme seçenekleri hakkında daha fazla bilgi için bkz. Genel sayfası, Medya seçenekleri sayfası ve Yedekleme seçenekleri sayfası.

  9. Yedeklemeyi başlatmak için Tamam'ı seçin.

  10. Yedekleme başarıyla tamamlandığında, TAMAM'ı seçerek SQL Server Management Studio iletişim kutusunu kapatın.

Ek bilgiler

  • Tam veritabanı yedeği oluşturduktan sonra değişiklik veritabanı yedeklemesi veya işlem günlüğü yedeklemesi oluşturabilirsiniz.

  • (isteğe bağlı) Yalnızca kopya yedekleme oluşturmak için Yalnızca kopya yedeklemesi onay kutusunu seçebilirsiniz. Yalnızca kopya yedekleme, geleneksel SQL Server yedeklemelerinden bağımsız bir SQL Server yedeklemesidir. Daha fazla bilgi için bkz. Copy-Only Yedeklemeler (SQL Server). Diferansiyel yedekleme türü için yalnızca kopya yedeklemesi mevcut değildir.

  • Bir URL'ye yedeklerseniz Medya Seçenekleri sayfasında Medya üzerine yazma seçeneği devre dışı bırakılır.

Örnekler

Aşağıdaki örnekler için aşağıdaki Transact-SQL koduyla bir test veritabanı oluşturun:

USE [master]
GO

CREATE DATABASE [SQLTestDB]
GO

USE [SQLTestDB]
GO
CREATE TABLE SQLTest
   (
      ID INT NOT NULL PRIMARY KEY,
      c1 VARCHAR(100) NOT NULL,
      dt1 DATETIME NOT NULL DEFAULT getdate()
   );
GO

USE [SQLTestDB]
GO

INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1')
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2')
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3')
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4')
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5')
GO

SELECT * FROM SQLTest
GO

A. Varsayılan konuma diske tam yedekleme

Bu örnekte veritabanı varsayılan SQLTestDB yedekleme konumunda diske yedeklenecektir.

  1. Microsoft SQL Server Veritabanı Altyapısı'nın uygun örneğine bağlandıktan sonra Nesne Gezgini'nde sunucu ağacını genişletin.

  2. Veritabanları'yı genişletin, sağ tıklayınSQLTestDB, Görevler'in üzerine gelin ve Ardından Yedekle... öğesini seçin.

  3. Tamam'ı seçin.

  4. Yedekleme başarıyla tamamlandığında, TAMAM'ı seçerek SQL Server Management Studio iletişim kutusunu kapatın.

SQL yedeklemesi alma

B. Varsayılan olmayan konuma diske tam yedekleme

Bu örnekte veritabanı SQLTestDB , seçtiğiniz bir konumda diske yedeklenecektir.

  1. Microsoft SQL Server Veritabanı Altyapısı'nın uygun örneğine bağlandıktan sonra Nesne Gezgini'nde sunucu ağacını genişletin.

  2. Veritabanları'yı genişletin, sağ tıklayınSQLTestDB, Görevler'in üzerine gelin ve Ardından Yedekle... öğesini seçin.

  3. Genel sayfasındaki Hedef bölümünde, Yedekleme konumu: açılan listesinden Disk'i seçin.

  4. Tüm mevcut yedekleme dosyaları kaldırılana kadar Kaldır'ı seçin.

  5. Ekle'yi seçtiğinizde Yedekleme Hedefi Seç iletişim kutusu açılır.

  6. Dosya adı metin kutusuna geçerli bir yol ve dosya adı girin ve bu dosyanın sınıflandırmasını basitleştirmek için uzantı olarak .bak kullanın.

  7. Tamam'ı seçin ve ardından yedeklemeyi başlatmak için yeniden Tamam'ı seçin.

  8. Yedekleme başarıyla tamamlandığında, TAMAM'ı seçerek SQL Server Management Studio iletişim kutusunu kapatın.

Veritabanı konumunu değiştirme

C. Şifrelenmiş yedekleme oluşturma

Bu örnekte veritabanı, SQLTestDB varsayılan yedekleme konumuna şifreleme ile yedeklenecektir.

  1. Microsoft SQL Server Veritabanı Altyapısı'nın uygun örneğine bağlandıktan sonra Nesne Gezgini'nde sunucu ağacını genişletin.

  2. Veritabanları'nı genişletin, Sistem Veritabanları'nı genişletin, öğesine sağ tıklayın masterve veritabanınıza bağlantı içeren bir sorgu penceresi açmak için SQLTestDB seçin.

  3. Veritabanı içinde bir veritabanı ana anahtarı ve sertifika oluşturmak için aşağıdaki komutları yürütebilirsinizmaster.

    -- Create the master key
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe';  
    
    -- If the master key already exists, open it in the same session that you create the certificate (see next step)
    OPEN MASTER KEY DECRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe'
    
    -- Create the certificate encrypted by the master key
    CREATE CERTIFICATE MyCertificate
    WITH SUBJECT = 'Backup Cert', EXPIRY_DATE = '20201031';  
    
  4. Nesne Gezgini'ndekiVeritabanları düğümünde sağ tıklayınSQLTestDB, Görevler'in üzerine gelin ve ardından Yedekle... öğesini seçin.

  5. Medya Seçenekleri sayfasındaki Medya üzerine yaz bölümünde Yeni bir medya kümesine yedekle'yi seçin ve var olan tüm yedekleme kümelerini silin.

  6. Şifreleme bölümündeki Yedekleme Seçenekleri sayfasında Yedeklemeyi şifrele onay kutusunu seçin.

  7. Algoritma açılır listesinden AES 256'yı seçin.

  8. Sertifika veya Asimetrik anahtar açılan listesinden öğesini seçinMyCertificate.

  9. Tamam'ı seçin.

Şifrelenmiş yedekleme

D. Azure Blob Depolama'ya yedekleme

Azure Blob Depolama'ya SQLTestDB veritabanının tam yedeğini oluşturur örnek. Örnekte blob kapsayıcısı olan bir depolama hesabınız olduğu varsayılır. Örnek, sizin için bir paylaşılan erişim imzası oluşturur; Kapsayıcının paylaşılan erişim imzası varsa bu örnek başarısız olur.

Depolama hesabında Azure Blob Depolama kapsayıcınız yoksa devam etmeden önce bir kapsayıcı oluşturun. Bkz . Genel amaçlı depolama hesabı oluşturma ve Kapsayıcı oluşturma.

  1. Microsoft SQL Server Veritabanı Altyapısı'nın uygun örneğine bağlandıktan sonra Nesne Gezgini'nde sunucu ağacını genişletin.

  2. Veritabanları'yı genişletin, sağ tıklayınSQLTestDB, Görevler'in üzerine gelin ve Ardından Yedekle... öğesini seçin.

  3. Genel sayfasındaki Hedef bölümünde Yedekle: açılır listesinden URL seçin.

  4. Ekle'yi seçtiğinizde Yedekleme Hedefi Seç iletişim kutusu açılır.

  5. Daha önce SQL Server Management Studio ile kullanmak istediğiniz Azure depolama kapsayıcısını kaydettiyseniz seçin. Aksi takdirde yeni bir kapsayıcı kaydetmek için Yeni kapsayıcı'yı seçin.

  6. Microsoft Aboneliğine Bağlan iletişim kutusunda hesabınızda oturum açın.

  7. Depolama Hesabı Seç açılan metin kutusunda depolama hesabınızı seçin.

  8. Blob Kapsayıcısı Seç açılan metin kutusunda blob kapsayıcınızı seçin.

  9. Paylaşılan Erişim İlkesi Süre Sonu açılan takvim kutusunda, bu örnekte oluşturduğunuz paylaşılan erişim ilkesi için bir son kullanma tarihi seçin.

  10. SQL Server Management Studio'da paylaşılan erişim imzası ve kimlik bilgisi oluşturmak için Kimlik Bilgisi Oluştur'u seçin.

  11. Tamam'ı seçerek Microsoft Aboneliğine Bağlan iletişim kutusunu kapatın.

  12. Yedekleme Dosyası metin kutusunda, yedekleme dosyasının adını değiştirin (isteğe bağlı).

  13. Yedekleme hedefi seçin iletişim kutusunu kapatmak için Tamam'ı seçin.

  14. Yedeklemeyi başlatmak için Tamam'ı seçin.

  15. Yedekleme başarıyla tamamlandığında, TAMAM'ı seçerek SQL Server Management Studio iletişim kutusunu kapatın.

Uyarı

Azure Blob Depolama'ya yedekleme şu anda yönetilen kimlikler kullanılarak desteklenmiyor.

Transact-SQL Kullanımı

Tam veritabanı yedeklemesini oluşturmak için BACKUP DATABASE komutunu yürüterek, aşağıdakileri belirterek tam veritabanı yedeklemesi oluşturun:

  • Yedeklenecek veritabanının adı.
  • Veritabanının tam yedeğinin yazıldığı yedek cihazı.

Tam veritabanı yedeklemesi için temel Transact-SQL söz dizimi şöyledir:

BACKUP DATABASE database TO backup_device [ ,... n ] [ WITH with_options [ ,... o ] ] ;

Seçenek Açıklama
veritabanı Yedeklenecek veritabanıdır.
backup_device [ ,... n ] Yedekleme işlemi için kullanılacak 1 ile 64 yedekleme cihazının listesini belirtir. Fiziksel bir yedekleme cihazı belirtebilir veya önceden tanımlanmışsa ilgili mantıksal yedekleme cihazını belirtebilirsiniz. Fiziksel yedekleme cihazı belirtmek için DISK veya TAPE seçeneğini kullanın:

{ DİSK | KASET } =physical_backup_device_name

Daha fazla bilgi için bkz . Yedekleme Cihazları (SQL Server).
WITH with_options [ ,... o ] Bir veya daha fazla seçenek belirtmek için kullanılır, o. Bazı temel seçenekler hakkında bilgi için 2. adıma bakın.

İsteğe bağlı olarak, bir veya daha fazla WITH seçeneği belirtin. Burada birkaç temel WITH seçeneği açıklanmıştır. Tüm WITH seçenekleri hakkında bilgi için YEDEKLEME (Transact-SQL)'e bakın.

Temel yedekleme kümesi WITH seçenekleri:

  • { SıKıŞTıRMA | NO_COMPRESSION }: Yalnızca SQL Server 2008 (10.0.x) Enterprise ve sonraki sürümlerinde, bu yedeklemede yedekleme sıkıştırmasının gerçekleştirilip gerçekleştirilmeyeceğini belirtir ve sunucu düzeyi varsayılanı geçersiz kılır.
  • ŞIFRELEME (ALGORITMA, SUNUCU SERTIFIKASı | ASIMETRIK ANAHTAR): Yalnızca SQL Server 2014 veya sonraki sürümlerinde kullanılacak şifreleme algoritmasını ve şifrelemenin güvenliğini sağlamak için kullanılacak Sertifika veya Asimetrik anahtarı belirtin.
  • AÇIKLAMA= { 'text' | @text_variable }: Yedekleme kümesini açıklayan serbest biçimli metni belirtir. Dize en fazla 255 karakter içerebilir.
  • AD = { backup_set_name | @backup_set_name_var }: Yedekleme kümesinin adını belirtir. Adlarda en fazla 128 karakter olabilir. AD belirtilmezse boş olur.

Varsayılan olarak, BACKUP yedeklemeyi mevcut bir medya kümesine ekler ve mevcut yedekleme kümelerini korur. Açıkça belirtmek için seçeneğini kullanın NOINIT . Mevcut yedekleme kümelerine ekleme hakkında bilgi için bkz. Medya Kümeleri, Medya Aileleri ve Yedekleme Kümeleri (SQL Server).

Yedekleme medyasını biçimlendirmek için FORMAT seçeneğini kullanın:

FORMAT [ , MEDIANAME = { media_name | @media_name_variable } ] [ , MEDIADESCRIPTION = { text | @text_variable } ]

Medyayı ilk kez kullanırken veya var olan tüm verilerin üzerine yazmak istediğinizde FORMAT yan tümcesini kullanın. İsteğe bağlı olarak, yeni medyaya bir medya adı ve açıklaması atayın.

Önemli

Deyiminin FORMAT yan tümcesini BACKUP kullanırken çok dikkatli olun çünkü bu işlem daha önce yedekleme medyası üzerinde depolanan tüm yedeklemeleri yok eder.

Örnekler

Aşağıdaki örnekler için aşağıdaki Transact-SQL koduyla bir test veritabanı oluşturun:

USE [master]
GO

CREATE DATABASE [SQLTestDB]
GO

USE [SQLTestDB]
GO
CREATE TABLE SQLTest (
   ID INT NOT NULL PRIMARY KEY,
   c1 VARCHAR(100) NOT NULL,
   dt1 DATETIME NOT NULL DEFAULT GETDATE()
)
GO

USE [SQLTestDB]
GO

INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1')
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2')
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3')
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4')
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5')
GO

SELECT * FROM SQLTest
GO

A. Disk cihazına yedekleme

Aşağıdaki örnek, SQLTestDB kullanarak yeni bir medya kümesi oluşturarak FORMAT veritabanının tamamını diske yedekler.

USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO DISK = 'c:\tmp\SQLTestDB.bak'
   WITH FORMAT,
      MEDIANAME = 'SQLServerBackups',
      NAME = 'Full Backup of SQLTestDB';
GO

B. Bant cihazına yedekleme

Aşağıdaki örnek, yedeği önceki yedeklere ekleyerek veritabanının tamamını SQLTestDB banda yedekler.

USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
   TO TAPE = '\\.\Tape0'
   WITH NOINIT,
      NAME = 'Full Backup of SQLTestDB';
GO

C. Mantıksal bant cihazına yedekleyin

Aşağıdaki örnek, bir bant sürücüsü için mantıksal yedekleme cihazı oluşturur. Örnek daha sonra tam SQLTestDB veritabanını bu cihaza yedekler.

-- Create a logical backup device,
-- SQLTestDB_Bak_Tape, for tape device \\.\tape0.
USE master;
GO
EXEC sp_addumpdevice 'tape', 'SQLTestDB_Bak_Tape', '\\.\tape0'; USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
   TO SQLTestDB_Bak_Tape
   WITH FORMAT,
      MEDIANAME = 'SQLTestDB_Bak_Tape',
      MEDIADESCRIPTION = '\\.\tape0',
      NAME = 'Full Backup of SQLTestDB';
GO

PowerShell'i kullanma

Backup-SqlDatabase cmdlet'ini kullanın. Tam veritabanı yedeklemesini açıkça belirtmek için - BackupAction parametresini varsayılan değeri olan Database olarak belirtin. Bu parametre tam veritabanı yedeklemeleri için isteğe bağlıdır.

Uyarı

Bu örnekler SqlServer modülünü gerektirir. Yüklenip yüklenmediğini belirlemek için komutunu çalıştırın Get-Module -Name SqlServer. Yüklemek için PowerShell'in yönetici oturumunda komutunu çalıştırın Install-Module -Name SqlServer .

Daha fazla bilgi için bkz. SQL Server PowerShell Sağlayıcısı.

Önemli

SQL Server yüklemesine bağlanmak için SQL Server Management Studio'nun içinden bir PowerShell penceresi açıyorsanız, SSMS'deki kimlik bilgileriniz PowerShell ile SQL Server örneğiniz arasında bağlantı kurmak için otomatik olarak kullanıldığından kimlik bilgisi bölümünü atlayabilirsiniz.

Örnekler

A. Tam yedekleme (yerel)

Aşağıdaki örnek, sunucu örneğinin <myDatabase>Computer\Instancevarsayılan yedekleme konumuna veritabanının tam veritabanı yedeğini oluşturur. İsteğe bağlı olarak, bu örnek -BackupAction Veritabanını belirtir.

Tam söz dizimi örnekleri için bkz . Backup-SqlDatabase.

$credential = Get-Credential

Backup-SqlDatabase -ServerInstance Computer[\Instance] -Database <myDatabase> -BackupAction Database -Credential $credential

B. Azure'a tam yedekleme

Aşağıdaki örnek, <myDatabase> örneği üzerindeki <myServer> veritabanının Azure Blob Depolama'ya tam yedeğini oluşturur. Okuma, yazma ve liste haklarıyla saklanan erişim politikası oluşturulmuştur. https://<myStorageAccount>.blob.core.windows.net/<myContainer>SQL Server kimlik bilgileri, Saklı Erişim İlkesi ile ilişkili bir Paylaşılan Erişim İmzası kullanılarak oluşturulmuştur. PowerShell komutu, konumu (URL) ve yedekleme dosyası adını belirtmek için BackupFile parametresini kullanır.

$credential = Get-Credential
$container = 'https://<myStorageAccount>blob.core.windows.net/<myContainer>'
$fileName = '<myDatabase>.bak'
$server = '<myServer>'
$database = '<myDatabase>'
$backupFile = $container + '/' + $fileName

Backup-SqlDatabase -ServerInstance $server -Database $database -BackupFile $backupFile -Credential $credential

İlgili görevler