• 締切済み
  • すぐに回答を!

MFC ADOでSQL Serverに接続するには

初心者の初めての質問です。ご教授よろしくお願いします。 開発環境は Microsoft Visual Studio Term System 2008 OS XP SP3 Microsoft SQL Server 2005 です。 VC++ MFC、SQL Serverでプログラムを組んでいるのですが、 今DB接続に困っています。 「Provider=MSDASQL;DSN=DB名;UID=ID;PWD=PassWord」の文字列を使ってDBとの接続ができますが、 一回目のトランザクションが失敗します。 エラー内容は 「 DbConnection::Transaction COM Error:80004005 Source:Microsoft OLE DB Provider for ODBC Drivers エラーを特定できません 」 です。 解決方法を教えて頂ければ幸いです。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数1693
  • ありがとう数2

みんなの回答

  • 回答No.2
  • YEND77
  • ベストアンサー率56% (21/37)

うまくいくselect文もありますか? 切り分けとして、その関数のクエリを実行するところで うまくいくselect文をかませてやってもらえますか? 上記が、うまくいく場合は、落ちてしまうselect文に問題がありそう。 それでもうまくいかない場合は、その関数にくるまでの設定に 問題がありそう。 ちなみにカーソルモードは何ですか?

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • DB接続ができなくなって困っています!

    いつも参考にさせていただいております。 今回、自宅のPCに構築した開発環境のDBに、急に接続できなくなりました。 ==================================== 【開発環境】※ASP環境 OS :windows 8 IIS:8.0 DB :(1)MySQL 5.5.32   ※「mysql-connector-odbc-5.2.5」もインストール済。  (2)Access2013 ==================================== 先日まで、問題なくDBに接続できていましたが、寝ぼけて何かの設定を変えてしまいました。 ※恥ずかしながら、気づいたら設定変更後で何の設定を変えたのか不明です。。。 すると、今まで正常に接続できていたMySQLとAccessが、以下のエラーで接続できなくなりました。 ==================================== 【MySQL接続】 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。 【Access接続】 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Driver Manager] 指定された DSN には、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています ==================================== なお、接続箇所のロジックは以下となります。 ==================================== 【MySQL接続】 Set oCn = Server.CreateObject("ADODB.Connection") oCn.Open UDL_FILE(※1), "", "" ※1 上記「UDL_FILE」は、以下の内容を設定しているUDLファイルを読み込んでいます。 ------------------------ [oledb] ; Everything after this line is an OLE DB initstring PROVIDER=MSDASQL;DRIVER={MySQL ODBC 5.2 Unicode Driver};SERVER=localhost;USER=hogeU;PASSWORD=hogeP;DATABASE=hoge; ------------------------ 【Access接続】 Set poCnMdb = Server.CreateObject("ADODB.Connection") poCnMdb.Open DNS(※2), "", "" ※2 上記「DNS」は、ODBCデータソース アドミニストレーター(32bit版)で登録したシステムDSNです。 ------------------------ ドライバー:Microsoft Access Driver(*.mdb) ------------------------ ==================================== MySQLやODBCドライバーの再インストールを試みましたが、上記エラーが解消されません。 自業自得なのは重々承知しておりますが、復旧できなくて大変困っています。 お忙しいところ申し訳ありませんが、復旧方法のご教授をお願いいたします。 以上です。

  • 【大至急】DB接続ができなくなって困っています!

    いつも参考にさせていただいております。 今回、自宅のPCに構築した開発環境のDBに、急に接続できなくなりました。 ==================================== 【開発環境】※ASP環境 OS :windows 8 IIS:8.0 DB :(1)MySQL 5.5.32   ※「mysql-connector-odbc-5.2.5」もインストール済。  (2)Access2013 ==================================== 先日まで、問題なくDBに接続できていましたが、寝ぼけて何かの設定を変えてしまいました。 ※恥ずかしながら、気づいたら設定変更後で何の設定を変えたのか不明です。。。 すると、今まで正常に接続できていたMySQLとAccessが、以下のエラーで接続できなくなりました。 ==================================== 【MySQL接続】 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。 【Access接続】 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Driver Manager] 指定された DSN には、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています ==================================== なお、接続箇所のロジックは以下となります。 ==================================== 【MySQL接続】 Set oCn = Server.CreateObject("ADODB.Connection") oCn.Open UDL_FILE(※1), "", "" ※1 上記「UDL_FILE」は、以下の内容を設定しているUDLファイルを読み込んでいます。 ------------------------ [oledb] ; Everything after this line is an OLE DB initstring PROVIDER=MSDASQL;DRIVER={MySQL ODBC 5.2 Unicode Driver};SERVER=localhost;USER=hogeU;PASSWORD=hogeP;DATABASE=hoge; ------------------------ 【Access接続】 Set poCnMdb = Server.CreateObject("ADODB.Connection") poCnMdb.Open DNS(※2), "", "" ※2 上記「DNS」は、ODBCデータソース アドミニストレーター(32bit版)で登録したシステムDSNです。 ------------------------ ドライバー:Microsoft Access Driver(*.mdb) ------------------------ ==================================== MySQLやODBCドライバーの再インストールを試みましたが、上記エラーが解消されません。 自業自得なのは重々承知しておりますが、復旧できなくて大変困っています。 お忙しいところ申し訳ありませんが、復旧方法のご教授をお願いいたします。 以上です。

  • ASPからMySQLへの接続

    http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_03.htm等を参考につくってみたのですが、 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。 や Microsoft OLE DB Provider for SQL Server エラー '80040e4d' 接続文字列の属性が正しくありません。 のエラーが出てしまいます。 PC環境はWindows2003server、mysql5.0.18です。

  • 回答No.1
  • YEND77
  • ベストアンサー率56% (21/37)

このメッセージはよく目にします。。。 自信はないのですが、、、 >>DBとの接続ができますが とありますが、DBとの接続が確認できた方法はどのような方法ですか? >>一回目のトランザクションが失敗 トランザクションを行っているということですね。 トランザクションをきらないやり方ではどうですか? できないのは、update/dalete等ですか?selectもできませんか? 差し支えなければ、問題となったソース部分を張っていただけますか?

共感・感謝の気持ちを伝えよう!

質問者からの補足

ありがとうございます。 DBとの接続が確認できた方法はどのような方法ですか? アプリが起動し、画面からデータの確認ができます。 すべてのトランザクションが失敗するわけでもありません。selectを行った後失敗します。 selectを行う処理が以下になります。 int DbConnection::Search(LPCSTR lpszSql, DbRecordset* pRecordset) { HRESULT hr = S_OK; DbRecordset* pRst = pRecordset; if(pRst == NULL) pRst = s_pRecordset; if(pRst == NULL) return -1; if(s_pConnect == NULL) return -1; try { pRst->SetRecordset(s_pConnect->Execute(lpszSql, NULL, adCmdText)); } catch(_com_error& e) { PutCOMError(e, "DbConnection::Search"); OutputLog(1, "d:\\adoerr.log", lpszSql); return -1; } return 0; } よろしくお願いいたします。

関連するQ&A

  • VC++からSQL Server 2008への接続

    現在ODBCを使用してSQL Serverと接続しています。 ODBCだとそれを使用するマシン全てにODBCの設定をしないといけないため、ODBCの使用を避けようと思っております。 そこで、ODBC以外を使用して、マシンへの設定等も必要がない、SQL Serverと接続するものを探しております。 開発言語はVS2010のVC++です。 DBはSQL Server 2008です。 ADOとODBCであれば、providerに直接指定することで、ODBCの接続なしにSQLに接続できると耳にしたのですが、 やり方がわかりません(VBのページがやたら出てくる) いい接続方法はありますでしょうか? また、その構文例、参考ページがありましたらご教授頂けたらと思います。 よろしくお願い致します。

  • VC++でSQL Serverに接続するには

    初めての質問です。 開発環境は Microsoft Visual C++ 2008 Express Edition OS XP SP2 Microsoft SQL Server 2005 です。 VC++でSQL Serverに接続しようと思っているのですが 初心者ゆえ、殆ど(専門家から見れば、ほぼ全く)分かりません。 Microsoft Visual C++ 2008 Express Editionのため MFCは使用できず、ODBCも同等の理由ゆえ使えないみたいです。 そこでOLE-DBにてSQL Serverへの接続を試みようと思いました。 しかしgoogleにて検索をかけてみるも、よく分からず これといった情報や手がかりが掴めませんでした。 (一応、プロバイダーや、コンシューマテンプレートなどと いった単語は文字通りの意味で目にしました) SQL Serverへ接続するには、どうすればいいでしょうか? 何か必要な知識や、キーワード、を教えて頂ければ幸いです。

  • [ODBC]Oracle接続時のエラー

    初めて投稿させて頂きます。 客先システム(ASPサービス)の保守をすることになり社内に環境を構築したのですが、以下の「※」の行で エラーが発生してしまいます。(エラー内容を確認するため、On Error Resume Nextを一時的にコメントにしてあります) インデントが効かないようなので見辛いと思いますが... [ソース] ------------------------------------------------------------------------------- 'オブジェクトの生成 Set wkdbCnct = Server.CreateObject("ADODB.Connection") 'On Error Resume Next ※→wkdbCnct.Open "DSN=" & DBCNN_DSN & "; UID=" & DBCNN_UID & "; PWD=" & DBCNN_PWD & ";" If Err.Number <> 0 Then Set wkdbCnct = Nothing On Error Goto 0 Response.Redirect DBERROR_URL Exit Function End If -------------------------------------------------------------------------------- [エラー内容] Microsoft OLE DB Provider for ODBC Drivers エラー '80040e4d' [Microsoft][ODBC driver for Oracle][Oracle]ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。 DSN等の設定値を確認するため以下のようなデバッグコードを仕込んで、変数「vPara」を画面に表示させてみました。 [デバッグコード入りソース] ------------------------------------------------------------------------------- Set wkdbCnct = Server.CreateObject("ADODB.Connection") On Error Resume Next wkdbCnct.Open "DSN=" & DBCNN_DSN & "; UID=" & DBCNN_UID & "; PWD=" & DBCNN_PWD & ";" If Err.Number <> 0 Then '↓デバッグ用コード val1 = Err.Number val2 = Err.Description vPara = "" vPara = "DSN=" & DBCNN_DSN & "; UID=" & DBCNN_UID & "; PWD=" & DBCNN_PWD & ";" & " | " & "Err.Number = " & val1 & " | Err.Description = " & val2 Exit Function '↑デバッグ用コード Set wkdbCnct = Nothing On Error Goto 0 Response.Redirect DBERROR_URL Exit Function End If -------------------------------------------------------------------------------- [画面に表示したvParaの内容] DSN=HOGE; UID=USER123; PWD=PASS123; | Err.Number = -2147217843 | Err.Description = [Microsoft][ODBC driver for Oracle][Oracle]ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。 SQL*Plusで「USER123/PASS123@HOGE」でログインを試みたところ、問題なく接続出来ました。 どういった事が原因として考えられるでしょうか? [AP&DBサーバ] Windows Server2016 Standard IIS Version 10.0.14393.0 OracleDatabase12c(12.2.0.1) + OracleClient12c(12.2.0.1-32bit) 不足している情報等ありましたらご指摘お願いします。

  • ASP 0x80004005 クライアントとの確立で失敗

    いつもお世話になっています。 つい昨日まで、対SQLserverにDB取得が出来ていたのですが、今日になって下記のエラーが発生してしまいました。 IISは匿名アクセスにはチェックが入っている状態です。 なぜこのような現象になるか全く掴めなくて困っております。 ----------------------------------------- エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC SQL Server Driver]クライアントの接続が確立できません ----------------------------------------- どなたか、ご教授をお願いいたします。 設定の確認事項は補足を入れていただければ、早急にお答えいたします。

  • SQL Serverのエラーについて

    サーバーの環境 OS:MS Windows NT Server 4.0 DB:MS SQL Server6.5 SQL Server 6.5 Service Pack 5a Windows NT 4.0 Service Pack 6a Internet Information Server 4.0 Internet Explorer 5.5 SQL Serverにクエリーを実行すると以下のエラーが発生します。 解決方法をご存知の方いましたらご教授願います。 Microsoft OLE DB Provider for ODBC Drivers エラー '80040e14' [Microsoft][ODBC SQL Server Driver][SQL Server]行のサイズが 2107 になり、作業テ-ブルの作成に失敗しました。テ-ブル 2014 内の 1 行の許容サイズを超えます。

  • SQL serverの環境構築

    私、パソコン初心者なのですが、dbconnect.incファイルについて調べているのですが、よく理解することができません。どなたか詳しい方教えていただけないでしょうか? エラー タイプ Microsoft OLE DB Provider for SQL Server (0x80040E4D) ユーザー 'sa' はログインできませんでした。 /hozen/Include/dbconnect.inc, line 9 というエラーがでたので調べています。

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

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

  • SQL Serverへのネットワーク接続

    SQL ServerにODBC接続するために、DSN登録しようとしているのですが、 うまくいきません。 ドライバはSQL Serverを選択し、 サーバ名「PC16\SQLEXPRESS」 「SQLServer用のログインIDとパスワードを使う」 でログインID,Passを入力した際、 「sa」だと次へ進めるのですが、他のユーザだと 「ユーザー'XXXX'はログインできませんでした」 というメッセージが出てしまいます。 DB側では、TCP/IPを有効にしてあり、FireWallの例外にも追加してあります。 解決方法ご存知の方、よろしくお願いします。

  • ADOのExecuteメソッドで交互にエラーが出る

    こんにちは。 ExcelでADO+ODBCを用いてローカルのMySQLにアクセスしています。 とあるサイトから参考にさせてもらって作成した以下のソースで、 シート上のボタンをクリックしたら ODBCに設定したDSNのテーブル一覧をシートに出力 するというマクロなのですが、実行してみると正常終了とエラーが交互に繰り返されます。 エラーが出るときにデバッグしてみると標準モジュールの Set adoRS = adoCON.Execute("SHOW TABLES;") を実行した時点でエラー(赤丸の×でエラー説明なし)がでて強制終了します。 この原因について心当たりがありましたら教えてください。 ****シートモジュール**** Private dsn As String Private uid As String Private pwd As String Private strsql As String Sub para_get() dsn = Range("C6") uid = Range("C7") pwd = Range("C8") strsql = Range("C9") End Sub Sub ボタン1_Click() Dim errflag As Integer errflag = 0 Call para_get errflag = DBconnect(dsn, uid, pwd) If errflag <> 0 Then MsgBox "データベースに接続できませんでした" Else MsgBox "データベースに接続できました" End If errflag = sql_exe End Sub *****標準モジュール****** Dim adoCON As New ADODB.Connection Public Function DBconnect(dsn As String, uid As String, pwd As String) Dim errflag As Integer errflag = -1 On Error GoTo errflag 'Access VBA Tips '4.5 MySQLのデータベースを開く・閉じる 'ADOでデータソースをオープン adoCON.Open "dsn=" & dsn & ";uid=" & uid & ";pwd=" & pwd & ";" errflag = 0 Exit Function errflag: 'データベースのクローズ adoCON.Close Set adoCON = Nothing End Function Function sql_exe() As Integer Dim adoRS As New ADODB.Recordset 'レコードセットの作成(SELECT文の実行) Set adoRS = adoCON.Execute("SHOW TABLES;") Range("B15").CopyFromRecordset adoRS 'データベースのクローズ adoRS.Close Set adoRS = Nothing End Function

  • ADOでACCESSへの接続について。

    アクセスへの接続の部分で、パスワードを設定しなければ普通に接続できてデータも取得できました。 しかし、パスワードを設定するとエラーが出ます。 パスワードは"ttt"で間違いないのですが。。。 やはり、どこか間違っているのでしょうか? アドバイスお願いします。 「実行したASP」 <% Set cn = Server.CreateObject("ADODB.Connection") %> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=shift_jis"> <TITLE>バージョン情報</TITLE> </head> <body> <B>ActiveX Data Object Version Information</B><BR> version:<%= cn.Version %><BR> <% cn.Open "Memo","","ttt" %> <% cn.Close %> <% Set cn = Nothing %> </body> </HTML> 「エラーメッセージ」 エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] パスワードが正しくありません。 /L02_02.asp, line 10 ブラウザ タイプ Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)