• 締切済み

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 エラーを特定できません 」 です。 解決方法を教えて頂ければ幸いです。

みんなの回答

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

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

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

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

choucam
質問者

補足

ありがとうございます。 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

  • SQLサーバーへの接続に 接続したいのですが・・・

    質問する場所が 違ったかもしれないので 再度質問させていただきます。 SQLサーバーを始めたばかり です。 ASPで SQLサーバーのデータを表示しようとしています。 環境: WinXP (Pro)     IIS設定済み     SQL Server 2005 Express Edition 近くに2003サーバーがあるので 最終的にはそちらで動作させる予定です。 サーバーが現用機なので 自PCで動作確認してからと思っています。 色々ネットや本を調べて まず接続しようとしましたが そこでつまづいています。 この方法以外も沢山試しましたが全てうまく行きません。 2005 ExpressでDBとテスト用のテーブルが作成してあります。 そのデータを読み出せれば 第一段階とトライしますが、 IEから接続にいくと「objCon.Open」がエラーになってしまいます。 ASPファイルの内容は 以下です なお DB名は 「作成した名前」と入れています よろしく お願いします ---------------------------------------------------- <%@ LANGUAGE="VBScript" %> <% option explicit %> <% Dim objCon ' DB接続コネクション Dim objRS ' DB結果レコードセット Dim sql ' SQL文 Dim errflg ' エラーフラグ 'DataSource名 Const DS = "111.111.0.1" ←IPアドレス。正しいものをいれてます Const IC = "DB名"      'ユーザ名 Const User = "sa" 'パスワード Const Pwd = "sa" Set objCon = Server.CreateObject("ADODB.Connection") Set objRS = Server.CreateObject("ADODB.Recordset") objCon.ConnectionString = "Provider=SQLOLEDB;" & _ "User ID=" & User & ";" & _ "Password=" & Pwd & ";" & _ "Data Source=" & DS & ";" & _ "Initial Catalog=" & IC objCon.Open'ここで エラーになります sql = "select * from Aテーブル" objRS.Open sql,objCon,adOpenStatic,adLockReadOnly %> レコード件数 <%=objRS.RecordCount%> <% ' DBclose objCon.Close() Set objCon = Nothing objRS.Close() Set objRS = Nothing %> なお エラー内容は 以下です ----------------------------- HTTP 500.100 - 内部サーバー エラー - ASP エラー インターネット インフォメーション サービス エラー タイプ Microsoft OLE DB Provider for SQL Server (0x80004005) [DBNETLIB][ConnectionOpen (Invalid Instance()).]接続が正しくありません ----------------------------- また  1.IPアドレスは Const DS = "127.0.0.1"でも 同様なエラーです 2.表示できるASPファイルを置き、他のPCから 表示できる環境です

  • 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サーバーに接続できなくなりました。

    OS:vista SQL:Microsoft SQL Server 2005(無料版) 昨日までなんの問題もなくSQLサーバーに接続できていたのですが 今日パソコンをつけたら(シャットダウンしていた) SQLサーバーに接続できなくなりました。 何が起きたのかわかりません。 何も設定は変えていません。 エラーメッセージは ___________________________________________________ SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。 (provider: 共有メモリ プロバイダ, error: 40 - SQL Server への接続を開けませんでした) (.Net SqlClient Data Provider) Error Number: 2 Severity: 20 State: 0 ___________________________________________________ です。 参考に画像を添付します。 上:SQLサーバー接続時のエラー 下:アクセスからSQLサーバーのテーブルにリンクしているのですが テーブルが開けない時のエラー もしかしたらパソコンを落とした時ウインドウズアップデートが発生していたのかもしれません。 初心者の為、何が起きたのかよくわかりません。 ここからどうしたらよいか教えてください。 よろしくお願いします。

  • SQL serverの環境構築

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

  • [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.NETでSQL-SERVERへの接続方法

    最近、ASP.NETの勉強をはじめました。テキストを見ながらサンプルプログラムを作成しているのですが、SQL-SERVERへのDB接続方法がうまくいきません。 Dim conn As String = "data source=????;user id=sa;password=;initial catalog=SampleDb" Try   Dim objConn As New SqlClient.SqlConnection   objConn.ConnectionString() = conn   Dim comm As New SqlClient.SqlCommand(sql, objConn)   objConn.Open() ソース一番上の????の部分に何と記述すればいいかわかりません。テキストには localhost と記述されています。コンパネの「ODBCデータソース」のDSNやサーバ名を記述しても無理でした。 ASP開発で使用していたDB接続 Conn = "PROVIDER=SQLOLEDB;SERVER=サーバ名;DATABASE=YUSODB;UID=sa;PWD=;" を試したりしたのですが、無理でした。 どなたかご教授お願いします。

  • SQLサーバー接続について

    DB初心者です。 ODBCからSQLサーバーへのアクセスを設定したく、奮闘しておりますが うまくいかず困っております。 先方から支給されたのは、 DB名、ID、パスワード、ホスト名、ポート番号、MySQLのバージョン5.0.90で、 その通り設定したつもりが、以下のようなエラーが出てソース作成できません。 --- 接続できませんでした。: SQLState: '01000' SQL Server エラー: 11001 [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen(Connect()). 接続できませんでした。: SQLState: '08001' SQL Server エラー: 6 [Microsoft][ODBC SQL Server Driver][TCP/IPSockets]指定された SQL Server が見つかりません。 --- エラー番号で検索してみても原因がわからず・・・ 詳しい方いらっしゃいましたらお願いいたしますm(__)m

  • 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です。

  • FTPサーバー上のデータにADO接続したい

    WINDOWS2008サーバー/クライアント Win7 FTPサーバー上にあるEXCELファイルから、同じFTPサーバー上のACCESSファイルへ ADO接続したいのですが、(そのエクセルをクライアントPC Win7から実行します) Dim adoCON As New ADODB.Connection adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _ & "Data Source=IPアドレス" & ";DATABASE=accdb名" & & "; UId=FTPユーザー名 ; PWD=パスワード; " ではエラーになってしまいます。 どなたか教えていただけませんでしょうか? どうぞよろしくお願いいたします。

  • SQLサーバーへの接続が どうしてもウマくいきません

    SQLサーバーを始めたばかり です。 ASPで SQLサーバーのデータを表示しようとしています。 環境: WinXP (Pro)     IIS設定済み     SQL Server 2005 Express Edition 近くに2003サーバーがあるので 最終的にはそちらで動作させる予定です。 サーバーが現用機なので 自PCで動作確認してからと思っています。 色々ネットを調べて まず接続しようとしましたが そこでつまづいています。 この方法以外も沢山試しましたが全てうまく行きません。 2005 ExpressでDBとテスト用のテーブルが作成してあります。 そのデータを読み出せれば 第一段階とトライしますが、 IEから接続にいくと「objCon.Open」がエラーになってしまいます。 ASPファイルの内容は 以下です なお DB名は 「PC名¥SQLEXPRESS」といれています よろしく お願いします ---------------------------------------------------- <%@ LANGUAGE="VBScript" %> <% option explicit %> <% Dim objCon ' DB接続コネクション Dim objRS ' DB結果レコードセット Dim sql ' SQL文 Dim errflg ' エラーフラグ 'DataSource名 Const DS = "111.111.0.1" ←IPアドレス。正しいものをいれてます Const IC = "DB名"      'ユーザ名 Const User = "sa" 'パスワード Const Pwd = "sa" Set objCon = Server.CreateObject("ADODB.Connection") Set objRS = Server.CreateObject("ADODB.Recordset") objCon.ConnectionString = "Provider=SQLOLEDB;" & _ "User ID=" & User & ";" & _ "Password=" & Pwd & ";" & _ "Data Source=" & DS & ";" & _ "Initial Catalog=" & IC objCon.Open sql = "select * from Aテーブル" objRS.Open sql,objCon,adOpenStatic,adLockReadOnly %> レコード件数 <%=objRS.RecordCount%> <% ' DBclose objCon.Close() Set objCon = Nothing objRS.Close() Set objRS = Nothing %>