试用SQL Azure

云计算是现在很热的一个话题,很多人听说过微软的Windows Azure,它是微软基于云计算的操作系统,但微软的Azure服务平台不仅只有操作系统,它是一系列的服务,至少还包括SQL Azure和Azure Platform AppFabric。Azure服务平台即将于2010年元旦正式商用,目前可以申请试用它的CTP (Customer Technology Preview) 版。本文将对试用SQL Azure做一个简单的介绍。

要想试用SQL Azure,你首先需要一个Invitation Code,你可以通过以下网址申请https://connect.microsoft.com/SQLAzure/SelfNomination.aspx?ProgramID=2089&pageType=1 。由于目前申请的人数较多,你可以需要等待一两天才能收到邮件。

 
图1 申请Invitation Code的页面 

有了Invitation Code,你就可以登录https://sql.azure.com/开始试用了。输入你的Invitation Code后,你就可以创建你的服务器和数据库。创建服务器步骤非常简单,如图2所示,你只需要输入用户密码即可,SQL Azure目前不支持Windows认证方式,只支持SQL Server认证方式。


图2 创建服务器

创建数据库也很简单,点击图3中的Create Database按钮后只需要输入数据库的名称和选择数据库的最大大小即可,如图4所示。这里我们输入testdb,大小1GB。SQL Azure支持两种版本的数据库,一种称为Web版,最大为1GB,商用时将每月收取9.99美元,另一种称为Business版,最大为10GB,商用时将每月收取99.99美元。

 
图3 数据库维护

 
图4 创建数据库

创建完数据库后,你需要配置防火墙的规则以允许你从远端访问SQL Azure里的服务器,图5是一个例子,我配置了124开始的IP地址都可以访问我的服务器。防火墙的规则可以需要几分钟后才能起作用,如果你连接不上,请稍等一阵再试。

 
图5 配置防火墙

防火墙配置完成后,你就可以从远端连接你的数据库了(也可以先使用图3中Test Connectivity按钮确认连接)。你可以使用Sqlcmd工具或者SSMS,本文将使用SSMS为例。在SSMS登录时请不要连接对象管理器(Object Explorer),因为SQL Azure中有些视图不存在,对象管理器可能无法正常工作(我的SSMS是SQL 2008 SP1)。请直接新建查询打开连接对话框,如图6所示。

 
图6 连接对话框

如果你想连接刚才创建的testdb数据库,你需要点击连接对话框里的选项(Options>>)按钮,并在连接属性(Connection Properties)页签里选择连接到testdb,如图7所示。SQL Azure不支持使用USE testdb来切换当前数据库。所以你必须指定数据库名,如果你不指定数据库名,你将会连接到master数据库。

 
图7 输入要连接的数据库名

在打开的查询窗口中,你可以输入SQL语句创建表,插入数据,或者创建存储过程,执行存储过程等等。我们将执行下面的SQL语句创建table1并插入4条数据。

CREATE TABLE [dbo].[table1](

      [column1] [int] IDENTITY(1,1) NOT NULL,

      [column2] [varchar](50) NOT NULL,

 CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED ( [column1] ASC )

)

GO

INSERT INTO [dbo].[table1] ([column2]) VALUES ('abcdefg')

INSERT INTO [dbo].[table1] ([column2]) VALUES ('hijklmn')

INSERT INTO [dbo].[table1] ([column2]) VALUES ('opqrst')

INSERT INTO [dbo].[table1] ([column2]) VALUES ('uvwxyz')

GO

在用SSMS创建表并插入数据之后,我们可以用ADO.NET的程序来查询这些数据。下面是一段简单的代码在Console上打出我们刚才插入的数据。 

SqlConnection conn = new SqlConnection ("Server=tcp:njix2stcmg.database.windows.net;Database=testdb;User ID=shooterlily;Password=;Trusted_Connection=False;Encrypt=True;");

conn.Open();

SqlCommand command = new SqlCommand("select * from dbo.table1", conn);

SqlDataReader reader = command.ExecuteReader();

while (reader.Read())

{

    Console.WriteLine(reader["column1"].ToString() + ":" + reader["column2"].ToString());

}

reader.Close();

conn.Close();

这段代码里面最重要的部分应该就是那长长的Connection String了,不过你不必担心输错,可以使用图3中的Connection Strings按钮来拷贝,当然密码是需要修改的。编译执行,结果出来了。 


图8 程序运行结果

本文简单介绍了试用SQL Azure的过程,有兴趣的读者可以参阅下面的链接来了解更多。

软件开发工程师 徐进