In our final look at migrating a database to Azure SQL Database, we will import a BACPAC file.
From previous weeks we know that a BACPAC file contains the full schema, as well as the data (in BCP format), of the database we are migrating. It is based on the structure of a DACPAC file, which is created when we export a Data-tier Application.
This step is also surprisingly easy, because it uses knowledge we have gained in other blog posts.
To import the BACPAC, the file must be uploaded to Azure Blob Storage. We can either use AzCopy or the AzureBlobStorageSync tool to upload the file to a standard container.
Once the file is uploaded, we can use PowerShell or the Azure Portal. For demonstration purposes, I will use the Portal website.
Upload the BACPAC
Using AzCopy, copy the file to a container. Remember that we cannot use Premium Storage for this file, but that works out fine because it’s much cheaper to use Standard Blob Storage anyway.
AzCopy /Source:D:\Temp\bacpac /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:key /Z:D:\_Ops\AzCopy /Pattern:"sourcefile.bacpac"
(Refer to the previous blog post about AzCopy to understand what these switches mean.)
Importing the BACPAC
With the Azure Portal open, navigate to our SQL server. Notice the Import database option on the top menu.
Similarly to the Management Studio wizard, we need to input some information to get the database created and populated.
In the Storage configuration, navigate to the container where we just uploaded that BACPAC file, and select it. The rest is simple. Once you click on “OK”, the database will be created.
And there you have it. Two ways to migrate a SQL Server database from on-premises to Azure SQL Database.
I presented a session to the Calgary PASS Chapter last week on this topic and discovered that network speed matters a great deal. I recommend using the two-part method, via a BACPAC file, so that you can control the process and not have to rely on slow network connections. AzCopy is at least predictable.
If you have any questions or comments, you can find me on Twitter as usual, at @bornsql .