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

日期: 2010-11-14 作者:Roman Rehak翻译:宋广磊 来源:TechTarget中国 英文

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

  演示代码如下:   using (SqlConnection cn = new SqlConnection(…))   {   cn.Open();   using (SqlCommand cmd = cn.Creat……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

接上文: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打交道时可能遇到的几个问题,并提供了如何处理这些问题的指南和最佳实践。

相关推荐