2014年2月6日木曜日

[SQL Server] ミラーリングされたDBについて、プライマリDBのみトランザクションログバックアップ(切り捨て)を行うT-SQL文

Lync ServerのバックエンドDBをミラーリングした場合、トランザクションログの肥大化による障害を回避するため、定期的なトランザクションログバックアップが必要となります(参考KB)。プライマリとミラーのスイッチを考慮すると、ミラーを構成するSQL Serverの両インスタンスでバックアップを実行するのが確実ですが、その場合ミラーDBに対するバックアップは失敗し、ログにエラーが出力されます。

エラーそのものは製品仕様に基づくため問題ではないものの、他のエラーが埋もれてしまう懸念と気分の問題から、ミラーリングされたDBのステータス(プライマリかミラーか)を取得し、プライマリの場合のみトランザクションログバックアップを実行するT-SQL文を作成しました。これをSQL Server Agentで毎時実行することで、ラボ環境にて余計なエラー出力なくトランザクションログを切り捨てることができています。ラボ環境では切り捨てだけできればよかったのでバックアップ先をnullデバイスにしていますが、バックアップデータが必要な場合でも簡単に変更して再利用可能です。

-- T-SQL文開始 --
declare @database_name sysname
declare principal_databases cursor
    local static read_only forward_only
    for select name
    from sys.databases d, sys.database_mirroring m
    where d.database_id = m.database_id
    and m.mirroring_role_desc like 'PRINCIPAL'
    order by name
open principal_databases
fetch next from principal_databases into @database_name
while @@fetch_status = 0 begin
    backup log @database_name to disk = N'NUL'
    fetch next from principal_databases into @database_name
end
close principal_databases
deallocate principal_databases

-- T-SQL文終了 --

2014年2月4日火曜日

[Lync] ラボ環境でPBXを利用するには

AsteriskNOWとX-Liteを使うことで、Lync Server 2010 / 2013のラボ環境で、PBXを利用した機能検証・テストを手軽に行うことができるようになります。導入・設定までの詳細な手順は、以下の記事が参考になります。

Series: Exchange 2013 and Lync 2013 Integration with AsteriskNOW PBX Pt. 1
Series: Exchange 2013 and Lync 2013 Integration with AsteriskNOW PBX Pt. 2
Series: Exchange 2013 and Lync 2013 Integration with AsteriskNOW PBX Pt. 3

以下、記事に沿ってHyper-V上のラボ環境に導入・設定してみて気づいた注意点です。

  • 記事ではメモリ1GBとありますが、512MBでも設定後の状態で約半分空きがあるので、軽めの利用であればそれで十分そうです。

  • ベースがCentOSであるため、Hyper-Vの統合サービスを簡単に導入できます。それにより、レガシーでないネットワークアダプターも利用できるようになります。

  • インストール時には、ネットワークアダプターがないとインストールが中断されてしまうため、最低1つのレガシーネットワークアダプターが必要です。Hyper-Vの統合サービスを導入してレガシーでないネットワークアダプターを追加した後は、レガシーネットワークアダプターは削除しても問題ありません。

  • レガシーネットワークアダプターはインストール時にeth0として認識され、削除された後もeth0が他のネットワークアダプターに割り当てられることはありません。私はそれが気になったので、以下のファイルでMACアドレスが指定されている個所を編集し、eth0の割り当てを変えました。
    /etc/udev/rules.d/70-persistent-net.rules
    /etc/sysconfig/network-scripts/ifcfg-eth0

  • 私の場合、記事通りの設定ではSIPがTCPでListenしませんでした。記事のコメント欄でも報告されていますが、/etc/asterisk/sip_custom.confにtcpenabled=yesを追加してサービスを再起動したところ、TCPでListenされるようになりました。