先日投稿した、Azure ストレージに DB バックアップを取得する際に他処理連携を考慮したステータスファイルを作成 のステータスファイルを使用したリストアのサンプルを書いてみたいと思います。
Archive for 3月, 2015
Azure PowerShell をインストールしている環境で SQLPS をインポートすると「SQL Server サービスの情報を取得できませんでした。」の警告が発生する
Azure PowerShell をインストールしている環境で「Import-Module SQLPS」を実行すると以下の警告が発生することがあります。
警告: SQL Server サービスの情報を取得できませんでした。'Microsoft.WindowsAzure.Commands.SqlDatabase.Types.ps1xml' の WMI への接続が次のエラーで失敗しました: RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA) 警告: SQL Server サービスの情報を取得できませんでした。'Microsoft.WindowsAzure.Commands.SqlDatabase.Types.ps1xml' の WMI への接続が次のエラーで失敗しました: RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA) 警告: SQL Server サービスの情報を取得できませんでした。'Microsoft.WindowsAzure.Commands.SqlDatabase.Types.ps1xml' の WMI への接続が次のエラーで失敗しました: RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA) 警告: SQL Server サービスの情報を取得できませんでした。'Microsoft.WindowsAzure.Commands.SqlDatabase.Types.ps1xml' の WMI への接続が次のエラーで失敗しました: RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA) 警告: SQL Server サービスの情報を取得できませんでした。'Microsoft.WindowsAzure.Commands.SqlDatabase.Types.ps1xml' の WMI への接続が次のエラーで失敗しました: RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA) 警告: SQL Server サービスの情報を取得できませんでした。'Microsoft.WindowsAzure.Commands.SqlDatabase.dll' の WMI への接続が次のエラーで失敗しました: RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA) 警告: SQL Server サービスの情報を取得できませんでした。'Microsoft.WindowsAzure.Commands.SqlDatabase.dll' の WMI への接続が次のエラーで失敗しました: RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA) 警告: SQL Server サービスの情報を取得できませんでした。'Microsoft.WindowsAzure.Commands.SqlDatabase.dll' の WMI への接続が次のエラーで失敗しました: RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA) 警告: SQL Server サービスの情報を取得できませんでした。'Microsoft.WindowsAzure.Commands.SqlDatabase.dll' の WMI への接続が次のエラーで失敗しました: RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA) 警告: SQL Server サービスの情報を取得できませんでした。'Microsoft.WindowsAzure.Commands.SqlDatabase.dll' の WMI への接続が次のエラーで失敗しました: RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA)
Azure ストレージに DB バックアップを取得する際に他処理連携を考慮したステータスファイルを作成
Azure ストレージに取得したバックアップはストレージアカウントの情報が使用できれば、他の環境からも利用できますので、サーバー間の DB コピー等で利用することができます。
ベースとなるサーバーで DB バックアップ中に他サーバーからバックアップを利用する処理が実行されると、リストアに失敗するかと思いますので、バックアップ中を示す、ステータスファイルを作成するサンプルを書いてみました。
作成にあたって我らが TaaS 先輩の記事を熟読させていいただきました。
さすが、TaaS、今後 SQL Server にも手を伸ばすそうなので、胸の高鳴りが止まりません。
PowerShell で Windows Azure Blobストレージ へファイルをアップロードする
今回は SQL Server PowerShell のコマンドレットを使用してバックアップを取得していますが、こちらについては
PowerShell の使用による Windows Azure BLOB ストレージ サービスへの複数データベースのバックアップ
が参考になります。
SQL Server 2012 SP1 CU2 以降の環境であれば、「Backup-SqlDatabase」で「BackupContainer」が指定できるようになり、コマンドレットから Azure ストレージにバックアップを作成できます。
ファイル名については自動的に生成されるようで、サーバー名 / 日付が付与されたユニークなファイルでバックアップが取得されるようです。
PowerShell で可用性グループの情報を取得した場合のリフレッシュについて
SQL Server の PowerShell では、SQL Server の PS プロバイダー経由で可用性グループの情報を取得することができます。
AlwaysOn ポリシーを使用した可用性グループの正常性の確認 (SQL Server)
SQL Server PowerShell プロバイダー
Microsoft.SqlServer.Management.Smo 名前空間
具体的には以下のようなコマンドで可用性グループの情報を取得できます。
Import-Module SQLPS -DisableNameChecking Get-ChildItem SQLSERVER:\SQL\$($ENV:COMPUTERNAME)\DEFAULT\AvailabilityGroups\AlwaysOn-AG\AvailabilityReplicas
Azure ストレージに直接バックアップを取得した場合のバックアップのクリーンアップについて
元になる情報は、Remove SQL Backup Files from your Azure Storage となります。
SQL Server 2012 SP1 CU4 以降では、Azure ストレージに直接バックアップを取得できるようになりました。
SQL Server Backup to URL
SQL Server 2012 SP1 CU4 で機能が追加された際には、メンテナンスプランを使用してのバックアップ取得先として指定することはできなかったのですが、SQL Server 2014 でメンテナンスプランの取得先として、URL (Azure ストレージ) を指定できるようになりました。