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 Azure Blob Depolamaurl'sine SQL Server yedekleme.

Sınırlamalar

  • BACKUP deyimine açık veya örtük bir işlemde izin verilmez.
  • SQL Server'ın daha yeni sürümleri 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 yedekleme yaparsanız başarı iletileri hızla birikerek büyük hata günlüklerine neden olur ve bu da diğer iletileri bulmayı 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. DBCC TRACEON ile izleme bayrakları ayarlama.

Güvenlik

TRUSTWORTHY bir veritabanı yedeklemesinde olarak OFF ayarlanır. olarak nasıl ayarlanacağı TRUSTWORTHYONhakkında bilgi için bkz. ALTER DATABASE SET options.

SQL Server 2012 (11.x) sürümünden PASSWORD itibaren yedekleme oluşturmak için ve MEDIAPASSWORD seçenekleri 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 cihazdan 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 kullanma

Uyarı

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

  1. 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. (Veritabanını sunucudaki başka bir veritabanıyla değiştirebilirsiniz.)

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

    Önemli

    Değişiklik veya işlem günlüğü yedeklemesi yapabilmeniz için ö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ü).

    Farklı bir cihaz seçmek için Yedekle listesini 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 ardından Kaldır'ı seçin. Var olan bir yedekleme hedefinin içeriğini görüntülemek için seçin ve ardından İçerikler'i seçin.

  8. (İsteğe bağlı) Medya Seçenekleri ve Yedekleme Seçenekleri sayfalarında diğer kullanılabilir ayarları gözden geçirin.

    Çeşitli yedekleme seçenekleri hakkında daha fazla bilgi için bkz . Veritabanını Yedekleme (Genel Sayfa), Veritabanını Yedekleme (Medya Seçenekleri sayfası)ve Veritabanını Yedekle (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.

  • (İsteğe bağlı) Salt kopya yedeklemesi oluşturmak için Yalnızca kopyalama 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 . Salt kopya yedeklemeleri. 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. Diske varsayılan konuma tam yedekleme

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

  1. 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.

Yedekleme oluşturma adımlarını gösteren ekran görüntüsü.

B. Diske bilinmeyen bir konuma tam yedekleme

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

  1. 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. Hedef bölümündeki Genel sayfasında, Yedekle listesinde Disk'i seçin.

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

  5. Add (Ekle) seçeneğini belirleyin. Yedekleme Hedefi Seç iletişim kutusu açılır.

  6. Dosya adı kutusuna geçerli bir yol ve dosya adı girin. 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.

Yedekleme konumu eklemeyi veya kaldırmayı gösteren ekran görüntüsü.

C. Şifrelenmiş yedekleme oluşturma

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

  1. 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 sertifikamaster oluşturmak için aşağıdaki komutları çalıştırın.

    -- Create the master key.
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
    
    -- 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 = '<password>'
    
    -- 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. Yedekleme Seçenekleri sayfasının Şifreleme bölümünde Yedeklemeyi şifrele'yi seçin.

  7. Algoritma listesinde AES 256'yı seçin.

  8. Sertifika veya Asimetrik anahtar listesinde öğesini seçinMyCertificate.

  9. Tamam'ı seçin.

Şifrelenmiş yedekleme oluşturma adımlarını gösteren ekran görüntüsü.

D. Azure Blob Depolama'ya yedekleme

Bu örnek, Azure Blob Depolama'ya tam veritabanı yedeklemesi SQLTestDB oluşturur. Örnek, blob kapsayıcısı olan bir depolama hesabınız olduğu varsayımıyla yazılmıştır. Örnek, paylaşılan erişim imzası oluşturur. Kapsayıcıda mevcut bir paylaşılan erişim imzası varsa örnek başarısız olur.

Depolama hesabında 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. 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 listesinde URL'yi seçin.

  4. Add (Ekle) seçeneğini belirleyin. 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ç kutusunda depolama hesabınızı seçin.

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

  9. Paylaşılan Erişim İlkesi Süre Sonu 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ı kutusunda, isterseniz yedekleme dosyasının adını değiştirin.

  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ı

Yönetilen kimlikleri kullanarak Blob Depolama'ya yedekleme şu anda desteklenmiyor.

Transact-SQL kullanma

deyimini çalıştırarak tam veritabanı yedeklemesi BACKUP DATABASE oluşturun ve şunları belirtin:

  • 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
<database> Yedeklenecek veritabanı.
<backup_device> [ , ...n ] Yedekleme işlemi için kullanılacak 1 ile 64 arası yedekleme cihazının listesini belirtir. Fiziksel bir yedekleme cihazı belirtebilir veya önceden tanımlanmışsa, buna karşılık gelen bir mantıksal yedekleme cihazı belirtebilirsiniz. Fiziksel yedekleme cihazı belirtmek için veya DISK seçeneğini kullanınTAPE:

{ DISK | TAPE } =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. Temel WITH seçeneklerden bazıları hakkında bilgi aşağıdadır.

İsteğe bağlı olarak, bir veya daha fazla WITH seçenek belirtin. Burada birkaç temel WITH seçenek açıklanmıştır. Tüm WITH seçenekler hakkında bilgi için bkz . YEDEKLEME.

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, yedekleme sıkıştırmasının yedeklemede 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 sertifikayı veya asimetrik anahtarı belirtir.
  • DESCRIPTION = { '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. Belirtilmezse NAME boş olur.

Varsayılan olarak, BACKUP yedeklemeyi mevcut bir medya kümesine ekler ve mevcut yedekleme kümelerini korur. Bu yapılandırmayı NOINIT açıkça belirtmek için seçeneğini kullanın. 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 şu FORMAT seçeneği kullanın:

FORMAT [ , MEDYAADI = { media_name | @media_name_variable } ] [ , MEDYAAÇIKLAMASI = { text | @text_variable } ]

Medyayı FORMAT ilk kez kullanırken veya var olan tüm verilerin üzerine yazmak istediğinizde 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 dikkatli olun çünkü bu seçenek 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, veritabanının tamamını SQLTestDB diske yedekler. Yeni bir medya kümesi oluşturmak için kullanır FORMAT .

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, veritabanının tamamını SQLTestDB banda yedekler. Yedeklemeyi önceki yedeklemelere ekler.

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 veritabanının tamamını SQLTestDB 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 kullanma

cmdlet'ini Backup-SqlDatabase kullanın. Tam veritabanı yedeklemesini açıkça belirtmek için parametresini -BackupAction varsayılan değeriyle Databasebelirtin. 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 örneğine bağlanmak için SQL Server Management Studio'nun (SSMS) 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 öğesini belirtir -BackupAction Database.

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, örnekteki veritabanının <myDatabase><myServer> Blob Depolamaya tam yedeğini oluşturur. Okuma, yazma ve liste haklarıyla saklanan erişim politikası oluşturulmuştur. SQL Server kimlik bilgisi, https://<myStorageAccount>.blob.core.windows.net/<myContainer>depolanan erişim ilkesiyle ilişkili bir paylaşılan erişim imzası kullanılarak oluşturulmuştur. komutu, konumu (URL) ve yedekleme dosyası adını belirtmek için parametresini kullanır $backupFile .

$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