DB migration with Azure PowerShell - azure

we are doing SQL Db migration with azure portal now I need to automate this task (by using Az powershell).
steps we are following for manual approach
first we need to restore a tempDB from production db.
from the tempDB I need to export bacpac file for the bd
then import a this bacpac file into UAT database
can any one explain how I achieve this with Az-power shell?
steps I followed currently, I have installed Az powershell module in my local, trying to explore Az.Sql API
but I didn't find any API for DB export

Assuming that by "restore a tempDB from production db" you mean that you want to create a temporary working copy of the production db, then the solution is as follows:
Use New-AzSqlDatabaseCopy to create a copy of the production db. (you can delete the copy later after you're done using it with Remove-AzSqlDatabase)
Use New-AzSqlDatabaseExport to export a .bacpac to a destination in an Azure Storage account.
Use New-AzSqlDatbaseImport to import a .bacpac from a source in an Azure Storage account.
EDIT:
Instead, if by "restore a tempDB from production db" you mean a genuine restore, then the command Restore-AzSqlDatabase is what you should use.

Related

Azure Serverless SQL server database backup/restore

I've created an azure **serverless ** sql database. It seems there is no way to backup/restore this type of databases. I know there is restore to a point in time feature, But I what to download and save database backups my self.
Is there a way to backup serverless azure sql databases?
1-) There is no Backup/restore option on the database right click
2-) I've tried to use BACKUP T-SQL with azure storage account and storage url from SSMS but this is not supported.
You can use the "export" functionality by accessing the specific database in your Azure Portal to get a copy of your DB.
You can rely on Azure SQL's integrated Backup funcionality by setting up your requirements by accessing your DB Server in you Azure Portal and selecting the "Backup" uption.
You can use SSMS (SQL Management Studio), right click on the DB in question, and select "Tasks" --> "Export Data-tier Application", which will return a .bacpac file with your database. NOTE: bacpac files are not quite the same as full .bak files. bacpac files are not aware of any transactions that may be being executed whilst the data is being dumped, which means that you could end up with some data corruption.
Export your database as bacpac to an Storage Account. We are using weekly exports of the database on Saturdays, with a retention of one year for long-term backups.
The export will trigger an auto-resume of the database if the database was auto-paused.
We use an Azure Automation account and a PowerShell script to schedule the export of the database. Here you will find the script and the steps needed to schedule the script using Azure Automation.

Export Azure Managed Instance Database backup to storage account

I am looking for an alternative to :
New-AzureRmSqlDatabaseExport
For the purpose of taking Managed Instance Database backup and export it to storage account. The above command, I think supports only SQL Server.
Yes, your're right, Powershell command doesn't support export the Azure SQL managed instance for now, you could reference this document:Export to a BACPAC file using PowerShell:
Besides, the document also gives the other ways:
Exporting a BACPAC of a database from a managed instance using Azure PowerShell is not currently supported. Use SQL Server Management Studio or SQLPackage instead.
Export to a BACPAC file using the SQLPackage utility
Export to a BACPAC file using SQL Server Management Studio
(SSMS)
At least, you also can use T-SQL to backup the Azure SQL manage instance to Blob Storage:
First, you would need to store credentials that would be used to access Azure Blob Storage:
CREATE CREDENTIAL [https://myacc.blob.core.windows.net/testcontainer]
WITH IDENTITY='SHARED ACCESS SIGNATURE'
, SECRET = 'sv=2014-02-14&sr=c&sig=GV0T9y%2B9%2F9%2FLEIipmuVee3jvYj4WpvBblo%3D&se=2019-06-01T00%2A%3AZ&sp=rwdl';
Once you create a credential, you can backup any database using standard BACKUP T-SQL command:
BACKUP DATABASE tpcc2501
TO URL = 'https://myacc.blob.core.windows.net/testcontainer/tpcc2501.bak'
WITH COPY_ONLY
Reference this Azure blog: Native database backup in Azure SQL Managed Instance.
Hope this helps.

Cannot see long-term backup files for Azure SQL

If I select to restore my Azure SQL database, I can choose from a large number of long-term backup files.
However, I just want to download those files locally.
I cannot see where I can access these files.
The Azure docs suggest that I click on the 'Manage Backups' link.
https://learn.microsoft.com/en-us/azure/sql-database/sql-database-long-term-backup-retention-configure
I cannot see this link though.
Has anyone any idea where I can access these files?
You cannot restore those backup files to a local computer because this is a service managed by Azure.
What you can do is restore to a point-in-time which will create a new database, then export that database as bacpac to your local computer, and remove the newly created database once is no longer needed.
SqlPackage /Action:Export /SourceServerName:SampleSQLServer.sample.net,1433 /SourceDatabaseName:RestoredDatabase /TargetFile:"F:\Temp\RestoredDatabase.bacpac"

How to export DB of a specific time?

I want to check how was my data 2 days ago and to do that I though of exporting a back up that Azure take every hour. But I cannot find it.
I've found this page on Microsoft that talks about exporting a DB but it is for the current data.
Azure SQL Database automatically creates database backups and writes them to read-access geo-redundant storage (RA-GRS) for geo-redundancy. Frequency depends on what kind of load the service is dealing with, duration backups are kept depends on the tier you've purchased.
To recover to a point in time using the Azure portal, open the page for your database and click Restore on the toolbar.
You cannot overwrite an existing database during restore, so you need to create a new instance for the point-in-time restore, and you'll pay for that. You can also do the restores programmatically using PowerShell.
Further details here.
I suggest to execute a restore, with a specific time, on a temporary DB then export it to a bacpac file. You can use Azure CLI for that:
az sql db restore with -time option for restoring
az sql db export for exporting
az sql db delete for deleting the temporary database
https://learn.microsoft.com/en-us/cli/azure/sql/db
The same can be also achieved using Azure Portal.

Migrate SQL Server database from Azure to AWS

I need to migrate a SQL Server database from Azure to AWS. I've tried to create a backup on Azure but it seems that option is not available, not even through a script.
I don't know if exists an option to backup in Azure, as you said. However, you can export your database to a .BACPAC file and import it in a local instance of SQL Server. Then you can create a .bak file from this database to export to the AWS.
To export your database to a bacpac file, you can follow this documentation:
https://learn.microsoft.com/en-us/azure/sql-database/sql-database-export
You have at least a few options here:
You can indeed create a backup in Azure. The backup file will get stored in a Storage account you set up. You can then download this and transfer it to your AWS VM (or RDS services) and restore it. I believe the manual backup you create in Azure is in the form of a .BACPAC file, which is just a compressed backup file.
You can create an empty database in AWS, sync the two schemas using something like RedGate or SSDT (which is free) and then use SSIS to move the data over. Or you could use scripts if you wanted. This would be a better option if you wanted to move your data over piecemeal.
You can use features in SSMS to copy the database directly from Azure and directly to AWS. Personally though I've never had a great deal of luck moving databases like this.

Resources