VBでSQLSERVER6.5にODBC接続し、
トランザクションを開始しようとしたところ、
以下のエラーメッセージが表示されました。
どういうことか教えてください。

db.BeginTrans
実行時エラー '2147168227(8004d01d(';
1つ以上のODBC接続が使用中のため、トランザクションを開始できません。

A 回答 (1件)

他の部分ですでにトランザクションを開始しているところがあるとか


BeginTransをして、commitしてないとか・・・?

この回答への補足

既に開始はしていません・・・。
それに、この場合、既に開始されている、という
メッセージになりますよね?
試しに、トランザクション開始を飛ばして、
commitしようとしたら、
アクティブなトランザクションはありません、とエラーになったので、
開始はされていないと思います。

補足日時:2002/02/21 17:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【SQL Server2005】mdfファイルが壊れた後のトランザクションログバックアップ

OS:Windows Server 2003、DB:SQL Server 2005 Developer Edition
を使用しています。

データファイル:test.mdf、ログファイル:test_log.ldfでtestデータベースを構成後、SQL Serverサービスを停止し、test.mdfファイルの名前を変更、test.mdfが壊れたものと仮定します。
その後、SQL Serverサービスを起動すると、testデータベース上にmdfファイルが見つからないエラーが発生します。

この状態でトランザクションログを救出するため、SQL Server Management Studioでトランザクションログバックアップを実行させます。

しかし、この際、右クリックのメニューからバックアップを選択することができず、トランザクションログバックアップができません。

この状態でトランザクションログバックアップを行うにはどのようにすればよいのでしょうか。
どなたかご存知の方がいらっしゃれば教えてください。

Aベストアンサー

この場合は、LDFファイル自体をファイルコピーで退避すればよかった記憶が…MSにそのあたりの手順(復元まで)を示したものがあるようなきはするのですが…よく覚えてません。

Q実行時エラー '8021'とはどんな内容のエラーでしょうか?

VB6 でプログラムを作成していますが、たまに"実行時エラー'8021':DCB (Device Control Block)の取得時に、ポートで内部エラーが発生しました。"というメッセージが表示されプログラムが止まってしまいます。どういった内容のエラーなのか分かりませんので、しっている方がいらっしゃいましたら教えて頂きたいのですが。よろしくお願いします。

Aベストアンサー

誰も回答していないようなので、参考までに。

エラー番号8021を発生させたところ、当方の環境ではそのようなメッセージは表示されず、そのエラーは定義されていないと表示されました。
その事から、そのエラーはVB6標準ではないクラスまたはコントロール等を利用して発生していると思われますので、
その環境をもっと記載しなければ、他の人も回答できないと思います。
(エラーメッセージを見る限りでは、特殊なものを利用しているっぽいので補足説明があっても、私には回答できなさそうですが・・・)

Q【データベースとファイル操作を1トランザクションでまとめる方法】

通常、データベースのトランザクションとファイル操作を一括りにしてロールバック等はできませんが、これを可能にする方法はありますでしょうか?
ご存知の方がいらっしゃいましたら教えていただけるとありがたいです。
よろしくお願いいたします。

Aベストアンサー

まず、通常はファイル操作について、ロールバックを行うような仕組み自体ないと思います。
(あ。NTFSはそういう仕組み持ってるか…でもそのトランザクションをプログラムから操作は出来ないと思います)

なので、まず、ファイル捜査を「元に戻す」所から、自分で実装しなければいけないのでは?
で、それができたら、DBのトランザクションとそのファイル操作のトランザクションが連動するようにクラスなりを作成すればいいと思います。

Q実行時エラー'1004': アプリケーション定義またはオブジェクト定義のエラーです。

Excel VBA(Excel2000)について質問です。
セルの入力規則を設定するvalidationプロパティ設定時に表記エラーが起こるのですが、どういった原因なのか知りたいです。
そのエラーを起こす手順ですが、
1. 新規ブックを作成する
2. Visual Basic Editorを使用して、Sheet1に以下のコードを埋めこむ:

Private Sub Worksheet_Activate()
  With Cells(1, 1).Validation
    .Delete
    .Add Type:=xlValidateList, Formula1:="test1,test2"
  End With
End Sub

3. Sheet1 ←→ Sheet2 or Sheet3をタブで切り替える
  → 問題なく作動する
4. Sheet1の任意の場所に、コントロール ツールボックスのコマンドボタンを配置する
5. Sheet1 ←→ Sheet2 or Sheet3をタブで切り替える
  → これも問題なく作動する
6. 4.で配置したコマンドボタンを押す
7. Sheet1 ←→ Sheet2 or Sheet3をタブで切り替える
  → 表題のエラーが発生する

といったように、ボタンやチェックボックス等を配置したシートにおいてvalidation.addメソッドを使用すると、何故かエラーが発生します。この発生パターンが見つかるまでずっと悩んでいました。
今現在は、一応、他の方法で回避できてはいますが、どうしてこのエラーが出るのかはっきりしたいので、ご存知の方はどうぞご指導お願い致します。

Excel VBA(Excel2000)について質問です。
セルの入力規則を設定するvalidationプロパティ設定時に表記エラーが起こるのですが、どういった原因なのか知りたいです。
そのエラーを起こす手順ですが、
1. 新規ブックを作成する
2. Visual Basic Editorを使用して、Sheet1に以下のコードを埋めこむ:

Private Sub Worksheet_Activate()
  With Cells(1, 1).Validation
    .Delete
    .Add Type:=xlValidateList, Formula1:="test1,test2"
  End With
End Sub

3. Sheet1 ←→ Sheet2 or S...続きを読む

Aベストアンサー

> 6. 4.で配置したコマンドボタンを押す

この操作でコマンドボタンがアクティブ状態になってしまうのが原因のようですね。これはチェックボックスとかリストボックス等でも起こると思います。
最も簡単な対処方法としては、Cells(1,1).SelectとかRange("A1").SelectをWith Cells(1, 1).Validation の前に記述し、特定のセルをアクティブにする方法でしょう。

Qトランザクション処理

チェックポイントファイルとジャーナルファイルはメモリ上にあるの?それともハードディスク装置上にあるのですか教えてください。それとトランザクション処理はメモリ上でしょりされてるのでしょうか?

Aベストアンサー

> チェックポイントファイルとジャーナルファイルはメモリ上にあるの?
> それともハードディスク装置上にあるのですか教えてください。
これは難しい質問です。
チェックポイントファイルはHDDに書かれます。
ジャーナルファイルも最終的にはHDDに書かれます。
しかし一々HDDに書いていると時間がもったいないのでメモリー上にある程度貯めてから
まとめて書く方式もあります。

> それとトランザクション処理はメモリ上で処理されてるのでしょうか?
トランザクション処理に限らず全てのプログラムの処理はメモリー上で行なわれます。
ファイルのR/Wを除いて全てのデータもメモリー上で取り扱われます。

Q実行時エラー’2164’

アクセスVBAで、実行時エラー’2164’
コントロールがフォーカスを取得しているときは、
コントロールを無効にすることはできません
と言うメッセージが出てしまいます。
何が原因なのでしょうか?

Aベストアンサー

例えば下記のようなプログラムは駄目よ。て事

更新後に自分自身のコントロールを使用不可にするようなプログラム

例:テキストボックスで同テキストボックスの内容が更新された場合に同テキストボックスを使用出来ないようにする。
Private Sub テキスト0_BeforeUpdate(Cancel As Integer)
テキスト0.Enabled = False
End Sub

簡単にいうとフォーカスを失っていない状態で自身のコントロールのイベントプログラムで自分自身を使用不可にするような事はしたらあかんて事

QmysqlでCSVインポートでトランザクション管理出来る

只今、mysqlを使用して開発しております。

行き詰まっておりまして
大変申し訳ありませんが、ご教授の程、よろしくお願いいたします。

要件は以下になります。
・CSVファイルデータをインポートする。
・CSVファイルは複数なので、全ての処理が終わった段階でコミット・もしくはロールバックする。
(トランザクション管理が出来ればよいです。)

※LOAD DATA INFILEでトランザクション管理しようとしたのですが
LAODのトランザクション管理は5.1系じゃないと出来ないようですので、
出来ませんでした。

mysqlのバージョン :5.0.24

Aベストアンサー

がるです。
んと…「膨大な量」とのことなので、別のラインで。

たとえば
・仮テーブルを用意する
・「仮テーブルに対して」個々にCSVをインポートしていく
・すべてのインポートが終わって
 ・もしすべて問題なく処理できたら、begin tranして仮テーブルのすべての内容を本テーブルにinsert、処理OKならcommitする
 ・インポート中に問題がおきたら適切なエラー処理をして仮テーブルの全レコードを削除する

なんていう方法もあろうかと思います。
ま、結構横道な手段ですが。

Q実行時エラー’1004’

初心者です。EXCEL VBA 音声出力機能を利用したいのですが、以下の
プログラムコードで、アプリケーション定義またはオブジェクト定義
のエラーです とでてしまいました。不具合をどうぞ教えていただけ
ないでしょうか。おねがいします。

  Sub 読み上げ()
Range("B2").Speak SpeakDirection:=xlSpeakByColumns,_
SpeakFormulas:=False
End Sub

Aベストアンサー

Excel2007ではこれで問題なく読み上げてくれますね。

この改行部分は投稿のためのものか
コードにこう書いてあるのかわかりませんが
VBEでの記述は
 xlSpeakByColumns,_
   ではなく、スペースが必要です。
 xlSpeakByColumns, _

Qオフライン中のトランザクションについて

表領域をオフラインにした場合、オフライン前に開始されたトランザクションは有効ですが、オフラインのまま、コミット、または、ロールバックして、表領域をオンラインにしても、整合がとれるのはなぜなのでしょうか。
コミットするか、ロールバックするかの情報はどこに保持してるのか疑問です。
(オフラインにしてから、ファイルをリネームし、
トランザクションをロールバックして、
ログをアーカイブし、DB再起動後に、ファイル名を戻して、
オンラインにすると、ちゃんとロールバックされています。
同じ操作で、コミットするとちゃんとコミットされています。
知っている方には当然なのでしょうが、私にとっては、不思議です)

詳しい方がみえましたらご教授お願いいたします。

Aベストアンサー

データベース概要のマニュアルに

「表領域がオフラインになると、Oracleでは後続のSQL文でその表領域内に含まれるオブジェクトを参照できなくなります。表領域内のデータを参照する完了済の文を含むアクティブ・トランザクションは、トランザクション・レベルでは影響を受けません。それらの完了済の文に対応するロールバック・データは、SYSTEM表領域にある遅延ロールバック・セグメントに保存されます。表領域が再びオンライン化されると、このロールバック・データは必要に応じて表領域に適用されます。」

とあるので「SYSTEM表領域にある遅延ロールバック・セグメントに保存」されるようです。

QAccess2000 実行時エラー '3061':

Access2000(初心者)
下記コードを実行すると実行時エラー '3061': パラメータが少なすぎます。1を指定してください。と出ます。
※検索したレコードの削除(日付)
CurrentDb.Execute "DELETE * FROM テーブル名 WHERE ((([テーブル名].[日付]) Between #2009/01/01# And テキスト名)); "

テキスト名に入力されているデータがおかしいのでしょうか?
Me.テキスト名 = DateSerial(Format(Date, "yyyy"), Format(Date, "mm")-1, Format(Date, "dd"))
御教授願います。

Aベストアンサー

#1です

申し訳ない、確認して上げたつもりが・・・
> Format("yyyy/mm/dd", Me.テキスト名)
の引数が逆
Format(Me.テキスト名, "yyyy/mm/dd")
と、言うことね


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング