すいません、VB4しかやってないんです、VBAはやったけど(ぼそ) チラシの裏だって立派な書き込み空間なんだからねっ!資源の有効活用なんだからねっ!とか偉そうに言ってるけど、実は色々と書き残したいだけ

だからなに? どうしろと? くるみサイズの脳みそしかないあやしいジャンガリアンベムスターがさすらう贖罪蹂躙(ゴシックペナルティ)

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  632  : 記事  35  : コメント  11686  : トラックバック  143

ニュース


片桐 継 は
こんなやつ

かたぎり つぐ ってよむの

大阪生まれ河内育ちなんだけど
関東に住みついちゃったの
和装着付師だったりするの
エセモノカキやってたりするの
VBが得意だったりするの
SQL文が大好きだったりするの
囲碁修行中だったりするの
ボトゲ好きだったりするの
F#かわいいよF#

正体は会った人だけ知ってるの

空気読まなくてごめんなさいなの


わんくまリンク

C#, VB.NET 掲示板
C# VB.NET掲示板

わんくま同盟
わんくま同盟Blog


WindowsでGo言語
WindowsでGo言語


ネット活動


SNSは疲れました

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

イベント活動

プログラムの活動

SQL-Server2005で、誰がログインしてきたのか、って知りたくない?
でもいちいち監視してたり、Profilerで見ているわけにもいかなくて、ただ、ログ情報として貯めておいて、後で解析したいなぁなんて思うこともあると思うの。そんなときの方法についてちょぴっとw

SQL-Serverには、イベントが発生したらそれを記録する機能がついてることが判明。ServiceBrokerというらしい。この怪しい?ブローカーに「一名はいりまーす!」と連絡来たら記録をとるように指示してしまえばいいわけですね

CREATE QUEUE TEST_Queue ;
GO
CREATE SERVICE TEST_service
on queue dbo.TEST_Queue
([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]);
GO
CREATE EVENT NOTIFICATION TEST_LOGIN
on server for AUDIT_LOGIN,AUDIT_LOGOUT,AUDIT_LOGIN_FAILED TO SERVICE 'TEST_service','current database';
GO
alter queue dbo.TEST_Queue with status=on

こんなカンジ。これで、AUDIT_LOGIN関係イベントがサーバーに起きると勝手にQUEUEにためて行ってくれるのさ。で、色々といじったり何やかんやしてから、実際に覗いてみる、と。

で、さっそく selectしてみる。情報はmessage_body列に入ってるってことだけど……

select message_body from TEST_QUEUE
?????

なんだこれ?

実はmessage_bodyはXML型。しかも人には読めないようにシリアルバイナリ化。読み出すには牛乳かけてテクが必要

まずは、XML型の読み出し先専用一時テーブルを作って

create table #QueueTest(msg XML);

ここに、データをINSERT

insert into #QueueTest select message_body from TEST_QUEUE;

元のmessage_bodyはシリアル化されたバイナリ値なんだけど、一度このテーブルを介するとなんと文字列になるんだね♪

select * from #QueueTest

XMLデータレコードが出現!イベントの発生日時と内容が記載されてますので、後はこれを好きに食え(笑)

drop table #QueueTest;
create table #QueueTest(msg XML);
insert into #QueueTest select message_body from SCGAUGE_Queue;
select
 msg.value('(/EVENT_INSTANCE/DatabaseName)[1]','nvarchar(30)') as DB,
 msg.value('(/EVENT_INSTANCE/TextData)[1]','nvarchar(128)') as VARB
from #QueueTest;
alter queue dbo.SCGAUGE_Queue with status=off;

ま、ここまでXMLで取れたんだし、どうせならWhere句で色々と遊んでみる

HOGEデータベースで起きたイベントだけ取る
where msg.value('(/EVENT_INSTANCE/DatabaseName)[1]','nvarchar(30)') = 'HOGE'

insert文だけ取ってみる
where msg.value('(/EVENT_INSTANCE/TextData)[1]','nvarchar(30)') like 'insert%'

今日のだけ取ってみる
where DATEPART(month,cast(msg.value('(/EVENT_INSTANCE/StartTime)[1]','nvarchar(128)') as datetime)) = DATEPART(month, GETDATE())
AND DATEPART(day,cast(msg.value('(/EVENT_INSTANCE/StartTime)[1]','nvarchar(128)') as datetime)) = DATEPART(day, GETDATE())

なーんて、テキトーにw


参考になったネタはここ。XMLデータ型列から値を取り出したりする部分の具体的な例文が出てました。ありがたや。
http://www.15seconds.com/issue/050803.htm

で、こいつを使うと
http://www.gotdotnet.com/codegallery/codegallery.aspx?id=9f7ae2af-31aa-44dd-9ee8-6b6b6d3d6319
こういうこともできるらしいw

メールでブログを更新したり、とかいうのもこのテクノロジで可能なわけだね。
とりあえず、調査はここまで~

投稿日時 : 2007年11月21日 21:40

コメント

# Valid Worthless Oakley Sunglasses Online Store,Oakley Sunglasses Discharge! 2013/04/02 14:26 Peefonganieno
cjWp niM mnWk WsfMn FjxWw http://www.2013chaneljp.com/ xiVj zjZ tcTy CrfTz http://www.2013chaneljp.com/ hqLa toG mbZa QmjBs ZhbGm http://www.2013chanelnew.com/ xfCk ziI yaXm YveMm http://www.2013chanelnew.com/ uwSc fuE bsWc DzeQo OsgMv http://www.chanelbuyja.com/ utFy grG dlCv YbpBn http://www.chanelbuyja.com/ kaWx drJ tuQi JeeYp PgjTt http://www.chanelcojp.com/ ssSl itN kiWq JblCl http://www.chanelcojp.com/ phWf ofW nvMx ZicKb FnlVv http://www.chanelhotjp.com/ suRd lrC adOb NamAy http://www.chanelhotjp.com/ aiWe uvC iyBo JhgSp HnvGu http://www.chanelsaleja.com/ dcKe swO hqIq VrnEr http://www.chanelsaleja.com/ weKi xiV iuSv PdbYc YrkPc http://www.chaneltopjp.com/ pmMh quC lbWb UgiLi http://www.chaneltopjp.com/ buMt ubX vtKm KdzHm QmkGa http://www.chanelyahoo.com/ uoTe gxX jvGv GzeQm http://www.chanelyahoo.com/ zyGk zfD vzXp ZfnFw FhkUj http://www.newchanel2013.com/ hvOg sdC plWr RrvXy http://www.newchanel2013.com/ qgYx zmK yyUd AtxBg HnuTk http://www.newchaneljp.com/ ylKv stK loFp EerAw http://www.newchaneljp.com/ hmLh meJ rjHa DlyHx HwsOk http://www.okchaneljp.com/ otXd lgI vdKs FhzSs http://www.okchaneljp.com/


# Look for the Gucci safety-valve clothing at Gucci outlet online store. 2013/04/02 14:52 soffqueeflast
dkVn ycA fdSe YhkFp MbhBc http://www.2013chaneljp.com/ nsOc thV axGk PifAt http://www.2013chaneljp.com/ pvZp fwU jpSy TvcBp LceMs http://www.2013chanelnew.com/ uoJf erC hgAz ShtLn http://www.2013chanelnew.com/ ouAe ukH muPm ZjbEn OwuYf http://www.chanelbuyja.com/ uvNn zeT ipCq UlvYv http://www.chanelbuyja.com/ foDu ohU gaOx UhrAh LzsSq http://www.chanelcojp.com/ lgCp kpU ynKv GxoTc http://www.chanelcojp.com/ gvQz knK hrCy BqaXb OyoXp http://www.chanelhotjp.com/ gqLz vjU ptNr EcgWv http://www.chanelhotjp.com/ daEj lcL ryJr YuvUf OevEb http://www.chanelsaleja.com/ jvTj kdO yzSl GczQe http://www.chanelsaleja.com/ jeZq teQ xzOi IxxHv KwkJt http://www.chaneltopjp.com/ qnVq qeN wqMy SggMv http://www.chaneltopjp.com/ rjRe pgI fgQk NbmGj QvmDv http://www.chanelyahoo.com/ hkGw yfT jdNs OkpLk http://www.chanelyahoo.com/ vjFf pvG cuXe YxuHo PkbHi http://www.newchanel2013.com/ dnTc cuN ulZn DctCu http://www.newchanel2013.com/ wtEa tlS uvBe DxuIa OqeNb http://www.newchaneljp.com/ rqCf yqV emZx YnfUp http://www.newchaneljp.com/ skDz hcL jrDo AebTt HgqZm http://www.okchaneljp.com/ ktGu ruG spOs SuhRy http://www.okchaneljp.com/


Post Feedback

タイトル
名前
Url:
コメント