今天做了次数据库迁移,目的是开个最新版的Azure SQL Database(V12 Update),然后把博客的数据库迁移到新的server上去。按以往的做法(也就是我曾经写过的《图解:如何将SQL Server数据库迁移到SQL Azure 》),把bacpac文件下载下来,然后import到新的数据里,结果爆了:

爆炸是因为Web Tier和Business Tier在最新版的Azure上面已经被微软撸掉了,SSMS 2014却没有升级,不认识这两个Tier,还在用老的Web Tier。

TITLE: Microsoft SQL Server Management Studio
------------------------------
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
ADDITIONAL INFORMATION:

The service objective 'Web' specified is invalid. (Microsoft SQL Server, Error: 40804)

经过开荒,最简单的办法如下。

前提条件是,只针对已经在Azure上面running的数据库,并且你已经把export到了存储账户里去了,想要迁移到新版Azure SQL Database Server上。

如果你想把本地的bacpac迁移到最新版Azure SQL Database上,我还没研究出来。估计powershell可以。等我有空去看看。

1. 点击工具栏上的New - DATA SERVICES - SQL DATABASE - IMPORT

2. 在弹出的向导中,BACPAC URL选取你存储账户中已经导出的bacpac。NAME里面给新数据库起个名字,更具自己的需要选择SERVICE TIERS,最后选择新开一个DATABASE SERVER。但是注意,最小的默认也会开2GB,这个向导里是不能改的,最后数据库导完以后记得手工去改,不然一觉醒来钱都没了!!

3. 在向导的第二步中,勾选“ENABLE LATEST SQL DATABASE UPDATE (V12)”,其他还是和正常创建数据库服务器一样填写。

4. 点击确定后,稍等片刻,最新版的Azure SQL Database Server就创建成功了,老的数据库也已经被倒入进来了。

5. 在SSMS(我用的2014)中可以看到新老数据库的对比。

老版本的Azure SQL Database是11.0.9230的,本地的SQL Server 2014是12.0.2000的,最新版的Azure SQL Database是13.0.15的。

我猜测前段时间开始一直无法用SSMS导出bacpac的问题,也和Azure对database tier的升级有关。现在Web和Business都已经“退休”了。但是微软没给SSMS升级真的蛮蛋疼的。