三方法解决SQL Server与云端数据库连接Word格式文档下载.docx
《三方法解决SQL Server与云端数据库连接Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《三方法解决SQL Server与云端数据库连接Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
(1)在SSMS登录时请不要连接对象管理器(ObjectExplorer),因为SQLAzure中有些视图不存在,对象管理器可能无法正常工作。
请直接新建查询打开连接对话框,选择服务器类型,输入服务器名称、用户名、密码。
服务器名称的格式是:
{yourserver},这里为了和服务器名称相区别,使用了yourservername来表示,在实际应用中,yourservername是已经创建的服务器名称,这个名称可以从你的SQLAzure门户的服务器管理页面获得。
都输入后如图2所示:
图2使用SSMS连接SQLAzure
但是很不幸“杯具”发生了,我们没有连接上SQLAzure,并且会得到如下的一个错误信息
告诉我们“sys.configurations”是一个非法的对象名。
这是由于SQLServerManagementStudio尚未完美的支持SQLAzure数据库(SQLServer2008R2解决了这个问题)。
其解决方法是:
关掉错误窗口,现在只有SSMS的窗口了,或者再次打开SSMS,点击图2中的取消。
(2)点击新建查询,如图3所示:
图3新建查询
点击新建查询后,再次弹出图2所示的窗口,选择服务器类型,输入服务器名称、用户名、密码,点击连接就可以了。
(3)虽然已经连接上了,这里“连接上”的标志是在“可用数据库”的下拉列表框里列出了所有的数据库,包括默认数据库master,这个库是只读的。
选择我们已经创建的TestDb数据库,但是今天太不走运了,继续“杯具”,错误提示数据库不能被访问。
(4)解决上述错误的方法是:
重复步骤
(2),输入完服务器名、用户名、密码后,不直接点击“连接”,点击“选项”,选择TestDB数据库,如图4所示:
图4使用选项连接TestDB数据库
点击“连接”,这次成功连接到了TestDB数据库,连接成功后,会打开一个新的空白查询窗口,输入如下SQL命令:
select*fromsys.databases
列出了我们当前具有的数据库信息。
除此之外,我们还可以执行如下所示的几个命令:
SQL语句及功能
createdatabaseTestCloudDB创建名为TestCloudDB的数据库
createuseruser01forloginsqladmin为sqladmin创建一个名为user01的登陆用户
createloginuser01withpassword'
pass@word'
创建user01的密码为pass@word
表1SQL语句示例
使用SQL命令连接SQLAzure数据库
SQLCMD.exe是一个命令行实用工具,用来在SQLServer上执行命令。
SQLCMD.exe是随SQLServer安装上来的。
在第一种方法中我们使用SSMS来连接SQLAzure数据库,SSMS也可以管理SQLServer数据库,并且提供了友好UI来供用户操作。
但是在实际应用中,我们经常需要自动管理SQLServers,这时就轮到SQLCMD.exe华丽登场了。
通过SQLCMD.exe还可以自动执行SQL命令和SQL脚本文件。
使用SQLCMD连接到SQLAzure数据库的步骤如下:
(1)以管理员方式打开命令提示符窗口,如图5所示:
图5打开命令提示符窗口
Sqlcmd命令行参数,如图6所示:
有关sqlcmd的参数说明,感兴趣的读者可以参考MSDN:
(2)可以使用下面的sqlcmd命令行连接到SQLAzure数据库。
Sqlcmd–U-P-S-D
参数说明:
Userlogin:
登陆数据库的用户名,如sqladmin@unjikh4kim
Servername:
服务器名称,如unjikh4kim
Passwords:
密码
FullyQualifiedServerName:
服务器的全名,如
databasename:
数据库名称,如TestDB
执行示例命令行:
sqlcmd-Usqladmin@unjikh4kim-Ppass@word-S-dTestDB
执行完成后,连接上数据库,会返回1,否则返回错误信息。
(3)连接上数据库后,可以使用如下的命令行:
创建表的示例命令行:
CREATETABLECloudTable
(ColNumber1intprimarykeyclustered,ColNumber2varchar(50),ColNumber3float);
显示系统信息的命令行:
SELECT*FROMsys.tables
不仅支持创建数据库、表,还可以执行插入、删除、查询语句,但是需要注意的是在第一和第二两种方法连接到SQLAzure数据库中,并不是所有的SQL语句都被支持,还有一些不被推荐使用的方式尽量避免使用,感兴趣的读者可以参考:
中文:
使用ADO.Net连接SQLAzure数据库
在.Net环境下,连接数据库最常用的方法是使用ADO.Net。
在SQLAzure环境下,ADO.Net可以继续使用,这样对于.Net环境下的开发者来说,不用学习新的知识与技能就可以很容易的连接到SQLAzure数据库上,这也符合微软所一直在宣传的云计算战略,减少了单独学习云应用开发的成本。
要使用ADO.Net连接SQLAzure,有两种方法,一种是通过SQLAzure的门户管理页面提供的连接字符串来连接;
另一种方法是在程序里硬写,下面我们来介绍第二种方法。
使用程序连接到SQLAzure,需要使用System.Data.SqlClient.SqlConnectionStringBuilder类,实例代码如下:
privatestringGetDbConnection()
{
SqlConnectionStringBuilderconnBuilder=
newSqlConnectionStringBuilder();
stringserver="
"
;
connBuilder.DataSource=server;
connBuilder.InitialCatalog="
TestDB"
connBuilder.Encrypt=true;
connBuilder.TrustServerCertificate=true;
connBuilder.UserID="
sqladmin"
connBuilder.Password="
pass@word"
returnconnBuilder.ToString();
}
使用连接字符串,执行SQL语句
privatevoidExcuteSQL()
using(SqlConnectionconn=newSqlConnection(GetDbConnection()))
using(SqlCommandcommand=conn.CreateCommand())
conn.Open();
//创建表
command.CommandText=
"
CREATETABLEMyTable1(Column1intprimarykeyclustered,"
+
Column2varchar(50),Column3datetime)"
command.ExecuteNonQuery();
//插入数据
command.CommandText=String.Format
("
INSERTINTOMyTable1(Column1,Column2,Column3)"
values({0},'
{1}'
'
{2}'
)"
1,"
TestData"
DateTime.Now.ToString("
s"
));
introwsAdded=command.ExecuteNonQuery();
DisplayResults(command);
显示执行结果:
privatevoidDisplayResults(SqlCommandcommand)
{
command.CommandText="
SELECTColumn1,Column2,Column3FROMMyTable1"
using(SqlDataReaderreader=command.ExecuteReader())
while(reader.Read())
Console.WriteLine(command.CommandText);
Console.WriteLine(String.Format("
Column1:
{0},Column2:
{1},Column3:
{2}"
reader["
Column1"
].ToString().Trim(),
Column2"
Column3"
].ToString().Trim()));
}
对于DBA来说,可以使用SSMS和SQLCMD这两种方法来连接到SQLAzure数据库,对于开发者来说,如果只是管理SQLAzure上的数据库,那么使用SSMS的方式连接到SQLAzure是最实用的;
对于一些SQL上自动执行的任务脚本,可以采用SQLCMD的方式来连接到SQLAzure;
在程序开发中,自然是使用ADO.Net连接到SQLAzure数据库了。
总结
SQLAzure是构建在SQLServer技术之上的关系型云端数据库服务,要在SQLAzure上做云应用,首先就需要连接到SQLAzure数据库上去,我们可以通过SSMS、SQLCMD、ADO.Net这三种方式连接SQLAzure数据库,本文同时也对这三种方式的应用场景也做了一个简单的比较。