トップ回答者
SQLServer2000からSQLServer2005へ

質問
-
お世話になっております。
最近、あるシステムのサーバ環境を変更しました。それにより、24時間稼動している常駐プログラム
(フォルダ内を監視しファイルを内容をDBに登録する)が
あるのですが、データの登録に時間がかかり
(1000行近くのデータ登録に1時間以上かかる)
大変困っております。
以前の環境は(Windows Server 2003 + SQLServer2000)で、
移行後の環境は(Windows Server 2003 + SQLServer2005
互換性レベル SQLServer2000 80)と
なっております。
データが正常に取り込まれなかった為、手動にてINSERT文を
作成し(1,800レコード分)データを登録しようとしたところ
1時間以上応答がありませんでした。
自社にも同様の環境があり、INSERT文を実行したところ
2,3秒にて完了したためSQLServerの設定に何か問題が
あると考えております。
ちなみに移行前のサーバからバックアップファイルを作成し、
移行先のサーバへ復元しました。
回答
-
ブロッキングの可能性はないでしょうか。(Serializableのトランザクションがinsertをブロックしている等)ブロッキングのモニター方法はsys.dm_tran_locksの利用やsp_blocker_pss80があります。
http://support.microsoft.com/kb/271509/ja
http://msdn.microsoft.com/ja-jp/library/ms190345.aspx
-
通常、 Insert クエリの場合、ブロッキングの対象になりにくいのですが、Insert の対象となっているテーブルが、他のプロセスにより、テーブルロックを取られた場合などは、ブロッキングが発生する可能性があると思います。
あと、sp_blocker_pss80 の中でも採取されているのですが、Insert の時間が掛かっているとき、sys.sysprocesses の waittime、lastwaittype などを確認すると良いかもしれません。
sys.sysprocesses (Transact-SQL)
すべての返信
-
ブロッキングの可能性はないでしょうか。(Serializableのトランザクションがinsertをブロックしている等)ブロッキングのモニター方法はsys.dm_tran_locksの利用やsp_blocker_pss80があります。
http://support.microsoft.com/kb/271509/ja
http://msdn.microsoft.com/ja-jp/library/ms190345.aspx
-
通常、 Insert クエリの場合、ブロッキングの対象になりにくいのですが、Insert の対象となっているテーブルが、他のプロセスにより、テーブルロックを取られた場合などは、ブロッキングが発生する可能性があると思います。
あと、sp_blocker_pss80 の中でも採取されているのですが、Insert の時間が掛かっているとき、sys.sysprocesses の waittime、lastwaittype などを確認すると良いかもしれません。
sys.sysprocesses (Transact-SQL)
-
こんちには、shino555 さん。
その後いかがでしょうか。
ElanLilac さん、NOBTA さんからいただいたアドバイスありがとうございます。
ElanLilac さん、NOBTA さんからのアドバイスが有効な情報かと思われますので、勝手ながら私のほうで回答としてマークさせていただきました。
いただいた情報の中で、参考になったものや、有効な情報には、回答としてマークすることで、今後このスレッドを参照される方の目にもとまりやすくなるかと思います。
お時間があるときにでも、その後の状況を是非お知らせくださいね。
ご連絡お待ちしていますね。それでは。
マイクロソフト株式会社 フォーラム オペレーター 山本 春海