SQLserver2000の集計処理が遅くなり、困っています!

このQ&Aのポイント
  • SQLserver2000の販売管理システム上で、ほぼ毎日在庫集計処理を行っています。
  • 以前に比べて集計処理が遅くなったので、プロファイラでトレースして、ボトルネックとなるSELECT文を突き止めたところまでは良かったのですが、そのDBのフルバックアップを取り、同じ環境を構築したサーバーにDBを移し、処理を実行したところ、ボトルネックとなる事象が再現されませんでした。
  • 2台のサーバーの差異を比較して、色々試みたのですが、現行システムの集計処理が改善できません。何か方法があればぜひ教えて下さい。
回答を見る
  • ベストアンサー

SQLserver2000の集計処理が遅くなり、困っています!

SQLserver2000の販売管理システム上で、ほぼ毎日在庫集計処理を行っています。以前に比べて集計処理が遅くなったので、プロファイラでトレースして、ボトルネックとなるSELECT文を突き止めたところまでは良かったのですが、そのDBのフルバックアップを取り、同じ環境を構築したサーバーにDBを移し、処理を実行したところ、ボトルネックとなる事象が再現されませんでした。2台のサーバーの差異を比較して、色々試みたのですが、現行システムの集計処理が改善できません。何か方法があればぜひ教えて下さい。 【現行システムで試した事】ログファイルの切捨て、DBの圧縮、インデックスの最適化、HDDのデフラグ 【プロファイラの値】CPU:現-148250、新-11484 Reads:現-62578066、新-46549 Writes:現-14、新-0 Duration:現-1492046、新-13280

質問者が選んだベストアンサー

  • ベストアンサー
  • springjoe
  • ベストアンサー率100% (3/3)
回答No.1

以前、統計情報を更新したら格段に速くなりましたよ。 統計情報の更新がないようだったので・・・

k12yas
質問者

補足

統計情報の更新というのは UPDATE STATISTICSの事でしょうか? 何分初心者なもので・・・。 他に参考になるような情報があれば、教えていただければ幸いです。 よろしくお願いします。

関連するQ&A

  • VB5 + SQLServer2005 で長時間の処理

    今までVB5 OS:windowNT4.0 DB:SQLServer6.5 上で稼働していたシステムをサーバ入替があり OS:Windows2003 Server R2 DB:SQLServer2005 Standard Edition に入れ替えたところ データを読み込んで更新するような処理を1時間ぐらい実行していると Microsoft OLE DB Provider for ODBC Drivers でエラーが発生しました。 [Microsoft][ODBC SQL Server Driver][Named Pipes]ConnectionRead (WrapperRead()). というエラーが発生します。 この現象を回避するにはどうしたらよろしいでしょうか?

  • SQLServer2005での復元の自動化について悩んでいます。

    SQLServer2005での復元の自動化について悩んでいます。 下記の構成でシステムを運用しています。 サーバー1(本番) OS:WindowsSvr2003R2 DB:SQLServer2005 サーバー2(障害用サブ) OS:WindowsSvr2003R2 DB:SQLServer2005 通常は本番用を使用してシステムの運用を行っているのですが、 H/Wの障害などが発生した際には、サーバー2で運用します。 ですので、システムが休止している際にサーバー1のDBをサーバー2 に移行する必要があります。 バッチやSPで自動的に行いたいのですが、何か良い方法はないでしょうか。 アドバイスをお願いします。

  • SQLServer 2008へ移行

    現在、SQLServer2000を使って社内システムを構築しています。 サーバーのハード保守切れに伴い、 SQLServer2008へ移行しようとしています。 現在の環境は、 OS Windows2000Server DB SQLSERVER2000 アプリ Windows2000Server      VB 6.0で作成      (Ctrix社のMetaFrame) となっています。 DBの部分のみ、変更しようとしています。 ハード 64bit Windows2008Server ソフト  64bit SQLServer2008R2 移行に関して、 (1)2000で使っていたDBファイルをアタッチ、デタッチで丸ごと移行できるのか? (2)アプリの接続部分に変更しなくてはならないのか?  (アプリのコンピュータ名は、同じにします。) 詳しい方、ご教授願います。

  • SqlServerのユーザー権限

    ずっとOracleを使用してきたのですが、このたびSqlServerの使用を検討することになりました。 Oracleでは、パスワードを知らなければDBの中身を参照することはできないですが、 SqlServerでは、Windows認証、SqlServer認証ともに、サーバー管理者であれば、 DBの管理ができるように思います。 開発時はいいのですが、リリース後は、サーバー管理者(客先のシステム部など)にも DBのデータは見せたくありません。 担当部署と開発担当者のみ参照できるよう設定したいのですが(パスワードを知る人間を限定する)、 SqlServerではそのような設定は可能なのでしょうか?

  • filemaker から SQLserver へ

    filemaker から SQLserver へ データ移行するのに最適な方法、参考情報を教えてください filemaker8.5で作られた購入品の管理システムがあり 集計の為に慣れた、SQLSEVERやEXCELを利用したいために、 filemaker8.5のマクロでSQLserverへ出力マクロを作り、日に数回処理を行っています filemakerは入力などの面はなかなかバカに出来ない使い勝手なのですが 集計を行うには良い情報が無い・集計出来ないと思われる情報ばかりなことから 実現出来たのが上記の通りなのです filemaker自体の不具合やこの手法の汎用性のなさからデータ移行したいテーブルがあるにも関わらずなかなか進んでいません 根本的に違う、適切な方法があるのではとモヤモヤ思いながら、時間が取れ次第集計環境を作っていますので、ぜひアドバイスお願いします

  • MS SQLServer7.0のレスポンス改善について

    DBサーバ  Windows NT4.0 Server  MS SQLServer7.0 上記DBサーバのレスポンスが悪く困っています。 長年使用していますのでサーバの買い換えなど有効な対応方法はあるかと思いますが、まずは現在の機器での改善を試みたいと思っています。 メモリの増設は検討中であり、実施する予定です。これでどの程度改善が期待できるのか・・・。 これらのハード的な解決以外に、SQLServerの設定などでレスポンスを改善する方法はありませんでしょうか。 SQLServerの使用できるメモリ量を増やす(?)とか、処理の優先度を上げるとか、など。 有効な対処方法をご存知の方、教えていただけませんでしょうか。 よろしくお願いいたします。

  • Access2002でSQLSERVERに接続

    Access2002でSQLSERVERに接続してデータを参照しクエリを実行して個別集計したいのですが、こっそり接続したいので方法を教えてください。 目的:Accessを開いたら、設定したSQLSERVERのテーブルがクエリ実行されて希望の集計結果が表示されるようにしたい(権限は参照)。テーブル設定情報はクライアントに見せない(セキュリティの為) 近所の書店ではあまり参考になる本がなかったので検索した情報をもとに下記方法で接続してみることにしました。 (1)標準モジュールを設定  Sub DB接続() dim adocon as New ADODB.Connection adocon.Open "Deiver={SQL Server}; server=サーバー名; database=DB名; uid=ID; pwd=パス;" cn.Open end sub (2)マクロにてAutoExecを作成   プロシージャーの実行でAutoExecを設定し、モジュールにはAutoEXEC()にて   Call DB接続を設定しました。 しかしこれではうまく接続できたのかどうかも動作確認できません。また(2)の処理後に select * from テーブル名 のクエリを実行するように設定しても、テーブルがないと メッセージが表示されるので、うまく動作できてないようです。 クエリにて 「select * from [odbc;Driver={SQL Server}; Server=サーバー名; uid=ID;database=DB名;].テーブル名;」では接続してSQLSERVERのテーブル情報が見れます。なので名前などの間違いではないようです。(Accessの知識不足ですが、一つしかテーブルが参照できなく、複数のテーブルから色々条件を設定してデータ抽出ができないので使えないと判断しました) モジュールやマクロを利用してSQLSERVERからデータを参照するコマンド・方法を教えてください。

  • accessからsqlserverへの移行について!

    accessからsqlserverへの移行について! 現在accessでシステム運用しています。 処理に時間がかかるのでDBのみsqlserverへの移行を検討しています。 時間がかかる原因は計算項目が多く計算の為に必要な定義項目と参照項目で計算項目を含めると約300項目となります。 この為、クエリーをNo.1とNo.2の2個のクエリーに分けて対処しています。 クエリーNo.2はNo.1の式の値を使用し更に式で計算しています。 クエリーで定義している計算式も条件が複雑なものもありさらに計算結果⇒計算結果⇒・・・・となっています。 この様な内容なので入力画面はレスポンスが遅く印刷は5~10分位かかるものがあります。 とりあえず印刷処理を早くしたいと思い一旦ワークテーブルに必要項目を出力する等をやって見ましたがやはり抽出に時間がかかりあまり改善しません。 データ件数は約3万件なのでデータ件数は問題ないと思っています。 accessの処理はそのままでDBをsqlserverからODBCでリンクしようと思います。 DBをsqlserverに移行することで処理速度の改善はどの程度見込めるのでしょうか。 計算項目数が多いのであまり見込めないのではと思っています。 accessからsqlserverへの移行された方でどの位改善されたのか教えて下さい。 現在の運用環境はサーバは使用せずファイル共有で4台のPCで運用しています。OSはWinXPです。 今回も専用サーバは使用せず現在のWinXPのPCにSQLServer2005無料を使用しようと思っています。 又、accessの処理で他に早くする方法がありましたら教えて下さい。 よろしくお願いします。

  • SQLServerのDB(テーブル?)が削除出来ない

    初めて質問させて頂きます。 現在会社でクライアントサーバシステムを構築しています。ベンダーに委託した為分かる範囲で環境を書いておきます。 OS サーバ:NT3.5、クライアント:WIN95が2台 DBMSサーバ:SQLServer4.21、クライアント:ACCESS2.0 サーバのアタッチテーブルを参照する形でクライアントのACCESSmdbの業務システムが稼動しています。 その環境にて先日リストア作業後に突然SQLServerのDBが下記のメッセージにて参照出来なくなりました。 メッセージ933 レベル22  データベースの最高のtimestampを取得している間に出会ったログの論理ページがログの最後のページではありません。データベースを不正に取得しています。 止むを得ずDBとデバイスを削除しようとしたのですが、 同様のメッセージが出てきて削除できません。 対策として、 (1)サーバーの再起動 (2)SQLServerの再起動 (3)(リストアしたデバイスが不良かと)思い別DATからリストアを行った。 を行ったのですが、今度は メッセージ930 レベル14 以前のシステムの終了が、不完全にLOAD DATABASEしたままのため、データベースはオープンできません。データベースをロードしなおすか、システム管理者に報告して下さい。 更に又メッセージ933 レベル22のメッセージが再び表示され 結局DBが削除出来ませんでした。 (現在のバージョンのSQLServerでは DBはテーブル、デバイスはDBと呼ばれているようです。) 色々調べたのですがどうにも手詰まりになってしまいまして非常に困っております。 このシステムを導入したベンダーに相談したのですが会社方針でこちらからサポートを打ち切ってしまっており要員もおらず対応出来ないとの事でした。 どなたか少しでもヒントになる事でも結構ですから何とぞお教え下さい。 長文で失礼しました。

  • SQLserver2000のリブート時のエラー

    SQLserverのサービスをリブートしたときに 下記のようなエラーが出ました。 HPとか調べていますが、 今回の現象と 同様の現象の情報が記載されていません。 下記エラーについてご存知の方 なにか教えていただけないでしょうか? ポート1433をSQLserver以外の何かが 使用する可能性ってありますか? エラー 「SuperSocket 情報 :TCP ポート 1433 でバインドに失敗しました。」 DBサーバ OS:WINDOW2000serverSP4 DB:SQLserver2000SP4 DBサーバ:SQLサーバサービスは 下記のコマンドで行っています。 NET STOP "SQLSERVERAGENT" NET STOP "MSSQLSERVER" NET START "MSSQLSERVER" NET START "SQLSERVERAGENT" ちなみに2年近く稼動しているシステムですが、 初めて出たエラーです。 エラーが出た時と 出てなかった時の DBサーバはほぼ変わっていないと思います。 今まで同様の環境で出てたかったエラーが 急にでました・・・。 SQLサーバ再起動後、 他のPCからPINGは通りますが、 他のPCEnterpriseManagerからDBを参照する ことができません・・・。 接続エラーになります。 (もちろんDBサーバ上ではDBは見れます) ちょっとしたことでも良いので、 アドバイスよろしくおねがいします。