TimberLandChapelのTech Blog

TimberLandChapel が提供する技術Tips,思いつきメモ,雑感ブログです。
Office 互換リボン Release 1.0 をリリースしました。

購読

Books

INETAJ

Microsoft

SQL Server

TLC.com

クリエイティブ・コモンズ

情報処理関係官公庁

今期のアンケート

6月 2005 - 投稿

めもめも。

・XML Indexing

http://msdn.microsoft.com/XML/BuildingXML/XMLinNETFramework/default.aspx?pull=/library/en-us/dnxmlnet/html/XMLindexing.asp

・VS2005 イントロダクション

http://msdn.microsoft.com/vbasic/whidbey/introto2005/

・VS2005 でスレッディング

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/threadinginvb2005.asp

・VS2005 64bit

http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/2005062364bitLS/manifest.xml

2005 イントロダクション無料書籍ってすごいなぁ。。。

 

 

Posted 投稿者 timberlandchapel | : no comments
タグ :

http://support.microsoft.com/kb/KB898461

Windows Update による更新が入ります。

【概要】

Windows Update による更新は,更新をインストールするたびにパッケージインストーラをダウンロードしてから更新が実行されていました。

KB898461 によって,このパッケージインストーラがローカルにインストールされて常駐されます。

今後 Windows Update では,KB898461 が必須項目となり,パッケージインストーラのダウンロードは含まれなくなるようです。

また,この更新の影響をうけるのは Windows Update のみであって,Windows Update カタログによる更新には影響がないようです。

この更新によって明示的に再起動が促されることはありません。

Posted 投稿者 timberlandchapel | : no comments
この記事は@IT さんの Database Expert 会議室に投稿した記事のフォローアップです。
トレースフラグ 1204 とは
トレースフラグ 1204 を設定して SQL Server を起動すると,デッドロックに関するレポートが起動したコンソールに返され,エラーログに記録されるようになります。このレポートを利用して,デッドロックの状況を解析することができます。

トレースフラグ 1204 を設定して SQL Server を起動する
SQL Server の実行パスに移動する。
CD "C:\Program Files\Microsoft SQL Server\MSSQL\Binn"
[-T] トレースオプションに 1204 フラグを設定して SQL Server を起動する
sqlserver -T1204
名前付インスタンスにトレースフラグを設定して SQL Server を起動する 名前付インスタンスを起動する場合は,実際に起動するインスタンスに対応した Binn ディレクトリに移動する必要があります。
SQL Server の実行パスに移動する。
CD "C:\Program Files\Microsoft SQL Server\MSSQL$<InstanceName>\Binn"
[-S] オプションでインスタンス名を指定して,[-T] トレースオプションを 1204 に指定する。
sqlserver -S<InstanceName> -T1204
SQL Server が起動されると,コンソールはデッドロックの情報を待ち受けます
起動した SQL Server を停止するには
コマンド プロンプトから sqlservr を実行した場合は, [net コマンド] を使用して Windows 2000 サービスとして一時停止,停止または再開することができなくなります

起動した SQL Server を停止するには,[ctrl]+[C] を押してください
SQL Server をシャットダウンするかどうかのプロンプトが表示されます。

「y」を選択することで,SQL Server をシャットダウンすることができます。
デッドロックイベントのレポート
実際にデッドロックが発生すると,以下の様なレポートが出力されます。
ここでは,例としてサイクルデッドロックのレポートを表示しています。



Deadlock encountered .... Printing deadlock information
2005-06-28 12:53:17.48 spid4
2005-06-28 12:53:17.48 spid4 Wait-for graph
2005-06-28 12:53:17.48 spid4
2005-06-28 12:53:17.48 spid4 Node:1
2005-06-28 12:53:17.48 spid4 RID: 7:1:36:0 CleanCnt:1 Mode: X Flags: 0x2
2005-06-28 12:53:17.48 spid4 Grant List 0::
2005-06-28 12:53:17.48 spid4 Owner:0x19943340 Mode: X Flg:0x0 Ref:0 Life:02000000 SPID:53 ECID:0
2005-06-28 12:53:17.48 spid4 SPID: 53 ECID: 0 Statement Type: UPDATE Line #: 1
2005-06-28 12:53:17.50 spid4 Input Buf: Language Event: UPDATE [DataA] SET [DATA] = ''
2005-06-28 12:53:17.50 spid4 Requested By:
2005-06-28 12:53:17.50 spid4 ResType:LockOwner Stype:'OR' Mode: U SPID:51 ECID:0 Ec:(0x19ED9520) Value:0x199379a0 Cost:(0/1EC)
2005-06-28 12:53:17.51 spid4
2005-06-28 12:53:17.51 spid4 Node:2
2005-06-28 12:53:17.51 spid4 RID: 7:1:34:0 CleanCnt:1 Mode: X Flags: 0x2
2005-06-28 12:53:17.51 spid4 Grant List 0::
2005-06-28 12:53:17.51 spid4 Owner:0x19943400 Mode: X Flg:0x0 Ref:0 Life:02000000 SPID:51 ECID:0
2005-06-28 12:53:17.51 spid4 SPID: 51 ECID: 0 Statement Type: UPDATE Line #: 1
2005-06-28 12:53:17.51 spid4 Input Buf: Language Event: UPDATE [DataB] SET [DATA] = ''
2005-06-28 12:53:17.51 spid4 Requested By:
2005-06-28 12:53:17.53 spid4 ResType:LockOwner Stype:'OR' Mode: U SPID:53 ECID:0 Ec:(0x19F05520) Value:0x19937940 Cost:(0/120)
2005-06-28 12:53:17.53 spid4 Victim Resource Owner:
2005-06-28 12:53:17.53 spid4 ResType:LockOwner Stype:'OR' Mode: U SPID:53 ECID:0 Ec:(0x19F05520) Value:0x19937940 Cost:(0/120)






このレポートから読み取るべき情報は,



「[TestDatabase] の [DataA] テーブルと [DataB] テーブルを更新しようとした [SPID:53] と [SPID:51] がデッドロックを発生させて, [SPID:53] が停止された」



となります。
停止されたプロセスの把握
[Victim Resource Owner] 項目で,デッドロック解消のために停止されたプロセスの情報がレポートされます。
[SPID] 53 を持つ,[ResType] LockOwner であることがレポートされています。

SPID から sp_Lock
この [SPID] を元に,



EXECUTE sp_lock [SPID]




などとすることによってプロセスのロックしているオブジェクトの情報を得ることができます。
他にも [syslockinfo] テーブルも利用できます。


SELECT * FROM master..syslockinfo WHERE req_spid = [SPID]






SELECT * FROM master..syslockinfo WHERE req_spid = [SPID]




さらに,アンドキュメンテッドストアドプロシージャ [sp_MSget_current_activity] を使用すれば,[Enterprise Manager] で表示できる情報と同等の結果を得ることもできます。


EXECUTE sp_MSget_current_activity , 4 ,




Input Buf: Language Event
最もあっさり原因オブジェクトを特定できてしまうのが,[Input Buf] です。
ここには実際に実行された SQL 文が表示されます。
ただし,[sp_ExecuteSql] を使用して SQL 文を実行している場合は,残念ながら実際に内部で実行されている SQL 文が表示されません。
ロック情報から情報を得る
トレース情報の [Node*] 行の次に表示されている情報が,実際にロックされているリソースになります。
このロックリソースは


[リソースの種類]:[DBID]:[リソースの情報]



という様に情報が表示されています。
ここでは [RID] に注目してロックされているオブジェクトを特定します。

リソース [RID] の場合には情報は以下の様に並んでいます。


[RID]:[DBID]:[ファイル番号]:[ページ番号]:[実際の行スロット]



DB_NAME 関数を利用することによって,データベースを特定することができます。


SELECT DB_NAME([DBID])




DBCC PAGE からオブジェクトの情報を得ることができます。


DBCC TRACEON(3604)
DBCC PAGE([DBID],[ファイル番号],[ページ番号],[印刷オプション])




出力に m_objID が出されるので,これを元に [sysobjects] からオブジェクト名を取得します。


SELECT [name] FROM [dbo].[sysobjects] WHERE [id]=[m_objID]




これで,目的のオブジェクト名を取得することができます。
これを一気に行うようなストアドプロシージャを作りましょうか。あまり使われなさそうですが。。。
この記事は Microsoft SQL Server 2000
Developer Edition Service Pack 4 に基づいて記述しています。
【参考】
http://www.microsoft.com/japan/msdn/sqlserver/columns/webtech/webtech3.asp
Posted 投稿者 timberlandchapel | 1 comment(s)

http://www.microsoft.com/japan/msdn/survey/

6/28~7/5

MSDN Online に対するアンケートが実施されています。

質問内容は,MSDN Online 利用者のプロファイルを拾うものから,「MSDN Online」に今後何を求めていくか。

という風に展開していきます。

記述式の質問がいくつも必須項目になっているので,アンケートとしては答えにくい部類に入りますが,

我々開発者にとってはずせない存在である「MSDN Online」の今後の企画,コミュニティプログラムに大いに関わることです。

ここはぜひ多くの方々のご協力をいただきたいところです。

みんなで声を送りましょう。よろしくお願いいたします。

Posted 投稿者 timberlandchapel | 1 comment(s)

TimberLandChapel.com Community Stage」がやっと始まりました。
苦節準備開始からいったい何ヶ月がたってしまったんでしょうか?(汗

まだまだほとんどデフォルト設定のままで,暫定公開ですが。。。
とにもかくにも,ここから始まる
今後とも TimberLandchapel をよろしくお願いします。なのです。

「TimberLandChapel.com Community Stage Forums」では,フォーラムの効果的な運用のために以下の条項を守ってください。

■全般的なマナー

コミュニティは社会です。一般的なのマナー(礼儀や言葉遣いなど)を守ってください。
コミュニティ活動に関連のない広告や宣伝を書き込まないでください。

 


■ご質問投稿のマナー

マルチポスト(複数の掲示板等に同じ質問をすること)は, マルチポストであることを明記してください。
ただし,他のコミュニティサイト様ではマルチポストを禁止している場合がほとんどですので,他コミュニティに迷惑をかけないようにお願いします
質問に回答がついた場合には,必ずフィードバック(結果報告,返事,お礼)をしてください。
この際に質問のステータス情報(解決,追加情報募集など)をタイトルに入れていただけると,他の閲覧者に効果的に情報を伝えられます。

※ マルチポスト発見時の指摘について
実際にマルチポストがなされた場合に, 第3者が「この投稿はマルチポストです」などと指摘することはご遠慮ください
TLC.com CS では「 マルチポストを発見したらご自分が返信しない」のみを守っていただければ結構です。

 


■ご回答投稿のマナー

質問事項が適切でない。調べれば見つかりそうだ。支離滅裂な質問。など,質問のマナーが守られていないと感じられた場合には

   「ご自分が回答をしない」のみに留めて頂ければ結構です。

Posted 投稿者 timberlandchapel