NOBTAの気ままにITブログ

Azure全般 / SQL Serverに関する情報を発信していきます。

Azure SQL Database 接続問題 (Connectivity) の対処方法 (3 : 断続的に接続が失敗する場合)


スポンサーリンク

Azure SQL Database 接続問題 (Connectivity) の対処方法として、「1 : Azure外環境からの接続」および 「2 : Azure内環境からの接続」についてまとめてみました。

今回は、Azure SQL Database への接続が断続的に失敗するような現象発生時の対処方法について、自分の整理も兼ねて、まとめてみようと思います。

 

# 前回までにまとめた内容 

# 1 : Azure外環境からの接続

 

# 2 : Azure内環境からの接続

 

Azure SQL Database への接続が断続的に失敗するような現象は、データセンター側の問題 (データベースが配置されたクラスタノード側で障害が発生しているなど)、サービスレベルに応じたデータベースのリソース制限など、様々な要因によって発生する可能性があるかと思います。

サービスレベルに応じたデータベースのリソース制限が要因の場合、データベースへの処理量を減らすなどの対処を実施することにより問題を解決できる可能性がありますが、即座にデータベースに対して実行されている処理を完了してリソースを解放したい場合、データベースの再構成(Reconfiguration:リコンフィグレーション) を実施することで可能となります。

また、データセンター側の問題が疑われる場合においても、データベースの再構成を実施することにより、現象が解消できる可能性があります。

手動でデータベースの再構成を実施する方法について、以下にまとめてみます。

 

 

Azure SQL Database 手動によるデータベースの再構成 (Reconfiguration) 

Invoke-AzSqlDatabaseFailover (PowerShell) コマンドを実行 

「Invoke-AzSqlDatabaseFailover」 (PowerShell) コマンドを実行することにより、手動でデータベースの再構成(Reconfiguration) を実行することが可能です。 

Invoke-AzSqlDatabaseFailover -ResourceGroupName "<リソースグループ名>" -ServerName "<Azure SQL Database サーバー名" -DatabaseName "<データベース名>"

 

# コマンド例 

 

Invoke-AzSqlDatabaseFailover -ResourceGroupName "rg-sql" -ServerName "azsqlsvr001" -DatabaseName "db1"

 

 ※ Azure ポータル - Cloud Shell (PowerShell) から「Invoke-AzSqlDatabaseFailover」コマンドを実行することが可能です。

f:id:nobtak:20200813003818p:plain

 

[補足] 

Invoke-AzSqlDatabaseFailover」コマンドは、1回実行すると30分間は再実行できなくなります。

 

SQL データベース - 設定:構成 から 価格レベル、サービスレベル (仮想コア数)を変更

SQL データベース - 設定:構成 から 価格レベル、サービスレベル (仮想コア数)を変更することで、 Invoke-AzSqlDatabaseFailover (PowerShell) コマンドを実行した場合と同様に、データベースの再構成(Reconfiguration) を行うことが可能です。

 

 

f:id:nobtak:20200813004535p:plain

 

※ 必要に応じて、価格レベル、サービスレベル (仮想コア数) を元の設定に戻す場合にも、データベースの再構成(Reconfiguration)が行われることになります。

 

[まとめ]

今回は、Basic、Standard および General Purpose サービス レベルを想定した内容となりますが、Premium、Business Critical サービス レベルの場合でも同様に「Invoke-AzSqlDatabaseFailover」コマンドを実行することが可能です。なお、Premium、Business Critical サービス レベルでは、SQL Server Always On 可用性グループと同様のテクノロジーを使用しているため、本コマンドの「-ReadableSecondary
」オプションを指定することで、フェールオーバーテストを手動で実行することが可能になるようなので、ゾーン冗長を構成した場合におけるアプリケーションの性能試験、再試行ロジックのテストを柔軟に実行することができるかと思います。

 

 

参考 URL