更改服务层或性能级别以及数据库停机时间

时间:2014-10-23 12:48:27

标签: azure azure-sql-database

我已经确定我们可能需要尽快扩展到下一个服务层(标准到高级)。

对于其他感兴趣的人,this article为分析SQL数据库提供了很好的指导。

我的问题:在扩展到不同的服务层或性能级别时是否有停机时间?

4 个答案:

答案 0 :(得分:6)

取决于您对“停机时间”的定义。我多次改变了性能水平。从标准到高级,我们遇到了很多错误。以下是一些示例:

  

System.Data.SqlClient.SqlException(0x80131904):传输级别   从服务器接收结果时发生错误。 (服务提供商:   TCP提供程序,错误:0 - 强制关闭现有连接   远程主机。)---> System.ComponentModel.Win32Exception   (0x80004005):远程强制关闭现有连接   主机。

     

System.Data.SqlClient.SqlException(0x80131904):ALTER DATABASE   命令正在进行中。请至少等五分钟   登录数据库'...',以便命令完成。   在命令完成之前,某些系统目录可能已过期。   如果您更改了数据库名称,请使用新数据库名称   未来的活动。

     

System.Data.SqlClient.SqlException(0x80131904):服务有   遇到处理您的请求时出错。请再试一次。错误   代码40174.当前命令发生严重错误。该   结果,如果有的话,应该被丢弃。

     

System.Data.DataException:无法提交事务。该   基础连接未打开或尚未初始化。

我的建议是尽可能在非工作时间或维护期间更改性能等级。

答案 1 :(得分:5)

更换层时没有停机时间,我已经完成了几次。但是,这种变化并不是立竿见影的,它确实需要至少5分钟,但在此期间它将正常运作。

答案 2 :(得分:5)

如上所述,这取决于您对停机时间的定义。当事务可以回滚时,层会有一个短暂的时间段。

从此页面的“向上扩展或向下扩展...”部分:https://docs.microsoft.com/en-us/azure/sql-database/sql-database-service-tiers

  

请注意,更改数据库的服务层和/或性能级别会在新的性能级别创建原始数据库的副本,然后将连接切换到副本。在此过程中没有数据丢失,但在我们切换到副本的短暂时间内,与数据库的连接被禁用,因此可以回滚一些正在进行的事务。此窗口有所不同,但平均不到4秒,超过99%的情况下不到30秒。很少,特别是如果在禁用连接时飞行中有大量交易,这个窗口可能会更长。

由于“正在进行的事务”通常是指在连接断开时运行的事务,因此似乎在事务中间可能会断开任一连接,或者,跨多个连接操作的事务可能会失败并在以后回滚一个连接在切换期间被拒绝。如果是后者,则在切换期间可能不会经常影响简单事务。如果是前者,那么繁忙的数据库几乎肯定会看到一些影响。

答案 3 :(得分:2)

更改TIERS时没有停机时间,但更改结算模式时会出现停机时间。您必须备份数据库,在新的计费模型服务器中启动新数据库并还原它们。然后,您必须更改应用程序或网站中的所有数据库引用。如果要从不再支持的计费层更改层,则需要先迁移到新的计费模型。我们学到了很多困难。微软也不容易 - 它不是一个按钮操作。