日期:2014-05-16 浏览次数:20589 次
Windows Azure把SQL作为服务提供给了用户,这项服务名为SQL database。尽管SQL database的后台也是SQL server,但是它与SQL server还是有很多的不同,具体体现在:
下面是SQL database的架构图. 可见,SQL database后台是一个庞大的SQL server集群,每个用户见到的SQL database实例,是一个逻辑的概念,对应于SQL server集群上的一组实例。前端的负载均衡器根据策略将用户请求分发到3个实例的主实例上。而用户看到的SQL Server,也是一个逻辑的概念,对应一组逻辑资源。在SQL database上,一个SQL Server可以支持150个实例,同一个SQL server使用相同的访问控制策略,提供同一个管理门户入口。另外,多个用户是共享物理资源和SQL server的
当然,SQL database也有一些局限:
可见,一般的SQL应用,使用SQL database显然是最方便、最经济的。对于新应用来说,直接在Azure上建立新的数据库,并用visual studio、sql server management studio或者Web界面创建表就可以很快完成数据库的部署。但对于已有应用的迁移来说,如何进行迁移呢?
实际上,迁移的方法有很多种:
上面列出了7种方法,其中,方法1-4都是通过SQL server management studio完成的。这些方法执行效率较低,但过程很简单,适合于数据库规模较小的时候。而5和6采用BCP进行批处理,效率较高,适合于数据量较大的情况。其中方法6采用图形化界面,使用更方便。方法7可以实现本地数据库和远程数据库的连续同步,适合于多个数据库同时运行的情况,或者是需要数据库停机不停机的情况
具体步骤如下:
在sql server management studio中,右键要迁移的数据库,在task选项中可以看到很多项
其中,generate script会导出SQL,对应第4种方法。Deploy database to SQL azure对应第2种方法,export data-tier application 对应第1种方法,export data对应第3种方法。在很多情况下,方法1、2、3在导出或者导入的过程中发生错误的概率较大,导致迁移无法顺利进行,这主要是因为SQL database的某些限制,如用户、数据类型、索引等。因此,推荐用第4种方法进行迁移。这种方法直接使用SQL,即使有问题也可以及时编辑SQL进行调整。
在高级选项里面,把script for database engine type选成SQL Azure database
使用SQL语句进行迁移时,建议分为两个阶段,分别迁移schema和数据内容。在types of data to script里面,第一次选schema only. 导出后再次运行导出动作,选data only. 这样可以生成2个脚本,分别是建表和填充数据
在script indexes里面选true,表示要导出index。如果本地数据库有的表没有建聚类索引,那么需要在导出的SQL里面手动添加建聚类索引的语句。或者导出完成后对于SQL database的表建立聚类索引
另外,将Convert UDDTs to Base Types 设为true
导出完成后,就可以将其导入Azure上的SQL database了。首先在Azure上创建database
在Limit database size部分需要注意,这里指定的是数据库容量的上限,如果要导入的数据库较大,则这个地方需要选的数值也要大。在Edition部分是数据库版本,Web版的容量上限是5GB,如果更大则要选Business
输入用户密码,选择区域为东亚
创建完成后,点击左边菜单的SQL database,在右侧找到创建的示例,然后点击进入
在dashboard的右侧点击manage allowed IP address,设置允许访问的客户端IP
点击add to allowed ip address,然后点击页面底部的Save