
初めまして。SQL初心者です。
あるシステムにおいて、SQLサーバが無応答?になり、システムがダウンしてしまい、困っています。
Windows2000Server、SQL Server2000、VB6を用いてDBに定期的にRead&Write、及び各種のデータ表示を行っています。
ADOを使用して、接続や各コマンドを実行しているのですが、ごくたまに以下のエラーが出てしまいます。
Code:-2147217871,Description:時間切れになりました。Source:Microsoft OLE DB Provider for SQL Server,SQL State:HYT00,NativeError:0
過去ログや他サイトを調べた結果、コネクションのCommandTimeoutの秒数を延長させる、とあったので60秒に変更しました。
が、不定期(大体1週間~10日前後で夜中や朝方などにもあり)にこのエラーが出てしまい、約1時間~1時間半もダウンしています(この間のエラーをOn Errorではじいてログファイルに保存しています)。
毎分必ず実行しているストアド(20装置分のデータをUPDATEするので1分に20回実行する)があるのですが、必ずと言っていいほどこのストアド実行中に落ちています。
このストアドに5~6個のパラメータを渡し、複数のテーブルに対してUPDATE処理を行っています。
正常に動作している時は、数日間全く問題無いので、ストアドやVBのコードに間違いは無いと思います。
そこで、SQL Serverの設定等を見直したところ、1つ気になったところが。データベースファイル
\Microsoft SQL Server\MSSQL\Data\aaa.MDF
のサイズが14Gになっていました・・・。
このファイルにアクセスする時にSQL Serverで高負荷になってしまい、無応答のような状態になってしまうのでは?と思っていますがどうでしょう?
不定期に発生し、かつ再現性が無く、原因が掴めずに本当に困っています。
先輩方、何でも良いのでアドバイスをお願い致します。
No.1ベストアンサー
- 回答日時:
14Gですか・・・大きいですね。
データの構造がどうなのか解らないので、
容量的に妥当かどうかはわかりませんが、
一度インデックスの再構築と圧縮を掛けてはどうでしょうか
CREATE PROCEDURE SP_COMPRESS AS
DECLARE @name varchar(30)
DECLARE tnames_cursor CURSOR FOR
SELECT name FROM sysobjects
WHERE type = 'U'
OPEN tnames_cursor
FETCH NEXT FROM tnames_cursor INTO @name
WHILE (@@fetch_status <> -1)
BEGIN
PRINT @name + 'のDBREINDEX...'
EXEC ('DBCC DBREINDEX ('+ @name + ')' )
FETCH NEXT FROM tnames_cursor INTO @name
END
DEALLOCATE tnames_cursor
dbcc SHRINKFILE("SampleDb_Log",1)
DBCC SHRINKDATABASE("SampleDb",1)
GO
データベース名は自分の環境に合わせてください。
また、バックアップは必ず取っておいてください。
14Gもあれば結構時間がかかると思いますが・・・
とりあえず参考程度に・・・
No.2
- 回答日時:
データベースの構造をどうされているかわかりませんが、ログ領域をたくさんとっていて、ログがいっぱいになったりしていませんか?
そんなときにDBに更新・追加やバックアップ処理等が行われると、ログ領域が足りず、エラーになったりします。14Gというと相当大容量なサイズですが、ログの切捨てを実施する事をお勧めします。
コマンドからでもよいですが、SQLServerでお使いのデータベースを右クリックし、データベースの編集を選べば、ログの切捨てが選べると思いますがどうでしょう?
後コマンドタイムアウトですが、あれって0だか-1だかに設定するとタイムアウトしないようにできませんでしたっけ?フリーズするというのなら、タイムアウトしないようにしたところでしようがないんですが一応。
sekiguchi-dさん
ご回答ありがとうございます。
私の方でもソースコードの方ではなく、SQL Serverの設定自体に問題があるのでは、、、と疑っています。
ログ切捨てですね。
試してみます。
それで連続運転してみるしかないですかね・・・。
コマンドタイムアウトは0(無制限)だったと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- SQL Server SQL ServerでDBを構築。これは開発? 4 2022/05/28 14:10
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- その他(ブラウザ) python から COBOL を呼び出すことは可能でしょうか。 1 2023/04/21 21:03
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- その他(プログラミング・Web制作) Rでのスクリプトのご相談 3 2022/12/08 16:22
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
高校生はアルバイトするべきだろうか?
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
限定しりとり
文字数6文字以上の単語でしりとりしましょう
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
あなたが好きな本屋さんを教えてください
どのくらいの規模間で、どのような本が並んでいるか、どのような雰囲気なのかなどなど...
-
エクセルからSQLサーバー 時間切れになるようになった
SQL Server
-
EXCELVBAでSQLserverからデータをひっぱってきてエクセルに表示させたい
Visual Basic(VBA)
-
実行時エラー 3265「要求された名前、または序数
Visual Basic(VBA)
-
-
4
手動または分散トランザクションモード…のエラー
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
今、何のストアドを実行してい...
-
MSDEまたはSQLServerでReadOnly...
-
コンピュータ名を変更するとSQL...
-
ストアドのEXECUTE権限
-
ストアドプロシージャの実行に...
-
Oracle 8i コンマ(,)を含むデ...
-
SQLのエラー(~付近に不適切な...
-
SQLサーバー接続 特定のPCがWin...
-
Excel-VBAの「しばらくお待ちく...
-
バッチファイルからのBCP起動に...
-
Access2010 accdbのエラー「ODB...
-
SQL Loaderを使いたい
-
DB2でselectは出来るが、update...
-
100万件レコードdelete
-
drop user できない。ORA-01940
-
既定のインスタンスと名前付き...
-
PostgreSqlでFunctionの作成に...
-
SQL SERVER windows 認証エラー...
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
SQLServer2005のストプロでxp_c...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MSDEまたはSQLServerでReadOnly...
-
SQL Server時間切れについて
-
SQLSERVERエージェントからのス...
-
ストアドのEXECUTE権限
-
SQLServer2005のストアドプロシ...
-
今、何のストアドを実行してい...
-
ユーザーに与える権限に付いて
-
T-SQLのデバッグ
-
ストアドプロシージャの実行に...
-
SQLサーバ ユーザー削除について
-
コンピュータ名を変更するとSQL...
-
SQLのエラー(~付近に不適切な...
-
Excel-VBAの「しばらくお待ちく...
-
Oracle 8i コンマ(,)を含むデ...
-
SQLサーバー接続 特定のPCがWin...
-
Access2010 accdbのエラー「ODB...
-
既定のインスタンスと名前付き...
-
PostgreSqlでFunctionの作成に...
-
GROUP BYでエラーが発生
-
(SQLSERVER) 別サーバーへテー...
おすすめ情報