Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri
Bu öğretici, SQL Server 2016 ve sonraki sürümlerde veri dosyaları ve yedeklemeler için Azure Blob Depolama'nın nasıl kullanılacağını anlamanıza yardımcı olur.
Azure Blob Depolama için SQL Server tümleştirme desteği, SQL Server 2012 Service Pack 1 CU2 geliştirmesi olarak başladı ve SQL Server 2014 ve SQL Server 2016 ile daha da geliştirildi. Bu özelliği kullanmanın işlevlerine ve avantajlarına genel bakış için bkz. Microsoft Azure 'de SQL Server Veri Dosyaları'nı.
Bu öğreticide, birden çok bölümde Azure Blob Depolama'da SQL Server Veri Dosyaları ile nasıl çalışabileceğiniz gösterilmektedir. Her bölüm belirli bir göreve odaklanır ve bölümler sırayla tamamlanmalıdır. İlk olarak, depolanan erişim ilkesi ve paylaşılan erişim imzası ile Blob Depolama'da yeni bir kapsayıcı oluşturmayı öğreneceksiniz. Ardından, SQL Server'ı Azure Blob Depolama ile tümleştirmek için BIR SQL Server kimlik bilgisi oluşturmayı öğreneceksiniz. Ardından, bir veritabanını Blob Depolama'ya yedekleyecek ve bir Azure sanal makinesine geri yükleyacaksınız. Ardından SQL Server dosya anlık görüntüsü işlem günlüğü yedeklemesini kullanarak belirli bir noktaya ve yeni bir veritabanına geri yükleyeceksiniz. Son olarak, öğreticide dosya anlık görüntüsü yedeklemelerini anlamanıza ve onlarla çalışmanıza yardımcı olmak amacıyla meta veriler sistemi saklı yordamları ve işlevlerinin kullanımı gösterilecektir.
Önkoşullar
Bu öğreticiyi tamamlamak için SQL Server yedekleme ve geri yükleme kavramları ve T-SQL söz dizimi hakkında bilgi sahibi olmanız gerekir.
Bu öğreticiyi kullanmak için bir Azure depolama hesabı, SQL Server Management Studio (SSMS), şirket içi SQL Server örneğine erişim, SQL Server 2016 veya sonraki bir sürümün örneğini çalıştıran bir Azure sanal makinesine (VM) erişim ve AdventureWorks2022
veritabanı gerekir. Ayrıca, BACKUP ve RESTORE komutlarını vermek için kullanılan hesabın, db_backupoperator veritabanı rolünde olması ve herhangi bir kimlik bilgisini değiştirme izinlerine sahip olması gerekir.
- ücretsiz Azure Hesabıedinin.
- Azure depolama hesabıoluşturun.
- SQL Server 2017 Developer Editionyükleyin.
- SQL Server çalıştıran Azure VM sağlama
- SQL Server Management Studioyükleyin.
- AdventureWorks örnek veritabanlarını indirin.
- Kullanıcı hesabını db_backupoperator rolüne atayın ve kimlik bilgisi izinlerini değiştirme izni verin.
Önemli
SQL Server, Azure Data Lake Storage desteklemez, bu öğretici için kullanılan depolama hesabında hiyerarşik ad alanı etkinleştirilmediğinden emin olun.
1 - Depolanan erişim ilkesi ve paylaşılan erişim depolama alanı oluşturma
Bu bölümde, depolanan erişim ilkesi kullanarak Azure Blob Depolama kapsayıcısında paylaşılan erişim imzası oluşturmak için bir Azure PowerShell betiği kullanacaksınız.
Bilgi
Bu betik, Azure PowerShell 5.0.10586 kullanılarak yazılır.
Paylaşılan erişim imzası, kapsayıcılara, bloblara, kuyruklara veya tablolara kısıtlı erişim hakları veren bir URI'dir. Depolanan erişim ilkesi, sunucu tarafındaki paylaşılan erişim imzaları üzerinde erişimi iptal etme, süresi dolma veya genişletme gibi ek bir denetim düzeyi sağlar. Bu yeni geliştirmeyi kullanırken, kapsayıcıda en az okuma, yazma ve liste haklarına sahip bir ilke oluşturmanız gerekir.
Azure PowerShell, Azure Depolama SDK'sı, Azure REST API veya üçüncü taraf bir yardımcı programı kullanarak depolanmış erişim ilkesi ve paylaşılan erişim imzası oluşturabilirsiniz. Bu öğreticide, bu görevi tamamlamak için Azure PowerShell betiğinin nasıl kullanılacağı gösterilmektedir. Betik Resource Manager dağıtım modelini kullanır ve aşağıdaki yeni kaynakları oluşturur
- Kaynak grubu
- Depolama hesabı
- Azure Blob Depolama kapsayıcısı
- SAS ilkesi
Bu betik, yukarıdaki kaynakların adlarını ve aşağıdaki gerekli giriş değerlerinin adlarını belirtmek için bir dizi değişken bildirerek başlar:
- Diğer kaynak nesnelerini adlandırmak için kullanılan ön ek adı
- Abonelik adı
- Veri merkezi konumu
Komut dosyası, 2 - paylaşılan erişim imzası kullanarak SQL Server kimlik bilgisi oluşturmabölümünde kullanmanız gereken uygun CREATE CREDENTIAL ifadesini oluşturarak tamamlanır. Bu deyim sizin için panonuza kopyalanır ve görmeniz için konsola gönderilir.
Kapsayıcıda ilke oluşturmak ve Paylaşılan Erişim İmzası (SAS) oluşturmak için şu adımları izleyin:
Windows PowerShell veya Windows PowerShell ISE'i açın (yukarıdaki sürüm gereksinimlerine bakın).
Aşağıdaki betiği düzenleyin ve yürütebilirsiniz:
# Define global variables for the script $prefixName = '<a prefix name>' # used as the prefix for the name for various objects $subscriptionID = '<your subscription ID>' # the ID of subscription name you will use $locationName = '<a data center location>' # the data center region you will use $storageAccountName= $prefixName + 'storage' # the storage account name you will create or use $containerName= $prefixName + 'container' # the storage container name to which you will attach the SAS policy with its SAS token $policyName = $prefixName + 'policy' # the name of the SAS policy # Set a variable for the name of the resource group you will create or use $resourceGroupName=$prefixName + 'rg' # Add an authenticated Azure account for use in the session Connect-AzAccount # Set the tenant, subscription and environment for use in the rest of Set-AzContext -SubscriptionId $subscriptionID # Create a new resource group - comment out this line to use an existing resource group New-AzResourceGroup -Name $resourceGroupName -Location $locationName # Create a new Azure Resource Manager storage account - comment out this line to use an existing Azure Resource Manager storage account New-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -Type Standard_RAGRS -Location $locationName # Get the access keys for the Azure Resource Manager storage account $accountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName # Create a new storage account context using an Azure Resource Manager storage account $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].Value # Creates a new container in Blob Storage $container = New-AzStorageContainer -Context $storageContext -Name $containerName # Sets up a Stored Access Policy and a Shared Access Signature for the new container $policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -StartTime $(Get-Date).ToUniversalTime().AddMinutes(-5) -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission rwld # Gets the Shared Access Signature for the policy $sas = New-AzStorageContainerSASToken -name $containerName -Policy $policyName -Context $storageContext Write-Host 'Shared Access Signature= '$($sas.Substring(1))'' # Sets the variables for the new container you just created $container = Get-AzStorageContainer -Context $storageContext -Name $containerName $cbc = $container.CloudBlobContainer # Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature Write-Host 'Credential T-SQL' $tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='Shared Access Signature', SECRET='{1}'" -f $cbc.Uri,$sas.Substring(1) $tSql | clip Write-Host $tSql # Once you're done with the tutorial, remove the resource group to clean up the resources. # Remove-AzResourceGroup -Name $resourceGroupName
Betik tamamlandıktan sonra CREATE CREDENTIAL ifadesi bir sonraki bölümde kullanılmak üzere panonuzda olacaktır.
2 - Paylaşılan erişim imzası kullanarak SQL Server kimlik bilgisi oluşturma
Bu bölümde, önceki adımda oluşturduğunuz Azure Blob Depolama kapsayıcısına yazmak ve bu kapsayıcıdan okumak için SQL Server tarafından kullanılacak güvenlik bilgilerini depolamak için bir kimlik bilgisi oluşturacaksınız.
SQL Server kimlik bilgileri, SQL Server dışındaki bir kaynağa bağlanmak için gereken kimlik doğrulama bilgilerini depolamak için kullanılan bir nesnedir. Kimlik bilgisi, Azure Blob Depolama kapsayıcısının URI yolunu ve bu kapsayıcı için paylaşılan erişim imzasını depolar.
SQL Server kimlik bilgileri oluşturmak için şu adımları izleyin:
SSMS'i başlatın.
Yeni bir sorgu penceresi açın ve şirket içi ortamınızdaki veritabanı altyapısının SQL Server örneğine bağlanın.
Yeni sorgu penceresine, bölüm 1'deki paylaşılan erişim imzasıyla birlikte CREATE CREDENTIAL ifadesini yapıştırın ve bu betiği çalıştırın.
Betik aşağıdaki gibi bir kodda görünecek.
/* Example: USE master CREATE CREDENTIAL [https://msfttutorial.blob.core.windows.net/containername] WITH IDENTITY='SHARED ACCESS SIGNATURE' , SECRET = 'sharedaccesssignature' GO */ USE master CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] -- this name must match the container path, start with https and must not contain a forward slash at the end WITH IDENTITY='SHARED ACCESS SIGNATURE' -- this is a mandatory string and should not be changed , SECRET = 'sharedaccesssignature' -- this is the shared access signature key that you obtained in section 1. GO
Kullanılabilir tüm kimlik bilgilerini görmek için aşağıdaki deyimi örneğinize bağlı bir sorgu penceresinde çalıştırabilirsiniz:
SELECT * from sys.credentials
Yeni bir sorgu penceresi açın ve Azure sanal makinenizdeki veritabanı altyapısının SQL Server örneğine bağlanın.
Yeni sorgu penceresinde, bölüm 1'den alınan paylaşılan erişim imzasıyla birlikte CREATE CREDENTIAL ifadesini yapıştırın ve bu betiği çalıştırın.
Kapsayıcıya erişimi olmasını istediğiniz tüm ek SQL Server örnekleri için 5. ve 6. adımları yineleyin.
3 - URL'ye veritabanı yedekleme
Bu bölümde, SQL Server örneğinizdeki AdventureWorks2022
veritabanını Bölüm 1'de oluşturduğunuz kapsayıcıyayedekleyeceksiniz.
Not
Bir SQL Server 2012 (11.x) SP1 CU2+ veritabanını veya SQL Server 2014 (12.x) veritabanını bu kapsayıcıya yedeklemek istiyorsanız, WITH CREDENTIAL
söz dizimini kullanarak URL'ye yedeklemek burada belgelenmiş kullanım dışı söz dizimini kullanabilirsiniz.
Veritabanını blob depolamaya yedeklemek için şu adımları izleyin:
SSMS'i başlatın.
Yeni bir sorgu penceresi açın ve Azure sanal makinenizdeki SQL Server örneğine bağlanın.
Aşağıdaki Transact-SQL betiğini kopyalayıp sorgu penceresine yapıştırın. URL'yi depolama hesabı adınız ve 1. bölümde belirttiğiniz kapsayıcı için uygun şekilde değiştirin ve ardından bu betiği çalıştırın.
-- To permit log backups, before the full database backup, modify the database to use the full recovery model. USE master; ALTER DATABASE AdventureWorks2022 SET RECOVERY FULL; -- Back up the full AdventureWorks2022 database to the container that you created in section 1 BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_onprem.bak'
Nesne Gezgini'yi açın ve depolama hesabınızı ve hesap anahtarınızı kullanarak Azure depolamaya bağlanın.
- kapsayıcılar genişletin, bölüm 1'de oluşturduğunuz kapsayıcıyı genişletin ve yukarıdaki 3. adımdaki yedeklemenin bu kapsayıcıda göründüğünü doğrulayın.
4 - VERITABANıNı URL'den sanal makineye geri yükleme
Bu bölümde, AdventureWorks2022
veritabanını Azure sanal makinenizdeki SQL Server örneğine geri yükleyacaksınız.
Not
Bu öğreticide kolaylık sağlamak amacıyla, veritabanı yedeklemesi için kullandığımız veriler ve günlük dosyaları için aynı kapsayıcıyı kullanıyoruz. Üretim ortamında büyük olasılıkla birden çok kapsayıcı ve sık sık birden çok veri dosyası da kullanabilirsiniz. Ayrıca, büyük bir veritabanını yedeklerken yedekleme performansını artırmak için yedeklemenizi birden çok bloba ayırmayı da düşünebilirsiniz.
AdventureWorks2022
veritabanını Azure Blob Depolama'dan Azure sanal makinenizdeki SQL Server örneğine geri yüklemek için şu adımları izleyin:
SSMS'i başlatın.
Yeni bir sorgu penceresi açın ve Azure sanal makinenizdeki veritabanı altyapısının SQL Server örneğine bağlanın.
Aşağıdaki Transact-SQL betiğini kopyalayıp sorgu penceresine yapıştırın. Depolama hesabı adınız ve 1. bölümde belirttiğiniz konteyner için URL'yi uygun şekilde değiştirin ve ardından bu komut dosyasını çalıştırın.
-- Restore AdventureWorks2022 from URL to SQL Server instance using Azure Blob Storage for database files RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_onprem.bak' WITH MOVE 'AdventureWorks2022_data' to 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_Data.mdf' ,MOVE 'AdventureWorks2022_log' to 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_Log.ldf' --, REPLACE
Nesne Gezgini'ne gidin ve Azure SQL Server örneğine bağlanın.
Nesne Gezgini'nde Veritabanları düğümünü genişletin ve
AdventureWorks2022
veritabanının geri yüklendiğini doğrulayın (düğümü gerektiği gibi yenileyin)- AdventureWorks2022sağ tıklayın ve Özellikleröğesini seçin.
- Dosyalar seçin ve iki veritabanı dosyasının yollarının Azure Blob Depolama konteynerinizdeki bloblara yönlendirdiğini doğrulayın (işiniz bittiğinde İptal Et'i seçin).
Nesne Gezgini'nde Azure depolamaya bağlanın.
- kapsayıcılar genişletin, bölüm 1'de oluşturduğunuz kapsayıcıyı genişletin ve yukarıdaki 3. adımdaki
AdventureWorks2022_Data.mdf
veAdventureWorks2022_Log.ldf
, bölüm 3'teki yedekleme dosyasıyla birlikte bu kapsayıcıda göründüğünü doğrulayın (düğümü gerektiği gibi yenileyin).
- kapsayıcılar genişletin, bölüm 1'de oluşturduğunuz kapsayıcıyı genişletin ve yukarıdaki 3. adımdaki
5 - Dosya anlık görüntüsü yedeklemesi kullanarak veritabanını yedekleme
Bu bölümde, Azure anlık görüntülerini kullanarak neredeyse anlık bir yedekleme gerçekleştirmek için Azure sanal makinenizdeki AdventureWorks2022
veritabanını dosya anlık yedeği yöntemiyle yedekleyeceksiniz. Dosya anlık görüntüsü yedeklemeleri hakkında daha fazla bilgi için bkz. File-Snapshot Azure'da Veritabanı Dosyaları için Yedeklemeler
Dosya anlık görüntüsü yedeklemesini kullanarak AdventureWorks2022
veritabanını yedeklemek için şu adımları izleyin:
SSMS'i başlatın.
Yeni bir sorgu penceresi açın ve Azure sanal makinenizdeki veritabanı altyapısının SQL Server örneğine bağlanın.
Aşağıdaki Transact-SQL betiği kopyalayıp sorgu penceresine yapıştırın ve yürütebilirsiniz (bu sorgu penceresini kapatmayın; bu betiği 5. adımda yeniden yürütürsiniz. Bu sistem saklı yordamı, belirli bir veritabanını oluşturan her dosya için mevcut dosya anlık görüntü yedeklemelerini görüntülemenizi sağlar. Bu veritabanı için hiçbir dosya anlık görüntüsü yedeklemesi olmadığını fark edeceksiniz.
-- Verify that no file snapshot backups exist SELECT * FROM sys.fn_db_backup_file_snapshots ('AdventureWorks2022');
Aşağıdaki Transact-SQL betiğini kopyalayıp sorgu penceresine yapıştırın. URL'yi, depolama hesabı adınız ve ilk bölümde belirttiğiniz kapsayıcıya uygun şekilde değiştirin ve ardından bu betiği yürütün. Bu yedeklemenin ne kadar hızlı gerçekleştiğine dikkat edin.
-- Backup the AdventureWorks2022 database with FILE_SNAPSHOT BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_Azure.bak' WITH FILE_SNAPSHOT;
4. adımdaki betiğin başarıyla yürütüldüğünü doğruladıktan sonra aşağıdaki betiği yeniden yürütür. 4. adımda dosya anlık görüntüsü yedekleme işleminin hem verilerin hem de günlük dosyasının dosya anlık görüntülerini oluşturduğuna dikkat edin.
-- Verify that two file-snapshot backups exist SELECT * FROM sys.fn_db_backup_file_snapshots ('AdventureWorks2022');
Nesne Gezgini'nde, Azure sanal makinenizdeki SQL Server örneğinizde Veritabanları düğümünü genişletin ve
AdventureWorks2022
veritabanının bu örneğe geri yüklendiğini doğrulayın (düğümü gerektiği gibi yenileyin).Nesne Gezgini'nde Azure depolamaya bağlanın.
kapsayıcılar genişletin, bölüm 1'de oluşturduğunuz kapsayıcıyı genişletin ve yukarıdaki 4. adımdaki
AdventureWorks2022_Azure.bak
bu kapsayıcıda görüntülendiğini ve bölüm 3'teki yedekleme dosyasının ve bölüm 4'teki veritabanı dosyalarının (düğümü gerektiği gibi yenileyin) göründüğünü doğrulayın.
6 - Dosya anlık görüntüsü yedeklemeyi kullanarak etkinlik ve yedekleme günlüğü oluşturma
Bu bölümde, AdventureWorks2022
veritabanında etkinlik oluşturacak ve dosya anlık görüntüsü yedeklemelerini kullanarak düzenli aralıklarla işlem günlüğü yedeklemeleri oluşturacaksınız. Dosya anlık görüntüsü yedeklemelerini kullanma hakkında daha fazla bilgi için bkz. File-Snapshot AzureVeritabanı Dosyaları için Yedeklemeler.
AdventureWorks2022
veritabanında etkinlik oluşturmak ve dosya anlık görüntüsü yedeklemelerini kullanarak düzenli aralıklarla işlem günlüğü yedeklemeleri oluşturmak için şu adımları izleyin:
SSMS'i başlatın.
İki yeni sorgu penceresi açın ve her birini Azure sanal makinenizdeki veritabanı altyapısının SQL Server örneğine bağlayın.
Aşağıdaki Transact-SQL betiğini kopyalayın, yapıştırın ve sorgu pencerelerinden birinde yürütun. 4. adımda yeni satır eklemeden önce
Production.Location
tablosunda 14 satır olduğuna dikkat edin.-- Verify row count at start SELECT COUNT (*) from AdventureWorks2022.Production.Location;
Aşağıdaki iki Transact-SQL betiklerini kopyalayıp iki ayrı sorgu penceresine yapıştırın. URL'yi depolama hesabı adınız ve 1. bölümde belirttiğiniz kapsayıcı için uygun şekilde değiştirin ve ardından bu betikleri ayrı sorgu pencerelerinde aynı anda yürütün. Bu komut dosyalarının tamamlanması yaklaşık yedi dakika sürer.
-- Insert 30,000 new rows into the Production.Location table in the AdventureWorks2022 database in batches of 75 DECLARE @count INT=1, @inner INT; WHILE @count < 400 BEGIN BEGIN TRAN; SET @inner =1; WHILE @inner <= 75 BEGIN; INSERT INTO AdventureWorks2022.Production.Location (Name, CostRate, Availability, ModifiedDate) VALUES (NEWID(), .5, 5.2, GETDATE()); SET @inner = @inner + 1; END; COMMIT; WAITFOR DELAY '00:00:01'; SET @count = @count + 1; END; SELECT COUNT (*) from AdventureWorks2022.Production.Location;
--take 7 transaction log backups with FILE_SNAPSHOT, one per minute, and include the row count and the execution time in the backup file name DECLARE @count INT=1, @device NVARCHAR(120), @numrows INT; WHILE @count <= 7 BEGIN SET @numrows = (SELECT COUNT (*) FROM AdventureWorks2022.Production.Location); SET @device = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/tutorial-' + CONVERT (varchar(10),@numrows) + '-' + FORMAT(GETDATE(), 'yyyyMMddHHmmss') + '.bak'; BACKUP LOG AdventureWorks2022 TO URL = @device WITH FILE_SNAPSHOT; SELECT * from sys.fn_db_backup_file_snapshots ('AdventureWorks2022'); WAITFOR DELAY '00:1:00'; SET @count = @count + 1; END;
İlk betiğin çıkışını gözden geçirin ve son satır sayısının 29.939 olduğuna dikkat edin.
İkinci betiğin çıktısını inceleyin ve BACKUP LOG ifadesi her çalıştırıldığında, günlük dosyası için bir ve veri dosyası için bir olmak üzere iki yeni dosya anlık görüntüsü oluşturulduğunu fark edin. Her veritabanı dosyası için toplam iki dosya anlık görüntüsü oluşturulmaktadır. İkinci betik tamamlandıktan sonra, her veritabanı dosyası için biri BACKUP DATABASE deyiminden, diğeri de BACKUP LOG deyiminin her yürütmesinden olmak üzere 8 adet, toplamda 16 dosya anlık görüntüsü olduğunu fark edeceksiniz.
Nesne Gezgini'nde Azure depolamaya bağlanın.
Kapsayıcıları genişletin, bölüm 1'de oluşturduğunuzkapsayıcısını genişletin ve yedi yeni yedekleme dosyası ile önceki bölümlerden veri dosyalarının görünüp görünmediğini doğrulayın (düğümü gerektiğinde yenileyin).
7 - Veritabanını belirli bir noktaya geri yükleme
Bu bölümde, AdventureWorks2022
veritabanını işlem günlüğü yedeklemelerinden ikisi arasında belirli bir noktaya geri yükleyeceksiniz.
Geleneksel yedeklemelerde, belirli bir noktaya geri yükleme gerçekleştirmek için tam veritabanı yedeğini, belki bir farklılık yedeğini ve geri yüklemek istediğiniz noktayı geçene kadar tüm işlem günlüğü dosyalarını kullanmanız gerekir. Anlık dosya yedeklemelerinde, yalnızca geri yüklemek istediğiniz zamanı belirleyen iki ardışık günlük yedekleme dosyasına ihtiyacınız vardır. Yalnızca iki günlük dosyası anlık görüntü yedekleme setine ihtiyacınız var çünkü her bir günlük yedeği, her bir veritabanı dosyasının (her veri dosyası ve günlük dosyası) bir dosya anlık görüntüsünü oluşturur.
Veritabanını dosya anlık görüntüsü yedekleme kümelerinden belirli bir noktaya geri yüklemek için şu adımları izleyin:
SSMS'i başlatın.
Yeni bir sorgu penceresi açın ve Azure sanal makinenizdeki veritabanı altyapısının SQL Server örneğine bağlanın.
Sorgu penceresine aşağıdaki Transact-SQL betiğini kopyalayın, yapıştırın ve yürütebilirsiniz.
Production.Location
tablosunun 4. adımda daha az satır bulunduğu bir noktaya geri yüklemeden önce 29.939 satırı olduğunu doğrulayın.-- Verify row count at start SELECT COUNT (*) from AdventureWorks2022.Production.Location
Aşağıdaki Transact-SQL betiğini kopyalayıp sorgu penceresine yapıştırın. İki bitişik günlük yedekleme dosyası seçin ve dosya adını bu betik için ihtiyacınız olacak tarih ve saate dönüştürün. URL'yi depolama hesabı adınız ve 1. bölümde belirttiğiniz kapsayıcı için uygun şekilde değiştirin, birinci ve ikinci yedekleme dosyası adlarını sağlayın, STOPAT süresini '26 Haziran 2018 01:48 PM' biçiminde sağlayın ve bu betiği yürütün. Bu betiğin tamamlanması birkaç dakika sürer
-- restore and recover to a point in time between the times of two transaction log backups, and then verify the row count ALTER DATABASE AdventureWorks2022 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<firstbackupfile>.bak' WITH NORECOVERY,REPLACE; RESTORE LOG AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<secondbackupfile>.bak' WITH RECOVERY, STOPAT = 'June 26, 2018 01:48 PM'; ALTER DATABASE AdventureWorks2022 set multi_user; -- get new count SELECT COUNT (*) FROM AdventureWorks2022.Production.Location ;
Çıktıyı gözden geçirin. Geri yükleme işleminden sonra satır sayısının 18.389 olduğuna dikkat edin; bu, günlük yedeklemesi 5 ile 6 arasında bir satır sayısıdır (satır sayınız değişir).
8 - Log yedeğinden yeni veritabanı olarak geri yükle
Bu bölümde, AdventureWorks2022
veritabanını bir dosya anlık görüntüsü işlem günlüğü yedeklemesinden yeni bir veritabanı olarak geri yükleyeceksiniz.
Bu senaryoda, iş analizi ve raporlama amacıyla farklı bir sanal makinede SQL Server örneğine geri yükleme gerçekleştiriyorsunuz. Farklı bir sanal makinede farklı bir örneğe geri yükleme, iş yükünü bu amaçla ayrılmış ve boyutlandırılmış bir sanal makineye boşaltarak kaynak gereksinimlerini işlem sisteminden kaldırır.
Dosya anlık görüntüsü yedeklemesi ile işlem günlüğü yedeklemesinden geri yükleme işlemi, geleneksel akış yedeklemelerinden çok daha hızlıdır. Geleneksel akış yedeklemelerinde, tam veritabanı yedeklemesini, belki de değişiklik yedeğini ve işlem günlüğü yedeklemelerinin bazılarını veya tümünü (veya yeni bir tam veritabanı yedeklemesini) kullanmanız gerekir. Ancak, dosya anlık görüntüsü günlük yedeklemelerinde yalnızca en son günlük yedeklemesine (veya başka bir günlük yedeklemesine veya belirli bir noktaya iki günlük yedekleme süresi arasındaki bir noktaya geri yükleme için diğer iki bitişik günlük yedeğine) ihtiyacınız vardır. Açık olmak gerekirse, her bir dosya anlık görüntü günlüğü yedeği, her veritabanı dosyasının (her veri dosyası ve günlük dosyası) bir dosya anlık görüntüsünü oluşturduğundan, yalnızca bir günlük dosyası-anlık görüntü yedekleme kümesine ihtiyacınız vardır.
Bir veritabanını, dosya anlık görüntüsü yedeklemesini kullanarak işlem günlüğü yedeklemesinden yeni bir veritabanına geri yüklemek için şu adımları izleyin:
SSMS'i başlatın.
Yeni bir sorgu penceresi açın ve bir Azure sanal makinesinde veritabanı altyapısının SQL Server örneğine bağlanın.
Not
Bu, önceki bölümlerde kullandığınızdan farklı bir Azure sanal makinesiyse, 2 - paylaşılan erişim imzası kullanarak SQL Server kimlik bilgisi oluşturmabölümündeki adımları izlediğinize emin olun. Farklı bir kapsayıcıya geri yüklemek istiyorsanız, 1 - Yeni kapsayıcı için depolanan erişim ilkesi ve paylaşılan erişim depolama oluşturma bölümündeki adımları izleyin.
Aşağıdaki Transact-SQL betiğini kopyalayıp sorgu penceresine yapıştırın. Kullanmak istediğiniz günlük yedekleme dosyasını seçin. URL'yi, depolama hesabı adınız ve 1. bölümde belirttiğiniz kapsayıcı için uygun şekilde değiştirin, günlük yedekleme dosyası adını sağlayın ve ardından bu betiği çalıştırın.
-- restore as a new database from a transaction log backup file RESTORE DATABASE AdventureWorks2022_EOM FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<logbackupfile.bak>' WITH MOVE 'AdventureWorks2022_data' to 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_EOM_Data.mdf' , MOVE 'AdventureWorks2022_log' to 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2022_EOM_Log.ldf' , RECOVERY --, REPLACE
Geri yüklemenin başarılı olduğunu doğrulamak için çıkışı gözden geçirin.
Nesne Gezgini'nde Azure depolamaya bağlanın.
Kapsayıcılargenişletin, birinci bölümde oluşturduğunuz kapsayıcıyı genişletin (gerekirse yenileyin) ve yeni veri ve günlük dosyalarının, önceki bölümlerdeki bloblarla birlikte kapsayıcıda göründüğünü doğrulayın.
9 - Yedekleme kümelerini ve dosya anlık görüntüsü yedeklemelerini yönetme
Bu bölümde, sp_delete_backup (Transact-SQL) sistem saklı yordamını kullanarak bir yedekleme kümesini sileceksiniz. Bu sistem saklı yordamı, bu yedekleme kümesiyle ilişkilendirilmiş her veritabanı dosyasındaki yedekleme dosyasını ve dosya anlık görüntüsünü siler.
Not
Yedekleme dosyasını Azure Blob Depolama kapsayıcısından silerek bir yedekleme kümesini silmeye çalışırsanız, yalnızca yedekleme dosyasının kendisini silersiniz; ilişkili dosya anlık görüntüleri kalır. Kendinizi bu senaryoda bulursanız, yalnız bırakılmış dosya anlık görüntülerinin URL'sini tanımlamak için sys.fn_db_backup_file_snapshots (Transact-SQL) sistem işlevini kullanın ve yalnız bırakılmış her dosya anlık görüntüsünü silmek için sistem saklı yordamı sp_delete_backup_file_snapshot (Transact-SQL) kullanın. Daha fazla bilgi için bkz. File-Snapshot Azure'daki Veritabanı Dosyaları İçin Yedeklemeler.
Bir dosya anlık görüntü yedekleme kümesini silmek için şu adımları izleyin:
SSMS'i başlatın.
Yeni bir sorgu penceresi açın ve Azure sanal makinenizdeki veritabanı altyapısının SQL Server örneğine (veya bu kapsayıcıda okuma ve yazma izinlerine sahip herhangi bir SQL Server örneğine) bağlanın.
Aşağıdaki Transact-SQL betiğini kopyalayıp sorgu penceresine yapıştırın. Silmek istediğiniz günlük yedeğini ve ilişkili dosya anlık görüntülerini seçin. URL'yi depolama hesabı adınıza ve 1. bölümde belirttiğiniz kapsayıcıya uygun şekilde değiştirin, günlük yedekleme dosyası adını girin ve bu betiği çalıştırın.
sys.sp_delete_backup 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/tutorial-21764-20181003205236.bak';
Nesne Gezgini'nde Azure depolamaya bağlanın.
Kapsayıcılargenişletin, 1. bölümde oluşturduğunuz kapsayıcıyı genişletin ve 3. adımda kullandığınız yedekleme dosyasının artık bu kapsayıcıda görünmediğini doğrulayın (gerekirse düğümü yenileyin).
İki dosya anlık görüntüsünün silindiğini doğrulamak için aşağıdaki Transact-SQL betiğini kopyalayıp sorgu penceresine yapıştırın ve yürütebilirsiniz.
-- verify that two file snapshots have been removed SELECT * from sys.fn_db_backup_file_snapshots ('AdventureWorks2022');
10 - Kaynakları kaldırma
Bu öğreticiyi tamamladıktan sonra ve kaynak tasarrufu yapmak için bu öğreticide oluşturulan kaynak grubunu sildiğinizden emin olun.
Kaynak grubunu silmek için aşağıdaki PowerShell kodunu çalıştırın:
# Define global variables for the script
$prefixName = '<prefix name>' # should be the same as the beginning of the tutorial
# Set a variable for the name of the resource group you will create or use
$resourceGroupName=$prefixName + 'rg'
# Adds an authenticated Azure account for use in the session
Connect-AzAccount
# Set the tenant, subscription and environment for use in the rest of
Set-AzContext -SubscriptionId $subscriptionID
# Remove the resource group
Remove-AzResourceGroup -Name $resourceGroupName
Sonraki adımlar
- Microsoft Azure'da SQL Server Veri Dosyaları
- Azure 'da Veritabanı Dosyaları içinFile-Snapshot Yedeklemeleri
- SQL Server'ı URL'ye yedekleme
- Paylaşılan Erişim İmzalarını , Bölüm 1: SAS Modeli Anlama
- Kapsayıcı oluştur
- Kapsayıcı ACL'lerini ayarlama
- Kapsayıcı ACL'lerini Al
- Kimlik Bilgileri (Veritabanı Motoru)
- CREATE CREDENTIAL (Transact-SQL)
- sys.credentials (Transact-SQL)
- sp_delete_backup (Transact-SQL)
- sys.fn_db_backup_file_snapshots (Transact-SQL)
- sp_delete_backup_file_snapshot (Transact-SQL)
- Azure 'da Veritabanı Dosyaları içinFile-Snapshot Yedeklemeleri