开始之前先说我的情况,SQL 2000的DBA,之后没怎么搞过SQL。所以以下写的内容如果有错误,请DBA大拿不要笑喷~

    有个朋友之前把应用搬到了阿里云,数据库也搬上去了,用的RDS(别问我为啥这名字和AWS一样哦)。最近这朋友忽然想把架构迁移到Azure上,于是问我是不是能迁移。应用有Java和.Net的,数据库有MySQL和SQL Server,前面的都不是事儿,到了SQL Server这儿,有点麻烦了。

    朋友的数据库挺大,而且业务在线,所以常规的导出导入,备份恢复和虚机迁移都会有停机时间。而且阿里的数据库,跑的是SQL 2008 R2…Always On是哪个版本出来的?我第一想到的是,使用分发/订阅的方式来做平滑复制。

    上网一搜,微软有个SQL Server 到Azure SQL的数据迁移工具DMA,赶紧下了一个想看看。虽然说的是SQL Server到Azure SQL,尝试连接阿里的RDS还是可以的,不过一跑向导就立刻报错了~

    image_thumb[7]

    啥?系统数据库没法select?

    上船容易——从阿里云迁移SQL数据库到Azure云的尝试 之一_第1张图片

    我赶紧下了个SSMS,准备看看登录的账号是不是有权限,结果:

    上船容易——从阿里云迁移SQL数据库到Azure云的尝试 之一_第2张图片

    上船容易——从阿里云迁移SQL数据库到Azure云的尝试 之一_第3张图片

    原来,RDS是切了一个SQL上的Instance给租户使用,我猜为了避免租户通过系统数据库操作和获取信息,阿里简单粗暴的把这些数据库的权限都给Deny了。

    更别说期待RDS提供分发、跑SQL Agent服务了……

    那么,Azure SQL是不是也是这样的呢?好奇心来了,看了看最低配的每月5.99刀,起一个看看~

    上船容易——从阿里云迁移SQL数据库到Azure云的尝试 之一_第4张图片

    从连接的数据库看,Azure SQL对组件做了更精细的划分,很多组件变得不可见了。但是,系统数据库还是可以访问的。我猜,应该对数据库的表做了权限限制,但至少迁移需要的读取权限还是有的。可能关键表的行说不定也做了权限控制,未进行测试验证。

     为什么有以上“迁移需要的读取权限还是有的”的结论呢?因为我用SSMS 2017从Azure SQL迁了一个数据库到它本身~迁移过程没有问题。

    上船容易——从阿里云迁移SQL数据库到Azure云的尝试 之一_第5张图片

   为啥我说阿里RDS是一个数据库上的一个实例呢?因为SSMS说的,哈哈

    image_thumb[15]

    这事儿还没完。欲知后事,且听下回。