SQL Azure 是构建在SQL Server技术之上的关系型云端数据库服务,为用户提供了自主管理、高可用性、高可扩展的数据库服务。用户可以使用现有的T-SQL和关系型数据库知识与工具,在云端方便地构建自己的数据库服务。
SQL Azure上创建数据库服务器的步骤比较简单,如果没有创建可以在登录到https://windows.azure.com/ 上,不过现在由于已经商用,所以需要购买。创建数据库如图1所示:
图1 创建数据库
点击Create Database按钮后只需要输入数据库的名称和选择数据库的最大大小即可。在图1的实例中,已经创建了一个名称为testDb,大小为1G的数据库。注意创建完数据库后,需要配置防火墙的规则以允许你从远端访问SQL Azure里的服务器。
在SQL Azure上创建数据库以后,我们需要连接到SQL Azure数据库,要在SQL Azure上做一些开发,也同样需要连接到SQL Azure数据库库。连接SQL Azure数据库的方法有三种:SQL管理工具(SQL Server Management Studio,SSMS)、SQL 命令、ADO.Net,在这篇文章中,我们就介绍通过这三种方式如何连接到SQL Azure数据库上。
使用SQL管理工具连接SQL Azure数据库
在本文的实例中,我们使用的SQL Server数据库的版本是2008,连接SQL Azure的步骤如下:
(1)在SSMS登录时请不要连接对象管理器(Object Explorer),因为SQL Azure中有些视图不存在,对象管理器可能无法正常工作。请直接新建查询打开连接对话框,选择服务器类型,输入服务器名称、用户名、密码。服务器名称的格式是:{your server name.database.windows.net},这里为了和服务器名称相区别,使用了your server name来表示,在实际应用中,your server name是已经创建的服务器名称,这个名称可以从你的SQL Azure门户的服务器管理页面获得。都输入后如图2所示:
图2 使用SSMS连接SQL Azure
但是很不幸“杯具”发生了,我们没有连接上SQL Azure,并且会得到如下的一个错误信息
告诉我们“sys.configurations”是一个非法的对象名。这是由于SQL Server Management Studio尚未完美的支持SQL Azure数据库 (SQL Server 2008 R2 解决了这个问题)。其解决方法是:
关掉错误窗口,现在只有SSMS的窗口了,或者再次打开SSMS,点击图2中的取消。
(2)点击新建查询,如图3所示:
图3 新建查询
点击新建查询后,再次弹出图2所示的窗口,选择服务器类型,输入服务器名称、用户名、密码,点击连接就可以了。
(3)虽然已经连接上了,这里“连接上”的标志是在“可用数据库”的下拉列表框里列出了所有的数据库,包括默认数据库master,这个库是只读的。选择我们已经创建的TestDb数据库,但是今天太不走运了,继续“杯具”,错误提示数据库不能被访问。
(4)解决上述错误的方法是:重复步骤(2),输入完服务器名、用户名、密码后,不直接点击“连接”,点击“选项”,选择TestDB数据库,如图4所示:
图4 使用选项连接TestDB数据库
点击“连接”,这次成功连接到了TestDB数据库,连接成功后,会打开一个新的空白查询窗口,输入如下SQL 命令:
select * from sys.databases
列出了我们当前具有的数据库信息。
除此之外,我们还可以执行如下所示的几个命令:
SQL 语句及功能
create database TestCloudDB 创建名为TestCloudDB 的数据库
create user user01 for login sqladmin 为sqladmin 创建一个名为user01的登陆用户
create login user01 with password ‘pass@word’ 创建user01的密码为pass@word
表1 SQL 语句示例
使用SQL 命令连接SQL Azure数据库
SQLCMD.exe是一个命令行实用工具,用来在SQL Server上执行命令。SQLCMD.exe是随SQL Server安装上来的。在第一种方法中我们使用SSMS来连接SQL Azure数据库,SSMS也可以管理SQL Server数据库,并且提供了友好UI来供用户操作。但是在实际应用中,我们经常需要自动管理SQL Servers,这时就轮到SQLCMD.exe华丽登场了。通过SQLCMD.exe还可以自动执行SQL命令和SQL脚本文件。
使用SQLCMD连接到SQL Azure数据库的步骤如下:
(1)以管理员方式打开命令提示符窗口,如图5所示:
图5 打开命令提示符窗口
Sqlcmd命令行参数,如图6所示:
有关sqlcmd的参数说明,感兴趣的读者可以参考MSDN:
http://msdn.microsoft.com/en-us/library/ms162773.aspx
(2)可以使用下面的sqlcmd命令行连接到SQL Azure数据库。
Sqlcmd –U -P -S -D
参数说明:
Userlogin:登陆数据库的用户名,如sqladmin@unjikh4kim
Servername:服务器名称,如unjikh4kim
Passwords:密码
Fully Qualified ServerName:服务器的全名,如unjikh4kim.database.windows.net
database name:数据库名称,如TestDB
执行示例命令行:
sqlcmd -U sqladmin@ unjikh4kim -P pass@word -S unjikh4kim.database.windows.net -d TestDB
执行完成后,连接上数据库,会返回1,否则返回错误信息。
(3)连接上数据库后,可以使用如下的命令行:
创建表的示例命令行:
CREATE TABLE CloudTable
(ColNumber1 int primary key clustered, ColNumber2 varchar(50), ColNumber3 float);
显示系统信息的命令行:
SELECT * FROM sys.tables
不仅支持创建数据库、表,还可以执行插入、删除、查询语句,但是需要注意的是在第一和第二两种方法连接到SQL Azure数据库中,并不是所有的SQL 语句都被支持,还有一些不被推荐使用的方式尽量避免使用,感兴趣的读者可以参考:中文:http://msdn.microsoft.com/zh-cn/library/ms143729.aspx;英文:http://msdn.microsoft.com/en-us/library/ee336253.aspx
使用ADO.Net连接SQL Azure数据库
在.Net环境下,连接数据库最常用的方法是使用ADO.Net。在SQL Azure环境下,ADO.Net可以继续使用,这样对于.Net环境下的开发者来说,不用学习新的知识与技能就可以很容易的连接到SQL Azure数据库上,这也符合微软所一直在宣传的云计算战略,减少了单独学习云应用开发的成本。
要使用ADO.Net连接SQL Azure,有两种方法,一种是通过SQL Azure的门户管理页面提供的连接字符串来连接;另一种方法是在程序里硬写,下面我们来介绍第二种方法。
使用程序连接到SQL Azure,需要使用System.Data.SqlClient.SqlConnectionStringBuilder类,实例代码如下:
private string GetDbConnection() { SqlConnectionStringBuilder connBuilder = new SqlConnectionStringBuilder(); string server = “unjikh4kim.database.windows.net”; connBuilder.DataSource = server; connBuilder.InitialCatalog = “TestDB”; connBuilder.Encrypt = true; connBuilder.TrustServerCertificate = true; connBuilder.UserID = “sqladmin”; connBuilder.Password = “pass@word”; return connBuilder.ToString(); } |
使用连接字符串,执行SQL语句
private void ExcuteSQL() { using (SqlConnection conn = new SqlConnection(GetDbConnection())) { using (SqlCommand command = conn.CreateCommand()) { conn.Open(); // 创建表 command.CommandText = ”CREATE TABLE MyTable1(Column1 int primary key clustered, ” + ”Column2 varchar(50), Column3 datetime)”; command.ExecuteNonQuery(); // 插入数据 command.CommandText = String.Format (“INSERT INTO MyTable1 (Column1, Column2, Column3) ” + ”values ({0}, ‘{1}’, ‘{2}’)”, 1, “TestData”, DateTime.Now.ToString(“s”)); int rowsAdded = command.ExecuteNonQuery(); DisplayResults(command); } } } |
显示执行结果:
private void DisplayResults(SqlCommand command) { command.CommandText = “SELECT Column1, Column2, Column3 FROM MyTable1”; using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(command.CommandText); Console.WriteLine(String.Format(“Column1: {0}, Column2: {1}, Column3: {2}”, reader[“Column1”].ToString().Trim(), reader[“Column2”].ToString().Trim(), reader[“Column3”].ToString().Trim())); } } } |
对于DBA来说,可以使用SSMS和SQLCMD这两种方法来连接到SQL Azure数据库,对于开发者来说,如果只是管理SQL Azure上的数据库,那么使用SSMS的方式连接到SQL Azure是最实用的;对于一些SQL上自动执行的任务脚本,可以采用SQLCMD的方式来连接到SQL Azure;在程序开发中,自然是使用ADO.Net连接到SQL Azure数据库了。
总结
SQL Azure 是构建在SQL Server技术之上的关系型云端数据库服务,要在SQL Azure上做云应用,首先就需要连接到SQL Azure数据库上去,我们可以通过SSMS、SQLCMD、ADO.Net这三种方式连接SQL Azure数据库,本文同时也对这三种方式的应用场景也做了一个简单的比较。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
不安全的Firebase数据库使关键数据面临风险
当开发人员无法对支持其移动应用程序的数据库或云实例执行身份验证时,这里会发生一种最简单且最具破坏性的安全事件。 […]
-
真正的甲骨文云战略vs. AWS和Azure
如今,甲骨文云战略正遭受重创。原产品开发主管Thomas Kurian离开,加盟谷歌云计算部门,再加上甲骨文混 […]
-
FaunaDB分布式云数据库瞄准事务性NoSQL
作为云计算平台领导者,近日AWS在其NoSQL软件-DynamoDB中增加了对事务处理工作负载的支持,从而进一 […]
-
Amazon RDS on VMware扩展内部云数据库
VMware和AWS公司围绕混合云深化了合作伙伴关系,并推出产品使VMware客户可在自己数据中心内访问亚马逊 […]