SQL Azure数据库部署最佳实践(下)

云计算
如果你运行一个长事务,或者如果连接空闲时间过长,SQL Azure也会切断现有连接。在这两种情况下,阈值是五分钟。那么,你将如何处理呢?你可以在最短时间内保持连接打开避免闲置事务。一旦你执行完一条命令、关闭连接并把连接返回到池中。

接上文:SQL Azure数据库部署***实践(上)

如果你运行一个长事务,或者如果连接空闲时间过长,SQL Azure也会切断现有连接。在这两种情况下,阈值是五分钟。那么,你将如何处理呢?你可以在最短时间内保持连接打开避免闲置事务。一旦你执行完一条命令、关闭连接并把连接返回到池中。

演示代码如下:

using (SqlConnection cn = new SqlConnection(…))
{
cn.Open();
using (SqlCommand cmd = cn.CreateCommand())
{
cmd.CommandText = …;

}
}


如果在一个连接池中获得连接,连接失效的几率是最小的。不过,如果你的命令执行超过五分钟并且很难处理则您的连接将由SQL Azure关掉。您可以把更新划分为若干批量的小任务。除此之外,需要确保数据库是索引良好的。

由于系统负载过高,SQL Azure限制数据库活动时您的连接也会断开。

为了防止在任何情况下的连接断开,应开发SQL Azure的应用程序使它们能够处理连接的错误并且不用用户参与即可透明的重连接。

此外,您可能需要添加代码来处理因为超时或者连接断开时对数据库进行的更新重试。这将是大量的额外代码,但幸运的是微软已经做了一些工作。在微软AppFabric客户咨询小组网站上检索到“Best Practices for Handling Transient Conditions in SQL Azure Client Applications”这篇文章。该文介绍了可能遇到的连接错误并给出如何处理它们的示例代码。该文结尾有一个链接可以让你下载示例代码。

***一个建议是如何获得SQL Azure的客户支持。如果您的应用程序遇到问题并需要帮助,请先确保您获得应用程序会话的ID。SQL Azure在他们的网站上记录错误和活动。如果你给他们会话ID,支持团队可以更容易弄清楚是怎么回事。

下面的C#代码显示了如何检索连接的会话ID:

cmd.CommandText = "Select CONVERT(nvarchar(36), CONTEXT_INFO())";
SessionId = new Guid(cmd.ExecuteScalar().ToString());


本文讨论了若干开发人员和数据库管理员在与SQL Azure打交道时可能遇到的几个问题,并提供了如何处理这些问题的指南和***实践。
 

【编辑推荐】

  1. SQL Azure数据库部署***实践(上)
  2. 微软公布云计算平台Azure收费模式细节
  3. 云计算意在长远,微软云计算服务Windows Azure已经启用
  4. 技术透析:Windows Azure Platform框架与组成
  5. 微软Windows Azure Platform技术解析
  6. 走近微软云:SQL Server到Azure数据同步
  7. 当微软Azure遭遇亚马逊EC2:五大关键区别
责任编辑:王勇 来源: TechTarget中国
相关推荐

2010-11-16 11:26:20

SQL Azure数据

2016-09-07 14:08:01

AzureSQLJSON

2016-10-09 10:59:26

Azure SQL数据库JSON

2010-11-11 10:46:20

微软SQL Azure云端

2015-01-19 10:18:53

Azure SQL数据库审计云安全

2011-10-28 09:53:50

数据库安全数据安全

2012-02-07 09:17:13

2013-03-28 11:07:46

Windows AzuSQL AzureWindows Azu

2010-10-09 10:34:12

SQL Azure云数

2010-11-16 09:12:42

SQL Azure

2010-11-30 11:26:49

2013-05-22 15:29:28

微软云计算微软公有云Windows Azu

2012-02-13 11:31:34

SQL Azure微软云计算

2011-06-24 15:57:35

SQL AzureDAC

2015-03-27 13:02:17

Azure SQL D微软云数据库

2016-09-23 20:20:10

2012-01-05 09:45:31

微软云数据库SQL Azure

2011-05-19 10:53:17

SQL Azure

2022-03-29 10:55:10

Mysql数据库

2010-07-12 12:41:16

SQL Server
点赞
收藏

51CTO技术栈公众号