How to upgrade from V11 to V12 SQL Azure? - azure

I am using V11 SQL Azure.
At this stage I do not want to upgrade my existing SQL server which contains all my current QA and Production DBs.
Logically it seems safer to create a new SQL Server setup for V12, then somehow copy/migrate the V11 DB instances from my V11 Sql Server to my new V12 SQL Server ie QA DBs to start with. I am aware of: V12 Upgrade article
Is this possible and how?

The easiest way to do this would be to create a new V12 server and then export the databases and import them into the new server.
There are a few ways to do this, you could either use the portal (https://manage.windowsazure.com) and click the database and click the Export button at the top, this will export the database to Azure Storage. To Import click New, Data Services, Import and select the bacpac file from your storage account and select the new V12 server to import it to.
Your other option is to download SSMS (https://msdn.microsoft.com/en-us/library/mt238290.aspx) and login to both servers. Right click the database you want to export, and go to Tasks -> Export Data-tier Application. The select local storage to download the database locally. To Import, right click the Databases folder on your V12 server and go to Tasks -> Import Data-tier Application.
At this point this is the only straight forward way to go from V11 to V12 without upgrading your server directly.

We are needing to do the same thing for a production deployment of ~150 databases. Our strategy is similar: we have spun up a separate V12 instance for migration after we've assessed each database for the proper tier. However we have opted to upgrade the databases to the new tier within the V11 instance for a few weeks prior to migration to verify they are sized appropriately.
As far as migration, I don't know of any automatic or online way to do it. We've basically had to backup / restore the database via Azure storage using the portal or PowerShell scripts. There is unfortunately downtime for the customer during the time that the database is being copied. Also note that you will need to know prior to the import into the V12 server which new DB tier to use.
In a testing cycle we just did this past week, we migrated ~12 GB (8 databases) from a V11 server to a V12 server. Backing up the databases took around 1 hr 47 minutes, and then restoring the databases took 2 hr 24 minutes. So you get a rough benchmark of about 21 min/GB for the whole process, which is not real great if you have a lot of large databases. Fortunately for us most of our databases are small (<1 GB). If you have lots of larger databases, you may need to upgrade them within the V11 server (which is an online operation), and then upgrade the whole server (which is also online) to avoid downtime.

I would recommend creating a new server and do database copy (create database [copy_db] as copy of [source_db] and then upgrade the server to V12. I/E service takes too long compared to this approach. If you want a consistent state, you can set the source database in the read_only mode

Related

Apply local DB changes to Azure SQL Database

I have a backup file that came from Server A and I copied that .bak files into my local and setup that DB into my Sql Server Management Studio. Now After setting it up I deployed it in Azure Sql Database. But now there were change in the Data in Server A because it's still being used, so I need to get all those changes to the Azure SQL Database that I just deployed. How am I going to do that?
Note: I'm using Azure for my server and I have a local copy of Server A database. So basically in terms of data and structure my local and the previous Server A db is the same. But after a few days Server A data is now updated and my local DB is still the same as when I just backup the db in Server A.
How can I update the DB in Azure to take all the changes in Server A and deploy it in Azure?
You've got a few choices. It's just about migrating data. It's also a question of which data you're going to migrate. Let's say it's a neat, complete replacement. Then, I'd suggest looking at the bacpac mechanism. That's a way to export a database, it's structure and data, then import it into a new location. This is one mechanism of moving to Azure.
If you can't simply replace everything, you need to look at other options. First, there's SSIS. You can build a pipeline to move the data you need. There's also export and import through sqlcmd, which can connect to Azure SQL Database. You can also look to a third party tool like Redgate SQL Data Compare as a way to pick and choose the data that gets moved. There are a whole bunch of other possible Extract/Transform/Load (ETL) tools out there that can help.
Do you want to sync schema changes as well as Data change or just Data? If it is just Data then the best service to be used would be Azure Data Migration Service, where this service can help you copy the delta with respect to Data to Azure incrementally, both is online and offline manner and you can also decide on the schedule.

Restore to Azure SQL PAAS database a bak file?

Okay so I figured since Azure has a lot of tools and I am failing at best processes to just ask on SO.
What I can do:
BACPAC creation
Creation is directly from SSMS with hovering over the database in Object Explorer. Right Click>Tasks>Export Data Tier Application. Choose a disk location. The caveat is generally to not have a database that is in use querying. So have a copy or system that can be not using the database.
BACPAC restore to Azure
SqlPackage.exe https://learn.microsoft.com/en-us/sql/tools/sqlpackage?view=sql-server-2017
When I do it it is similar to: (must have Visual Studio or equivalent Sql management object DLLs installed)
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130\SqlPackage.exe" /a:Import /sf:(bacpac Location) /tdn:(dbName)/tsn:bvtest.database.windows.net /tu:(user) /tp:(password)
In Azure>SQL Servers>(Top ribbon)>Import database>(have blob storage with a bacpac created to it already). This method appears slightly faster if they are both on same region.
My question is that I have seen articles like this one: https://learn.microsoft.com/en-us/sql/azure-data-studio/tutorial-backup-restore-sql-server?view=sql-server-2017 as well as knowing SSMS pretty well. It seems all options to restore to Azure SQL PAAS are turned off for a 'bak' backup and you have to make a bacpac for going instance to Azure PAAS. The problem is that this takes hours just to make the bacpac on a relatively medium sized database of 120 gigs. Then it takes hours to restore. Other than what I have tried above is there a faster way?
You can use Azure Data Migration Service (ADMS) instead of importing/exporting bacpacs. Azure Data Migration Service allows you to migrate data from SQL Server to Azure SQL Database with no downtime if your database does not have "heaps". If your database has heaps you will have to perform an offline migration. Copying/migrating data from a SQL Server ARM (IaaS) Premium Storage (200 GB / 790 tables) to an Azure SQL Database (Premium) takes 1 hour 40 minutes with an offline migration. That is the fastest data migration I have seen as a workaround to import/export bacpacs since SQL Server native backups are not supported on Azure SQL Database (DTU-model / Vcore model).
ADMS performs a validation of your data at the end, if you want.

Azure SQL upgrade/downgrades

I have a few questions regarding upgrades/downgrades of azure sql. The only information I found was that to upgrade/downgrade you have to export a .bacpac and import it on a new upgraded/downgraded server.
Does Microsoft "force" you on to newer versions of azure sql when they are available?
How do you upgrade your current azure sql version?
How do you downgrade your current azure sql version?
There is a SQL server versión property on the Azure SQL Server créate request (reference). The DB created on that server will just inherit that versión.
As for your question:
Probably at some point in time it might, not that it happens often. This happened once (as far as I recall) and I dont remember if they forced you to migrate or not, probably did at some point.
Create new server, Backup\Restore databases
Create new server, Backup\Restore databases
I dont think points 2 and 3 have any real application in the current state of affairs, since Azure SQL is almost locked to v12 (which isnt equivalent to SQL 2012), I can hardly imagine a case where you would want to downgrade (and there's no room to upgrade).

Support for SQL Server Compact 4.0 on Azure

My website is a .net 4.5 mvc site built with VS 2012. I have a SQL Server Compact DB in my app_data folder. All works great on my localhost. I deploy to Azure website and get this error?
Unable to find the requested .Net Framework Data Provider. It may not be installed.
I've googled it and get lots of possible answers, but none specific to Azure and SQL server compact. So my question is simple. Does a windows Azure Website which is deployed to an Azure shared hosting server support SQL Server Compact? If so, what do I need to do to eliminate the aforementioned error and make it work?
It certainly is possible to use SQL Server Compact on Windows Azure. However, you need to ask yourself:
Will I change anything in database?
This includes adding, updating and removing data. If you do, you should not use SQL Server Compact on Windows Azure. Because, if you use SQL Server Compact on Windows Azure and change anything in the database, you'll run into two problems:
Data is not replicated.
You risk losing data.
Data is not replicated
If you change anything in the database, the changes stays local. This means that if you have multiple instances running your web application, then each web application will have their own database, and if you change something in one of them, the change won't be replicated to other instances, which will result in unpredictable behaviour in your application.
You risk losing data
If you change anything in the database after deployment, you risk losing data, because Windows Azure might decide to redeploy your instance to another virtual or physical machine. When this happens, the new instance will be setup with the deployment package you originally uploaded to Windows Azure, and this package does not contain any changes you make to the database. And this redeployment can happen at any time for several reasons.
Conclusion
So, SQL Compact on Azure? Sure, no problem if your data is read-only. However, note that you won't get the performance you would with SQL Azure. But if your need changes down the road, you can always migrate your application from SQL Server Compact to SQL Azure.
If you want to use SQL Server Compact with Windows Azure, you can use the "private deployment" method, as explained on "ErikEJ"'s blog.
Edit: Microsoft has announced that they now provide 1 free 20 MB SQL Azure Database for every Azure subscription. This means you can create a subscription and create a free website, with a free SQL Azure Database. (As long as it's less than 20 MB) You can also have multiple Web Sites associated with the same SQL Azure Database for free. So, if you're considering SQL Server Compact on Windows Azure because your database will be very small and you don't want to pay for a 100 MB database, you can consider this option. In most cases, it will be a better solution. Your website will perform better, your database performance will be better and you have the ability to change your data and it will be replicated.
It's possible for SQL Server Compact 4.0 on Azure!!
I write an an article for it
And this is the English version I found
By few step:
Below is the solution after my research:
Step by Step like this:
Install two nuget: EntityFrame.SqlServerCompact & Microsoft SQL Server Compact Edition
put your SQL database file(.sdf/.mdf) in APP_Data folder
(Put the connection string like this in order to use it:
<add name ="DefaultConnection" connectionString ="Data Source=|DataDirectory|CompactDB.sdf" providerName ="System.Data.SqlServerCe.4.0" />)
Publish full project include above SQL database file to AzureWebsites.
you can find it can work well and is totally free.
Second Wenchao Zeng of Microsoft the Azure don't support Sql Compact.
I could use once but this is not recommended because the Windows Azure work with replication of the data (this is the cloud, remember?) and the Sql CE does not support this functionality. If you can to put a Sql CE in Azure sometimes will not get access or users see data outdated or broken because the async.
The best way is you to use the Azure Sql ou BLOB storage.

How to perform a Windows Azure Backup?

I'm starting using Windows Azure to manipulate my azure databases. I don't have experienced in IT world, I'm just looking a way to backup my database (preferibly in a local computer) and restore it.
I started reading from here:
http://msdn.microsoft.com/en-us/library/jj650016.aspx#copy
And I ran this code:
CREATE DATABASE destination_database_name
AS COPY OF [source_server_name].source_database_name
But I'm not sure if it's working, in the next image, contoso2 is my original database and the another is the copy, and this one does not have any table from the original source.
So, please guide about how to backup my datases not using commercial products.
If you need additional data, please let me know.
I recommend reading Business Continuity in Windows Azure SQL Database which explains the underlying infrastructure available to you and the two main mechanisms for backup - ocpy database and export/import
You have third party products available; some of which don't require you to purchase anything. Here is a good summary which is still valid. You can also use the Export/Import feature available right off the management portal of Windows Azure.
Well it is easy if you are using Sql Server 2012. If you are not then you can install the express version.
Select the database you want to back up in new portal of windows azure https://manage.windowsazure.com
In the footer you will have an option to import/export. Click export. This opens a modal popup. Select the storage account you want to use and type in a appropriate name to save the *.bacpac file.
Once the file is saved to storage, download it to local, open sql server 2012 management studio. Select the database server. Right click on it and in the context menu you will find Import Data-Tier Application. Select the bacpac file from you local and follow the settings.
At the end you will have your data residing on your local machine.

Resources