TimberLandChapel's Tech Blog

TimberLandChapel provide Tips, tech note and scribbling.
Updated my site as English site for APAC users.
TLC.com .Metrix 4.0 Beta1 released

サイトの日本語化方法はこちら

Syndication

News

INETAJ

情報処理関係官公庁

SQL Server

TLC.com

Microsoft

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

http://www3.clustrmaps.com/

6月 2005 - Posts

めもめも。

・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 by timberlandchapel | with no comments
Filed under:

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

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

【概要】

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

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

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

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

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

Posted by timberlandchapel | with 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 by timberlandchapel | 1 comment(s)
Filed under:

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

6/28~7/5

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

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

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

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

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

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

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

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

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