/*===================================================
| Demo: Backup Database On  Premisses no Azure     |
| testentes: Leonardo Fonseca / Sulamita Dantas  |
| Data: 13/05/21                                    |
===================================================*/
/*
-> Passos:
	-> Criar uma conta no azure
		-> Configurar a conta no azure:

			->  Criao da Storage account
				Selecione as dmeais opes corretas para o ambiente, pois pode impactar em custos e performance.
				Tipo da conta: General purpose,0
				Replication: Local onde ser armazenado o seu servio do blob storage 
				Create

			-> Criao de um container (pois  nele que ficam os backups armazenados):
			   Clique na storage account
			   Container: de um nome ao container
			   Add container:(criar um nome e por segurana deixar como privado)

			-> Copie a chave de acesso a conta de armazenamento do azure, pois para criar a credencial no sql, a mesma  necessria.
*/

USE MASTER

-- Demo 01: Backup Database On-Premise para Azure, via URL. (Credential acces key)

		CREATE CREDENTIAL teste
		WITH IDENTITY = 'teste'
		,SECRET = 'iANXLLJRhJu7H34pCcFao4ak4DkiSUuHzAvZ1v2dy0y4YM8vIa2E1E5rEUh7BNuXpLgBm38SbF/nYCr63XohyA=='

	
			
-- Verificando a credencial criada:
		
		SELECT * from sys.credentials
	

		BACKUP DATABASE  db_teste  --db_teste
		TO URL = 'https://teste.blob.core.windows.net/teste/db_teste.bak'  -- copiar o endereo do container e final do banco.bak
		WITH FORMAT, COMPRESSION, STATS = 10,CREDENTIAL ='teste'
		GO



-- Demo 02: Realizando o restore desse backup,  a partir do armazenamento do Azure:
	
-- podemos fazer o download do backup ou restaurar direto no azure.
-- painel gerenciamento do azure/blob storage/container/ download
		
		RESTORE DATABASE db_teste
		FROM URL = 'https://teste.blob.core.windows.net/teste/db_teste.bak'
		WITH REPLACE,STATS=5,CREDENTIAL ='teste'

--Obs: Para backups via url com token SAS, da erro, pois nao aceita. Sendo somente key.
	

-- Demo 03: Backup BD SQL no Azure, usando planos de manuteno: USANDO SAS

-- Mesma storag account
-- Mesmo container
-- Mesma Key


-- Usando PowerShell
		
			#import SQL Server module
			Import-Module SQLPS -DisableNameChecking		
			#you will need to fill this in with your own account settings
			$instanceName = "INSTANCIATESTE"
			$databaseName = "db_teste"
			$AzureStorageAccount = "teste"
			$blobContainer = "teste"
			$backupUrlContainer = "https://teste.blob.core.windows.net/teste/$blobContainer/"
			$primaryAccessKey = "teste"
			$storageAccount = "teste"
			$secureString = ConvertTo-SecureString $primaryAccessKey  -AsPlainText -Force
			$credentialName = "teste"			
			Backup-SqlDatabase -ServerInstance $instanceName -Database $databaseName -BackupContainer $backupUrlContainer -SqlCredential $credentialName -Compression On
