ラベル SQL Server の投稿を表示しています。 すべての投稿を表示
ラベル SQL Server の投稿を表示しています。 すべての投稿を表示

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文終了 --

2012年2月1日水曜日

[Lync] ユーザーがサインアウトした日時を取得するには

TechNet Forumの投稿より。以前ユーザーのサインイン日時を取得する方法を記事にしましたが、監視サーバーを展開済みであれば、サインイン日時に加えてサインアウト日時も監視用DB(LcsCDR)から取得できます。SQL文のサンプルは下記の通り。
select u.UserUri, r.RegisterTime as "Sign-in time", r.DeRegisterTime as "Sign-out time" from LcsCDR.dbo.Registration r inner join LcsCDR.dbo.Users u on r.UserId = u.UserId
サインイン日時とサインアウト日時が分かれば、ある期間にユーザーが合計何時間サインインしていたかを割り出して、ユーザーの利用度合いを測る、といった応用が考えられます。

2012年1月23日月曜日

[Lync] ユーザーが最後にサインインした日時を取得するには

Lyncでユーザーが最後にサインインした日時は、Lync ServerのDB上に格納されており、簡単なSQL文で取得することができます。詳しい方法は下記サイトを参照。
How to Get the Last Time a User Registered with a Front End
注意すべきは、OCSではバックエンドDBに格納されるが、Lync Serverではフロントエンドのローカル構成ストア(RTCLOCALインスタンス)に格納されるようになったという点です。

ユーザーが最後にサインインした日時を定期的に取得し、過去1週間に1度でもサインインしたユーザーの数を集計する等しておけば、Lyncがどれだけユーザーに普及しているかの概況を把握するのに使えます。