PCとDBを更新したら、エラーが発生するように

このQ&Aのポイント
  • 約5年ほど前に開発されたDBを使用したシステムがあり、サーバPCが故障し、PCとDBを更新したところ、「タイムアウト」や「デッドロックエラー」が発生するようになりました。
  • 更新前のサーバはWindows2000Serverで、DBはMSDE2000 SP3でした。更新後は、サーバはWindows Server 2008で、DBはSQL Server 2008 Express Editionです。クライアントのOSやアプリケーションは変更していません。
  • エラーの内容は、(1)タイムアウトが発生しました。(2)トランザクションが他のプロセスとデッドロックしています。サーバの故障時にデータが削除されたため、性能は向上しましたが、エラーが解決できません。助言をお願いします。
回答を見る
  • ベストアンサー

PCとDBを更新したら、エラーが発生するように。。

約5年ほど前に開発されたDBを使用したシステムがあるのですが、サーバPCが故障し、PCとDBを更新しました。それから「タイムアウト」や「デッドロックエラー」が発生するようになりました。 【更新前】 1.サーバ  ・OS:Windows2000Server  ・DB:MSDE2000 SP3 2.クライアント  ・OS:Windows XP SP3(導入当初は、Windows2000)  ・アプリケーション:VC++6.0にて開発  ・7クライアント  ・ODBCにて接続 【更新後】 1.サーバ  ・OS:Windows Server 2008  ・DB:SQL Server 2008 Express Edition 2.クライアント  ・OS:Windows XP SP3(導入当初は、Windows2000)  ・アプリケーション:VC++6.0にて開発  ・7クライアント  ・ODBCにて接続  ※クライアント側は何も変わっていません。 発生するエラーは、以下の2つです。 (1)タイムアウトしました。 (2)トランザクション(プロセスID○○)が、ロック 個のリソースで他のプロセスとデッドロックして、このトランザクションの対象となりました。トランザクションを再実行して下さい。 サーバPCが故障した際、蓄積されていたデータをかなり削除した為、早くなる事はあっても、遅くなる?とは夢にも思いませんでした。当然、更新後のPCも5年前よりかなり早くなっているハズですし...。 営業からは、早くなんとかして欲しいと言われますが、未だに解決の糸口が見付かりません。 どなたか助言をお願い致します。

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

  • ベストアンサー
  • adobe_san
  • ベストアンサー率21% (2103/9760)
回答No.1

システム開発会社は何と言ってるのでしょうか? 多分ですが >1.サーバ >・OS:Windows Server 2008 >・DB:SQL Server 2008 Express Edition の環境に対しクライアント側が低すぎて対応できていないと思われます。 「Windows2000Server」から「Windows Server 2008」に一気に上げたのが原因でしょう。 下げてみては如何?

taka077
質問者

お礼

早速の回答、ありがとうございます。 >システム開発会社は何と言ってるのでしょうか? このシステムは、私の前任者が開発したシステムなのです。 前任者は辞めてしまって...。 >「Windows2000Server」から「Windows Server 2008」に一気に上げたのが原因でしょう。 >下げてみては如何? やはり、そう思われますか。 OS、DBを導入当初に近づけてみようかと考え始めてました。 但し、ハードがどこまで対応可能かという問題はありますが。 試してみます。助言、ありがとうございました。 (他にもお気付きな事がありましたら、よろしくお願い致します。)

その他の回答 (2)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

OSはともかく、DBサーバは同じバージョンを使用するべきでしょう。 ちなみに現在もMSサイトからMSDE2000 SP3 ReleaseA が入手可能。

taka077
質問者

お礼

遅くなりました。回答、ありがとうございます。 >OSはともかく、DBサーバは同じバージョンを使用するべきでしょう。 adobe_sanさんは、OSのバージョンを下げては、との事ですが、 とりあえず、OSとDBのバージョンを合わせる方向で対処してみようと思います。 ありがとうございました。

回答No.2

>(1)タイムアウトしました。 タイムアウトでも色々のタイムアウトが有ります、プログラムでタイムアウト時間の変更ができますので、問題の出ているタイムアウトの時間を長くすると解決する可能性はあります。 >(2)トランザクション(プロセスID○○)が、ロック デッドロックを起こしているプログラムは同じプログラムでしょうか、同じプログラムであれば、そのプログラムのロジックを見直しすれば解決する可能性はあります。 複数のプログラムで発生している場合は、プログラム上何らかの問題が有ると思われますので、トランザクション関連のロジックを全プログラムに対して見直された方が良いと考えます。

taka077
質問者

お礼

遅くなりました。回答、ありがとうございます。 本来ならば、nharasawaさんのおっしゃる通り、タイムアウト時間の変更や、ロジックの見直しをすべきところですが、24時間稼動中のシステムであり、さらに、開発当初の担当者がいない為、プログラムに手を入れるのは、避けたい状況なのです。 とりあえず、OSとDBのバージョンを合わせる方向で対処してみようと思います。 ありがとうございました。

関連するQ&A

  • SQL Serverで更新されない問題

    皆様、いつもお世話になっております。 以下の環境で、サーバのDBに対してクライアントより更新処理を行っております。 更新時にトランザクション制御(begin Tran 及び、Commit Tran)を行っておりますが、更新されません。 (更新時のエラーも発生しておりません。) トランザクション制御を外して更新すると、正常に更新されます。 なお、クライアントのMDACを最新にしてみたのですが、現象は変わりませんでした。 <サーバ環境> OS  :Windows 2008 Server R2 DBMS:SQL SERVER 2008 R2  <クライアント環境> OS  :Windows XP アプリ : VB6 SP5で開発したADO接続のプログラム 追記: サーバは最近新しいものに入れ替えたのですが、旧サーバでは、上記のような現象は 発生しておりません。 <旧サーバ環境> OS  :Windows 2003 Sever SP無し DBMS:Sql Server 2000 SP不明 些細な情報でもかまいませんので、情報のご提供をお願いします。

  • 異なるDB間の同期

    サーバ1  OS:Windows2003Server DB:SQL Server2005 サーバ2  OS:Windows2000Server DB:SQL Server2000 サーバ2からサーバ1へODBC、HTTP、FTP可 サーバ2のDBは(サーバ1ではない)別サーバから 更新、削除、登録が行われます。このときにサーバ1の DBと同期を取る方法を検証しています。 例えば、サーバ2のAテーブルが更新された場合に トリガーなんかでサーバ1のAテーブルを更新する。 みたいな方法です。 ほかに簡単にできる方法とか、 特殊な方法でやらないとできないとか、 まったくできないとか 何か情報いただけないでしょうか。

  • クライアントからサーバのDBに接続できない

    いつも参考にさせていただいております。 【質問内容】 サーバにMySQLをインストールして、そのDBにクライアントからAccessなどをフロントエンドとして使いたいと思っています。 しかしODBCの接続テストでエラーになってしまいます。 知識不足は否めませんが、何か指摘がございましたらお願いします。 【環境】 ■サーバ側 OS:Windows2000Server DBMS:MySQL4.0.21 ■クライアント OS:WindowsXPSP2 ODBC:MySQL ODBC 3.51.04

    • ベストアンサー
    • MySQL
  • デッドロックでダウンします。どうして?

    お世話になります。教えてください。 Win2KサーバーにてSqlServer2000のデータベースを使い、Win2k・98SEのクライアントで同時10台が稼動するVB6で開発したシステムに於いて、時折以下のメッセージがでて異常終了するクライアントがアチコチで発生して困っています。 「トランザクション(プロセス ID 72)が、lock リソースでほかのプロセスとデッドロックしました。トランザクションがデッドロックの対象として選択されています。トランザクションを再実行してください。」 どうやらデータを更新しているときではないかと思います。 考えられる原因を教えてください。よろしくお願いします。

  • こんなのがでたんですが…

    次のような文章が出てきました。どういうことか簡単に素人にわかるようにお教えください。 『Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC SQL Server Driver][SQL Server]トランザクション (プロセス ID 461) が、lock | thread リソースでほかのプロセスとデッドロックしました。トランザクションがデッドロックの対象として選択されています。トランザクションを再実行してください。 /prdsearch/inc_detail.asp, 行 485 』 こういうのは放って置いても良いものでしょうか? 最近ネットを見ていてもページがひょう辞されませんというのが良く出て、結構調子が悪いんですが。 どなたかお教えください。,毎度申し訳御座いません。

  • DB2のエラーの回避方法を知っている方教えていただけますか?

    「 SQL30040N 後続のコマンドまたは SQL ステートメントの正常な実行に影響を与えない使用不能リソースのために、実行が失敗しました。理由 "0x200002D"、リソース・タイプ "MEMORY"、リソース名 "DRDA HEAP"、製品 ID "SQL07029 "。 SQLSTATE=57012 」 このようなエラーメッセージが出て困っています。 回避方法を知っている方教えてもらえないでしょうか? 環境は サーバー OS :Windows Nt4.0 SP6 DB2:Ver7 Fix13 クライアント(1) OS :Windows2000 SP4 DB2:Ver8 Fix7 クライアント(2) OS :Windows2000 SP4 DB2:Ver8 Fix4 開発言語:VB6.0 Sp5 接続方法:ADO Microsoft Data EnvironmentでCommandを使用 クライアントのFixを当てる前までは、このメッセージが出ていなかったのですが、ほかのエラー回避のためにFixを当てたところ今度このエラーが出るようになってしまいました。 IBM等で調べたのですが具体的な解決策がなく投稿しました。よろしくお願いします。

  • SSIS(SP1)で発生するエラーについて。

    皆様、お世話になります。 まず、初めに環境を晒します。 ・OS WindowsServer2003 SP1 ・DB SQLServer2005 SP1 SSISを使用しフラットファイルをDBに収めるという処理を行っております。 そのSSISの中で緩やかなディメンションを使用し追加更新を行っておりますがエラーが発生します。(検証エラー) 以下が、検証エラー内容です。 [挿入先 [1840]] エラー : OLE DB エラーが発生しました。エラー コード: 0x80040E37。 OLE DB レコードを使用できます。ソース: "Microsoft SQL Native Client" Hresult: 0x80040E37 説明: "分散トランザクションが完了しました。このセッションを新規トランザクションまたは NULL トランザクションのいずれかに参加させます。"。 マイコン-管理にて分散トランザクションの設定は行っております。 といってもサービス起動の確認をしただけですが・・・ 以上の処理をSQLServer2005 "SP2"で動かしたところ正常に動作します。 SP1で使えないということはバグと認識したいのですが確かなソースが ありません。SP1でもSSISを実装できるってことはバグとも考えにくいし混乱している状態です。 この情報に関する事を知っている方、是非よろしくお願い致します。

  • ODBCでDB2に接続する時に必要なもの

    ODBCを使用して、PC(windows)から、AS400(OS/400)のデータベース(DB2)にアクセスすることを考えています。やりたいことは、データベースからあるデータを抽出して、PC上のファイルに格納することです。(データベースの更新は考えていません) 上記の前提で、PCからODBCによる接続を行うときに必要となるものは、何でしょうか。 (PC側とAS400側とでそれぞれ必要なものを教えて下さい。ODBC用のドライバが、それぞれ必要なのかなとは、思っていますが、未経験の為、その辺がよくわかりません。又、その必要なものは、DB2(PC側の場合はVB等の開発ツール)を購入した時、標準で提供されるものなのでしょうか。それとも、別途購入しないといけないものなのでしょうか。)

  • デッドロック

    sqlserver2000に対してクライアントツール用に開発したAccess2000のadpファイルからデータの更新を行うと、以下のようなエラーが発生するのですが、どのような場合以下のエラーが発生するのかご意見を頂きたいと思います。 "トランザクション(プロセスID89)が、lockリソースでほかのプロセスとデッドロックしました。トランザクションがデッドロックの対象として選択されています。トランザクションを再実行してください。"

  • win10homeのパソコンをdbサーバーにして

    win10homeのPCにmysqlをインストールしてDBサーバーとして、クライアントのwin10pro/homeのPCからaccessのODBC接続は可能でしょうか?