代码改变世界

Windows Azure Platform体验(2):SQL Azure

2010-11-16 09:07 by 李永京, ... 阅读, ... 评论, 收藏, 编辑

Windows Azure Platform有Windows Azure、SQL Azure、Azure AppFabric三部分。

SQL Azure是云关系数据库。您的数据:随时随地管理。SQL Azure是云中的完全关系数据库。

这节我们体验SQL Azure,必备软件:

  • Microsoft SQL Server 2008 R2
  • Windows Azure Platform账户

这次体验有下面几个步骤,分别是:

初始化SQL Azure

首先我们使用账号登录SQL Azure门户,网址为http://sql.azure.com,你可以看到下面页面。我们点击项目名称。

SQL Azure

出现使用条款页面。阅读后,如果同意接受这些条款,单击“I accept”(我接受),开始使用实际的SQL Azure数据库。

SQL Azure

出现创建服务器页面。我们首先创建一台实际的服务器。就服务器种类而言,通常我们熟悉的服务器可能是物理服务器或虚拟服务器,这里,我们创建一个虚拟服务器,即SQL Azure服务器。也就是说它是通过逻辑方式组合到一起的数据库组合,而不是通过物理方式组合起来的。指定管理员用户名密码和实际要在哪个SQL Azure数据中心创建这台服务器的数据库组。如果在中国大陆,则可以选择东亚。我选择“东亚”的数据中心,点击创建服务器。

SQL Azure

当我完成后,出现服务器详细信息页面,这个页面显示了登录到这台服务器的详细信息和已有的数据库以及防火墙配置。页面的顶部提供了唯一的ID和“.database.windows.net”的组合是服务器地址。页面的底部,我们可以看到所有已经创建的数据库。现在只有用来存储其他数据库记录的默认SQL主数据库,我们还没有创建任何数据库。接下来我创建的所有数据库都在这个服务器账户中。

SQL Azure

点击“Create Database”创建一个数据库,出现下面页面,这里我将其命名为“lyjDB”,选择版本类型和数据库大小。这些是由你购买的的选择决定,Web版本有1G和5G两个容量,Business版本有10G、20G、30G、40G、50G的大容量。由于这个账户没有限制,我选择最小的配置体验下。

SQL Azure

创建完之后,我们可以点击“Connection Strings”连接字符串。SQL Azure为我们提供了两种数据库连接:

SQL Azure

我们单击底部的“Test Connectivity”(测试连接)按钮,输入用户名和密码,点击连接,提示下面错误提示框。因为在默认情况下,SQL Azure安全设置不允许任何计算机、服务器或者客户端连接到SQL Azure。

SQL Azure

这时我们点击“Firewall Settings”(防火墙设置)选项卡。

你会发现SQL Azure安全设置默认不允许Microsoft服务都无法连接到这个服务器或者数据库,这时我选择“Allow Microsoft Services access to this service”(允许Microsoft服务访问这台服务器)复选框允许连接。这时网站会刷新,并且为我创建一条新的规则,出现一个特定MicrosoftServices条目,允许Microsoft服务本身进行连接,这样我们就可以进行连接了。

SQL Azure

返回“Databases”(数据库)选项卡,单击底部的“Test Connectivity”(测试连接)按钮,输入用户名和密码,然后就可以启动测试连接,并看到连接成功。

SQL Azure

连接到SQL Azure

1.防火墙设置

打开SQL Server Management Studio R2,用指定的用户名和密码进行登录,连接到这台服务器。注意必须使用R2版本才能连接到云中的SQL Azure数据库。不过登录到SQL Azure与登录内部部署SQL数据库方式的登录名的约定略有不同。除了需要指定用户名还需要加上“@”符号,然后是服务器名称的唯一的ID的部分。

SQL Azure

单击“连接”按钮,我们尝试进行连接。出现下面对话框提示连接失败,原因是因为在默认情况下,SQL Azure安全设置不允许任何计算机、服务器或者客户端连接到SQL Azure。

SQL Azure

我们需要配置防火墙,返回门户,并转到“Firewall Settings”(防火墙设置)选项卡,配置防火墙规则设置为允许特定连接通过,为我的本地创建一条规则。这样,我们就可以在本地通过SQL Server Management Studio R2进行实际连接了。输入规则名称和IP地址或者IP范围。系统已经识别了我正在连接的IP地址。

SQL Azure

创建完成之后,在防火墙规则中出现新增了一条规则。

SQL Azure

2.与SQL Azure交互

切换到SQL Server Management Studio R2尝试再次连接,这一次一切都设置好了,现在成功实现连接,它连接了实际的SQL Azure实例。请注意,这台服务器的图标略有不同。它显示的是一个小小的蓝色数据库符号,表示这是一个Azure连接,而不是一个标准的内部部署SQL服务器连接。进入数据库组,你会看到我们刚刚创建的lyjDB数据库。

SQL Azure

我现在可以通过SQL Server Management Studio R2和SQL Azure数据库进行交互,方式与使用内部部署数据库方式非常像,也就是我在Management Studio R2中的惯用方式。但是,设计体验略微有些不同,这是因为我们使用的是基于云的数据库。因此,它只具备SQL Server 2008的部分功能,例如,我们无法获得拖放式设计图面。大多数是使用实际的SQL脚本语言来指定表的架构。

在数据库上右击并执行常规的脚本操作,比如Select命令。执行这个命令,并在底部查看显示的结果,与我们使用内部部署数据库非常类似。因此,对于那些标准操作,这与我所习惯的使用和执行方式非常类似。

3.连接到master数据库

我们执行“SELECT @@version”查询,查看SQL Azure的版本。可以看到它返回一个信息:SQL Azure由Microsoft SQL Server 2008派生的。

SQL Azure

我们使用master数据库查询sys.databases视图,我们能够看到我们的服务器上创建的所有数据库。

SQL Azure

4.创建一个新数据库

我们使用Management Studio R2在SQL Azure中创建一个新数据库。这一步非常简单。在SQL Azure中,我们使用简单的创建数据库执行语句,将立即创建一个新的数据库。

执行“CREATE DATABASE yjingleeDB”

SQL Azure

再次查询服务器上数据库,注意我们刚刚创建的yjingleeDB数据库在这个列表中了。

SQL Azure

5.连接到新数据库

为了连接到新的数据库,我们必须断开当前连接并重新打开新连接。因为在SQL Azure中,我们的数据库不一定储存在相同的物理服务器上面的。

这点与SQL Server有点不同,SQL Server中,我们可以使用USE语句来更改数据库,在SQL Azure中,我们需要重新连接一次以确保重新连接到SQL Azure的物理服务器群集节点客户端是正确的。我们关闭查询标签,单击更改连接图标。

使用相同账户登录,由于我们想要连接到制定数据库,所以需要点击选项按钮,指定“yjingleeDB”数据库。

SQL Azure

连接成功了,我们调用DB_NAME()函数查看当前数据库名称。

SQL Azure

配置SQL Azure数据库安全

我们将配置yjingleeDB数据库的安全。学习一下如何为一个数据库创建和配置一个新的登录用户。

我们使用服务器用户名和密码登录默认SQL Azure数据库,创建一个登录用户。

SQL Azure

然后我们使用服务器用户名和密码重新登录yjingleeDB数据库。我们为yjingleeDB数据库创建一个登录用户并把这个用户增加到db_owner角色中,即对这个数据库拥有操作权限。即依次执行下面两行脚本。

SQL Azure

我们就创建好了,使用这个新账户登录yjingleeDB数据库吧。

SQL Azure

执行一个查询,验证当前用户。

SQL Azure

在SQL Azure中创建数据库对象

1.创建简单的表

我们创建一个简单的表,只有一个单一的int类型的列。这里必须注意,SQL Azure里面的表必须要有一个聚集索引。如果没有的话不能插入任何数据。聚集索引的不一定是主键列。出于性能的原因,最好在其他列上。

SQL Azure

然后插入三笔数据,再执行查询,检索出这些数据。

SQL Azure

2.创建复杂的表和索引

我这次依次创建一个Customer表,然后增加一个索引,最后插入一笔数据并查询出来。

SQL Azure

3.检查查询计划

我们看看从Customer表中查询数据来体验一下SQL Azure的查询计划。我们先执行一些T-SQL插入10000行数据比较差异。

1行数据的查询计划:

SQL Azure

10000行数据的查询计划

SQL Azure

调用“Ctrl+L”可视化:

SQL Azure