
初めまして。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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MSDEまたはSQLServerでReadOnly...
-
ユーザーに与える権限に付いて
-
SQLSERVERエージェントからのス...
-
SQLのエラー(~付近に不適切な...
-
Oracle 8i コンマ(,)を含むデ...
-
ノートンの解約(「ライセンス...
-
postgreSQLのエラーについて
-
Excel-VBAの「しばらくお待ちく...
-
SQLserver 2005 の評価版を利用...
-
Xampp上で、sql server 2005を...
-
SQL SERVER 2012のダウングレー...
-
Windows統合認証とSQL Server認...
-
iis7でのデータベース削除方法...
-
ACCESS ADOでupdateが効かない
-
TRANSACT-SQLでのシステムエラ...
-
SQLサーバーのテーブルでサーバ...
-
SQL Server 2005 Expressのイン...
-
VBExpressからSQLサーバーへの接続
-
VB6より長文INSERT文でORA1756...
-
ノートパソコンのHDDを同機種へ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MSDEまたはSQLServerでReadOnly...
-
SQL Server時間切れについて
-
今、何のストアドを実行してい...
-
ストアドプロシージャの実行に...
-
ストアドのEXECUTE権限
-
SQLServer2005のストアドプロシ...
-
SQLサーバ ユーザー削除について
-
コンピュータ名を変更するとSQL...
-
SQLSERVERエージェントからのス...
-
T-SQLのデバッグ
-
SQLのエラー(~付近に不適切な...
-
Oracle 8i コンマ(,)を含むデ...
-
Excel-VBAの「しばらくお待ちく...
-
SQLサーバー接続 特定のPCがWin...
-
PostgreSqlでFunctionの作成に...
-
Access2010 accdbのエラー「ODB...
-
SQL Loaderを使いたい
-
SQLCMDにて教えていただきたい...
-
既定のインスタンスと名前付き...
-
バッチファイルからのBCP起動に...
おすすめ情報