• 締切済み

ASPでトランザクションをかけるとエラーする「ファイアーホースモード」

ASPでSQLserverに接続し、レコードの更新をかける際に、 BeginTrans---CommitTrans と記述すると、 「ファイアーホースモードの場合はトランザクションがかけられない」という 主旨のエラーが出ます。 このファイル内でトランザクションをかけている場面はここのみです。 (複数書いていてCursorTypeを設定しないとエラーするのは既に 解決済みです。) そもそも、「ファイアーホースモード」とはどんなモードなのでしょうか?

  • adrie
  • お礼率60% (6/10)

みんなの回答

  • mann555
  • ベストアンサー率46% (29/62)
回答No.1

下記URLを参考にしてみてください

参考URL:
http://www.users.gr.jp/ml/archive/asp/7240.asp
adrie
質問者

お礼

ありがとうございます。 LockTypeの変更を試してみますね。

関連するQ&A

  • エクセルVBA_ADO「ファイアホースモードの間はトランザクションを開

    エクセルVBA_ADO「ファイアホースモードの間はトランザクションを開始できない」 最近、エクセルVBAからSQLサーバーを編集するプログラムの勉強をはじめ、以下のサイトを読みながらテストプログラムを走らせています。 http://www.happy2-island.com/access/gogo03/capter00306.shtml そして、以下のようなコードを走らせて見ると、「ファイアホースモードの間はトランザクションを開始できません」とのエラーが出ます。 コードを以下に記します((2)トランザクションを開始します←ここで上記のエラーが出ます) Sub prcAdoSQLServerDB() Dim adoCON As New ADODB.Connection Dim adoRS As ADODB.Recordset '(1)ADOを使いSQL ServerのDBを開きます adoCON.Open "Driver={SQL Server};" & _ "server=aaa\db; database=a1; uid=a; pwd=a;" 'レコードセットの作成(SELECT文の実行) Set adoRS = adoCON.Execute("select * from 明細") 'レコード追加のSQLを定義(フィールド名省略すると、nullを入れようとする) strsql = "INSERT INTO 詳細 (得意先コード) Values(000010)" '(2)トランザクションを開始します adoCON.BeginTrans '(3)レコード追加のSQLを実行します adoCON.Execute strsql '(4)SQL実行結果の判定 If Err.Number = 0 Then '(5)SQLが正常終了したら追加を反映します adoCON.CommitTrans Else '(6)SQLが異常終了したら追加の破棄とエラー内容の表示をします adoCON.RollbackTrans End If End Sub 何が原因なのでしょうか。

  • ファイアホースモードエラーについて

    こんにちは 初めて質問させていただきます。 SQL Server2000の環境で Enterprise Managerからあるテーブルに対して更新処理を行うと 『ファイアホースモードの間はトランザクションを開始できません』というエラーが出てしまい、更新処理を行うことができません。 上記エラーは トランザクションが既にかかってる状態で、さらにトランザクションを開始しようとしていた場合等で生じるエラーでありますが、 再起動⇒Enterprise Manager⇒テーブル更新⇒エラー となり非常に困っております。 また、エラーとなるテーブルに対し、クエリ アナライザからUPDATE文を実行すると登録することができます。 上記内容で心当たりのあるかたご教授のほどよろしくお願い致します。

  • Accessdでの「トランザクションが多すぎる」エラーとは何?

    Access98のVBAでプログラムを組み、RecordsetをUpdateしたり、Deleteしたりしていると、『実行時エラー'3003':ネストしているトランザクションが多すぎるため、トランザクションを開始できませんでした』とエラーが発生します。 「トランザクション」の意味が分かりませんが、プログラムの中では、「トランザクション」なるモノを定義や設定したりしておりません。 ヘルプを閲覧すると「BeginTrans」「CommitTrans」「Rollback」と云う難しそうな言葉が出てきました。 エラーが発生しないようにするためには、プログラムの中にどの様なエラー回避の語を書き込んで置けば良いのでしょうか?

  • asp+dllでのcommitの有効範囲

    aspでトランザクション(BeginTrans、CommitTrans)を定義し、 そのトランザクション内でDB更新機能を持ったdllを使用したとします。 この時、dllでDB更新エラー時DBに対しロールバッグはかけることは可能 でしょうか  asp  BeginTrans  dllを呼ぶ  dllが不正終了時、aspを終了する  CommitTrans  dll   DBを更新(DLL内ではbegintran、committranはしない) もちろんDLLはサーバー内で動かします。 DBはsql server、DLLはvb6.0で作成します。 どうかお力添えを、、、

  • トランザクションの開始

    VBでSQLSERVER6.5にODBC接続し、 トランザクションを開始しようとしたところ、 以下のエラーメッセージが表示されました。 どういうことか教えてください。 db.BeginTrans 実行時エラー '2147168227(8004d01d('; 1つ以上のODBC接続が使用中のため、トランザクションを開始できません。

  • トランザクションの開始2

    たびたびすみません。 なぜか、今度は違うエラーになりました。 ファイアホースモードの間はトランザクションは開始できません。 だそうです。 なにかわかりませんか? 関連URL: http://oshiete1.goo.ne.jp/kotaeru.php3?q=222221

  • SQLServer 分散トランザクションについて

    現在サーババージョンアップに伴うストアドの動作検証を行っています。 内容としては2000で動作していたものを2008R2に移行するだけです。 そこでひとつ問題が発生して作業がとまってしまいましたので、 お力を借りたく、質問させていただきます。 環境としては、クライアントはACCESSプログラム、DBはSQLServerとなっています。 ストアドの実行で下記のように記載していたプログラムが動作しなくなりました。 Set adoCN = New ADODB.Connection adoCN.Open CurrentProject.Connection adoCN.BeginTrans adoCN.Execute "exec dbo.実行ストアド" 'エラー判定 adoCN.CommitTrans 上記エラー判定で「リンク サーバー "(null)" の OLE DB プロバイダー "SQLNCLI10" から、 メッセージ "アクティブなトランザクションがありません。" が返されました。」 となってしまいます。 また、このストアド内では「SET XACT_ABORT ON ~ SET XACT_ABORT OFF」 としてあります。 ちなみに、上記「adoCN.BeginTrans」、「adoCN.CommitTrans」をコメントすると、 正常に動作しました。 「SET XACT_ABORT ON」としているので「adoCN.BeginTrans」はなくてもいいと思うのですが、 明確に『不要である』としている文献等、見つからなかったため、迷っています。 サーバはバージョンアップに伴い、分散トランザクションを使用するようになっていますが、 この変更が影響しているのかどうか、まったく別の原因なのか、わからない状態です。 うまく伝わっているか心配ですが、どうぞ宜しくお願い致します。

  • Sqlトランザクションの必要性

    SQLServer2005Expressを使用しています。 そこでトランザクションについて質問させて頂きます。 複数のスレッドや複数の端末から1つのテーブルの1つのレコードを 更新する場合に、トランザクションを掛ける必要性はあるでしょうか。 複数のセットとなるテーブルを更新する場合はトランザクションで 整合性を保ちつつ排他を行うので必須と思いますが、 1つのテーブルの1つのレコードの場合も必須でしょうか。 また、必須ではなくてもトランザクションを掛けておく有効な理由は あるでしょうか。 ちなみにトランザクション中は、他のコネクションから参照も不可に なるようにしております。 よろしく願いいたします。

  • トランザクションモード

    早速ご教示ください。 データベース(TEST_db)のM_SYAIN_CDというテーブルがあるとします。 【クエリアナライザ】TEST_db BIGIN TRANSACTION GO DELETE M_SYAIN_CD GO 上記を実行します。 この状態で、M_SYAIN_CDの全行を返すと、『Microsoft odbc sqlserver driver 時間切れになりました』とエラーになり全行返すことができません。 (1)なぜMicrosoft odbc sqlserver driver 時間切れになりました。とな るのか? トランザクションモード中にテーブルは見れないのでしょうか? 【クエリアナライザ】TEST_db BIGIN TRANSACTION GO DELETE M_SYAIN_CD GO COMMIT TRANSACTION GO (2)上記実行後、ROLLBACKはできるのでしょうか? ご教示の程宜しくお願い致します。

  • 手動または分散トランザクションモード…のエラー

      お世話になります。 開発言語:VisualBasic 6 sp6 OS :WindowsXP Pro sp3 DB :Microsoft SQL Server 2005 以下のコードはCommand1ボタンをクリックした時に実行される処理です。 処理内容は、テーブルAを読み、テーブルAの全てのレコードを順次読みながら テーブルBを検索し、テーブルBの"keyname"をprintします。 ※実際のプログラムではテーブルAを順次読むループの中で多数のテーブルへの  新規レコード追加、更新などを行っております。 Private Sub Command1_Click()   Dim objConn   As ADODB.Connection   Dim objRsA   As ADODB.Recordset   Dim objRsB   As ADODB.Recordset   Dim sSQL   As String   Set objConn = New ADODB.Connection   objConn.ConnectionString = cstrCon   objConn.Open   Set objRsA = New ADODB.Recordset   Set objRsB = New ADODB.Recordset   'トランザクション開始   objConn.BeginTrans   sSQL = "select * from テーブルA"   objRsA.Open strSQL, objConn   If objRsA.EOF = False Then     Do Until objRsA.EOF       sSQL = "select * from テーブルB where key = " & objRsA.Fields("key")       objRsB.Open strSQL, objConn    '←この行でエラー発生       Print objRsB.Fields("keyname").Value       objRsB.Close       objRsA.MoveNext     Loop   End If   objRsA.Close   'コミット   objConn.CommitTrans End Sub ↑の処理を実行すると「objRsB.Open strSQL, objConn」の行で以下の実行エラーになります。 "手動または分散トランザクションモードのため、新規接続を作成できません。" このエラーの原因が分からず自分でもいろいろ調べてみました。 以下のサイトも何度も見直してみましたがよく理解できませんでした。 http://support.microsoft.com/kb/234218/ja どこが間違っていて、どこを修正すればエラーが出なくなるのでしょうか? よろしくお願い致します。