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 (13.x) 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.
SQL Server'da Azure Blob Depolama desteği SQL Server 2012 (11.x) Service Pack 1 CU2'de kullanıma sunulmuştur ve sonraki sürümlerde geliştirilmiştir. Bu özelliği kullanmanın işlevlerine ve avantajlarına genel bakış için bkz. Microsoft Azure'da SQL Server veri dosyaları.
Bu öğreticide, Azure Blob Depolama'daki SQL Server veri dosyalarıyla birden çok bölümde nasıl çalışabileceğiniz gösterilmektedir. Her bölüm belirli bir göreve odaklanır ve bölümleri sırayla tamamlamanız gerekir. İ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 SQL Server kimlik bilgileri oluşturmayı öğreneceksiniz. Ardından, veritabanını Blob Depolama'ya yedekler ve bir Azure sanal makinesine geri yüklersiniz. 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ükleyebilirsiniz. Son olarak, öğreticide dosya anlık görüntüsü yedeklemelerini anlamanıza ve bunlarla çalışmanıza yardımcı olmak için meta veri sistemi saklı yordamlarının ve işlevlerinin kullanımı gösterilmektedir.
Ö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 (13.x) veya sonraki bir sürümün örneğini çalıştıran bir Azure sanal makinesine (VM) erişim ve bir AdventureWorks2025 veritabanı gerekir. Ayrıca ve BACKUP komutlarını vermek RESTORE için kullanılan hesap, kimlik bilgisi izinlerini değiştirerek db_backupoperator veritabanı rolünde olmalıdır.
- ücretsiz Azure Hesabıedinin.
- Azure depolama hesabıoluşturun.
- SQL Server 2017 Developer Editionyükleyin.
- SQL Server çalıştıran bir Azure VM sağlayın.
- 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'ın desteklemiyor. Bu öğretici için kullanılan depolama hesabında hiyerarşik ad alanının 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.
Uyarı
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, önceki kaynakların adlarını ve aşağıdaki gerekli giriş değerlerinin adlarını belirtmek için birkaç değişken bildirerek başlar:
- Diğer kaynak nesnelerini adlandırmak için kullanılan ön ek adı
- Abonelik adı
- Veri merkezi konumu
Betik, CREATE CREDENTIAL bölümünde kullandığınız uygun deyimi oluşturarak tamamlar. 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 (önceki sürüm gereksinimlerine bakın).
Aşağıdaki betiği düzenleyin ve yürütin:
# 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 Set-Clipboard -Value $tSql Write-Host $tSql # Once you're done with the tutorial, remove the resource group to clean up the resources. # Remove-AzResourceGroup -Name $resourceGroupNameBetik tamamlandıktan sonra,
CREATE CREDENTIALdeyimi sonraki bölümde kullanmak üzere panonuzda yer alı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ılan 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 penceresinde, bölüm 1'deki paylaşılan erişim imzası ile deyimini yapıştırın
CREATE CREDENTIALve bu betiği yürütür.Betik aşağıdaki koda benzer.
/* 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://<storage-account>.blob.core.windows.net/<container-name>] -- 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. GOKullanı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'deki paylaşılan erişim imzası ile deyimini yapıştırın
CREATE CREDENTIALve bu betiği yürütür.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 veritabanını AdventureWorks2025 oluşturduğunuz kapsayıcıya yedeklersiniz.
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://<storage-account>.blob.core.windows.net/<container-name>/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 önceki 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, veritabanını Azure sanal makinenizdeki SQL Server örneğine geri yüklersiniz AdventureWorks2025 .
Uyarı
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ırız. Ü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.
AdventureWorks2025 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. 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.
-- Restore AdventureWorks2022 from URL to SQL Server instance using Azure Blob Storage for database files RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_onprem.bak' WITH MOVE 'AdventureWorks2022_data' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Data.mdf', MOVE 'AdventureWorks2022_log' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Log.ldf'; --, REPLACENesne Gezgini'ne gidin ve Azure SQL Server örneğine bağlanın.
Nesne Gezgini'nde Veritabanları düğümünü genişletin ve veritabanının
AdventureWorks2025geri yüklendiğini doğrulayın (düğümü gerektiği gibi yenileyin).AdventureWorks2025'e sağ tıklayın ve Özellikler'i 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 3. bölümdeki yedekleme dosyasıyla birlikte bu kapsayıcıda önceki 3. adımda ve
AdventureWorks2022_Data.mdföğesinin göründüğünü doğrulayınAdventureWorks2022_Log.ldf(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 3. bölümdeki yedekleme dosyasıyla birlikte bu kapsayıcıda önceki 3. adımda ve
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 anında yedekleme gerçekleştirmek için dosya anlık görüntü yedeklemesini kullanarak Azure sanal makinenizdeki veritabanını yedeklersiniz AdventureWorks2025 . 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 AdventureWorks2025 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ğini kopyalayın, yapıştırın ve sorgu penceresine yürütebilirsiniz (bu sorgu penceresini kapatmayın; bu betiği 5. adımda yeniden yürütürseniz). 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ı görebilirsiniz.
-- 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 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. 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://<storage-account>.blob.core.windows.net/<container-name>/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şlemi hem verilerin hem de günlük dosyasının dosya anlık görüntülerini oluşturdu.
-- 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
AdventureWorks2025veritabanı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 3. bölümdeki yedekleme dosyası ve bölüm 4'teki veritabanı dosyaları (düğümü gerektiği gibi yenileyin) ile birlikte bu kapsayıcıda önceki 4. adımda öğesinin göründüğünü doğrulayın
AdventureWorks2022_Azure.bak.
6 - Dosya anlık görüntüsü yedeklemeyi kullanarak etkinlik ve yedekleme günlüğü oluşturma
Bu bölümde, veritabanında etkinlik AdventureWorks2025 oluşturur ve dosya anlık görüntüsü yedeklemelerini kullanarak düzenli aralıklarla işlem günlüğü yedeklemeleri oluşturursunuz. Dosya anlık görüntüsü yedeklemelerini kullanma hakkında daha fazla bilgi için bkz. File-Snapshot AzureVeritabanı Dosyaları için Yedeklemeler.
AdventureWorks2025 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.
Production.Location4. adımda yeni satır eklemeden önce tabloda 14 satır vardır.-- 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 betiklerin tamamlanması birkaç dakika sürer.
-- Insert 30,000 new rows into the Production.Location table in the AdventureWorks2022 database in batches of 75 DECLARE @count AS INT = 1, @inner AS INT; WHILE @count < 400 BEGIN BEGIN TRANSACTION; 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 TRANSACTION; 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://<storage-account>.blob.core.windows.net/<container-name>/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ı gözden geçirin ve her bir veritabanı dosyası için toplam iki dosya anlık görüntüsü için, deyimin her
BACKUP LOGçalıştırıldığında günlük dosyasının bir dosya anlık görüntüsü ve veri dosyasının bir dosya anlık görüntüsü olmak üzere iki yeni dosya anlık görüntüsü oluşturulduğuna dikkat edin. İkinci betik tamamlandıktan sonra, artık her veritabanı dosyası için 8 olmak üzere toplam 16 dosya anlık görüntüsü olduğuna dikkat edin. Biri deyimindenBACKUP DATABASE, diğeri de deyiminBACKUP LOGher yürütmesi için.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 veritabanını işlem günlüğü yedeklemelerinden ikisi arasındaki belirli bir noktaya geri yükleyeceksiniz AdventureWorks2025 .
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.Locationtablosunun 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 olan 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, biçiminde zaman
STOPATsağlayınJune 26, 2018 01:48 PMve ardından bu betiği yürütür. 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://<storage-account>.blob.core.windows.net/<container-name>/<firstbackupfile>.bak' WITH NORECOVERY, REPLACE; RESTORE LOG AdventureWorks2022 FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<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ı 18.389'dur ve bu, günlük yedeklemesi 5 ile 6 arasında bir satır sayısıdır (satır sayınız değişebilir).
8 - Log yedeğinden yeni veritabanı olarak geri yükle
Bu bölümde, veritabanını bir dosya anlık görüntüsü işlem günlüğü yedeklemesinden yeni bir veritabanı olarak geri yüklersiniz AdventureWorks2025 .
Bu senaryoda, iş analizi ve raporlama amacıyla farklı bir sanal makinede SQL Server örneğine geri yükleme gerçekleştirıyorsunuz. 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üğü yedeklerinin 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.
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://<storage-account>.blob.core.windows.net/<container-name>/<logbackupfile.bak>' WITH MOVE 'AdventureWorks2022_data' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_EOM_Data.mdf', MOVE 'AdventureWorks2022_log' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_EOM_Log.ldf', RECOVERY; --, REPLACEGeri 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 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.
Uyarı
Azure Blob Depolama kapsayıcısından yedekleme dosyasını 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 sistem işlevini kullanın ve yalnız bırakılmış dosya anlık görüntülerini silmek için sp_delete_backup_file_snapshot sistem saklı yordamını 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ı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.
EXECUTE sys.sp_delete_backup 'https://<storage-account>.blob.core.windows.net/<container-name>/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
İlgili içerik
- Microsoft Azure'da SQL Server veri dosyaları
- Azure 'da Veritabanı Dosyaları içinFile-Snapshot Yedeklemeleri
- Azure Blob Depolama URL'sine SQL Server 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'sini Al
- Kimlik Bilgileri (Veritabanı Motoru)
- KREDİ GİRİŞİ OLUŞTUR (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)