如何迁移本地SQL Server数据库到Windows Azure的SQL Server (二)

通过csupload把VHD文件上传到Windows Azure上

1. 首先,如果你还未创建过SQL Server的虚机,登录到https://manage.windowsazure.com后,依照下面的方式创建一个SQL Server的虚机。在这边我就不一步一步演示如何创建虚机了

 

2. 我们创建一个SQL Server 2012试用版的虚机,叫SQLMIgration

3.在创建虚机的过程中,特别要注意到你用哪一个storage account,这一点非常重要,要不然上传VHD后是没有办法加到上传的SQL Server虚机里面,注意到我这边直接用我已经创建了好的storage account 叫“sqlmigration”

4. 下面我们要为csupload做一些准备工作。回到老的windows azure管理网站 https://windows.azure.com/; 先点击”Hosted Services, Storage Account &CDN”, 再点击 “Management Certificates”, “Add Certificate”, 这里我们要创建一个certificate给csupload单独用。我这边创建了一个certificate叫”SQLMigrate”,注意记下它的Thumbprint的号“C93D90BF06349709CBAC974EB25DD6D9D64A1512”, 我们在设csupload的connection的时候用得到

5. 要使用csupload来上传VHD文件,首先要确定你已经下载安装了Windows Azure SDK. 如果你装的是6月份的预览版,装好了以后csupload.exe就在C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-06\bin的目录下。csupload用起来有一些麻烦,至少我不是很喜欢,以后应该有更友好的图形界面。现在我们要设csupload的连接

csupload set-connection
SubscriptionID=<subscription-id>;CertificateThumbprint=<cert-thumbprint>;ServiceManagementEndpoint=https://management.core.windows.net

在上面的命令中,用你的windows azure的订阅号和 第四步记下的Thumbprint的号来取代;ServiceManagementEndpoint就不用动了

6. 运行csupload的命令,返回一下的结果,说明连接设好了

7. 接着运行 “csupload Add-Disk -Destination https://sqlmigration.blob.core.windows.net/migration/SQLmigration.vhd -label SQLMigration -LiteralPath C:\temp\VHD\SQLMigration.vhd”。这里Destination 包括了你storage account的blobs Endpoint信息https://sqlmigration.blob.core.windows.net还有VHD的名称和存储位置 /migration/SQLmigration.vhd。LiteralPath 指的是本地的VHD的路径。

由于网络连接的速度问题,我试用csupload上传的时候经常会碰到“An unexpected error occurred: Server operation did not finish within user specified timeout '90' seconds”的错误,这时候你必须修改csupload.exe的配置文件.配置文件一般位于C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-06\bin>里面,修改前建议做个备份,主要是改两个地方

<csupload

uploadBlockSizeInKb="1024"  /*改成512KB

maxUploadThreads="8"  /* 你可以改成比8小的数, 我改成了4 就可以了

ignoreServerCertificateErrors="false"

maxVHDMountedSizeInMB="66560"

/>

改好好了上传速度会变慢,等Azure在中国落地后,连接速度快了以后可以再改回来

下面是运行结果

8. 这时候你回到https://manage.windowsazure.com,点击Virtual Mahcines –> Disks, 你就可以看到上传的VHD了

9. 下面点击虚机SQLMIgration –> Attach, 再点击Attach Disk. 请注意Attach Disk只能attach同一个storage account下面的DISK,这就是我强调的虚机和上传的VHD一定要用同一个storage account,要不然你的虚机是看不到你上传的VHD的

10. Attach好了以后就简单了,点击Connect进入虚机里面,打开文件浏览器会看到多了一个磁盘,里面就有上传的数据库文件。这时候你打开SQL Server管理器,把这个数据库文件导入进来就可,这就是最后一步,我这边就不多做描述了,相信大家不会有问题的