• ベストアンサー

VB6(ADO)=>SQLSERVER2000アクセス時のエラーコードの意味?

VB6でADOと使用してSQLServer2000にアクセスしています。 以下のエラーが発生します。 -2147217871(80040031) 日本語のメッセージは別の場所で発生したので不明です。 よく-2147467259(80004005)時間切れになりました。 というメッセージはでますが、それとはコードが異なります。 教えていただきたのは、上のメッセージコードからその意味を知るには どのマニュアル(SQLServer2000のBOOKSOnlineのどの箇所?)をみれば 書いてあるのかということです。 ご存知の方お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#22222
noname#22222
回答No.2

s_husky です。 BOOKS Online にはエラーコードは掲載されていないと思います。 あくまでも ADO のエラーだと思います。 ですから「OLE DB Programmer's Reference」の「Chapter 16」あたりを参照するしかないようです。 が、多分、Err.Description と大差ないと思います。 *素人ですので、後は、宜しく!

yuyan1962
質問者

お礼

ありがとうございます。調べてみます。

その他の回答 (1)

noname#22222
noname#22222
回答No.1

次は、Accessプロジェクトで使用している関数です。 少し、ヒントが含まれているかも知れません。 VBバージョンを作成してから、それを示せば良いのでしょうが・・・面倒なので! Public Sub ErrMessage(ByVal CnnErrors As ADODB.Error, ByVal strSQL As String)    MsgBox "ADOエラーが発生しましたので処理をキャンセルします。" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & CnnErrors.Description & Chr$(13) & _       "・Err.Number=" & CnnErrors.Number & Chr$(13) & _       "・SQL State=" & CnnErrors.SQLState & Chr$(13) & _       "・SQL Text=" & strSQL, _       vbExclamation, " ADO関数エラーメッセージ" End Sub Public Function CnnExecute(ByVal strSQL As String) As Boolean On Error GoTo Err_CnnExecute    Dim isOK As Boolean    Dim cnn As ADODB.Connection       isOK = True    Set cnn = CurrentProject.Connection    With cnn      .Errors.Clear      .BeginTrans      .Execute strSQL      .CommitTrans    End With Exit_CnnExecute: On Error Resume Next    cnn.Close    Set cnn = Nothing    CnnExecute = isOK    Exit Function Err_CnnExecute:    isOK = False    If cnn.Errors.Count > 0 Then      ErrMessage cnn.Errors(0), strSQL      cnn.RollbackTrans    Else      MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute)", _         vbExclamation, " 関数エラーメッセージ"    End If    Resume Exit_CnnExecute End Function

yuyan1962
質問者

補足

すみません。回答ありがとうございます。 VBのerrオブジェクトのdescriptionには、SQLサーバが返した エラーメッセージ文字列が格納されているのは把握しているのですが、 マニュアルで-2147217871(80040031)などというSQLのエラーコードの意味と対処方法がどこかに書いていないかなという質問です。 (またはMSのWebサイトのどこかに)

関連するQ&A

  • VB6でSQLServerへADO接続するとOPENがすごく遅いんです。

    お世話になってます。 今、VB6.0で作成したシステム(ADOでACCESS2000に接続)をSQLServerに移行しています。 しかしDBの初回OPEN時に5秒くらいかかってしまいます。 原因を探しているのですが、どうしても見つかりません。 誰かご存知の方がいらっしゃいましたら、ご教示お願いします。 開発環境は以下の通りです。 OS:WindowsXP SP2 開発言語:VB6.0 SP5 データベース:SQLServer2005 ADO:ADO2.5

  • VB6からADOを介してACSESS2000MDBへのアクセスエラー

    VB6からADOを使用しACSESS2000MDBにデータを登録すると INSERT 文でエラーになってしまいます。 エラーコード:-2147217833です。 何が原因か分かる方教えて下さい。

  • VB2005からSQLServer2005への接続

    VB2005とSQLServer2005のどちらも製品版をインストールしました。 VB2005よりサーバエクスプローラから接続の追加により自分で作成したテーブルに接続を試みたところ、 以下のようなエラーが発生し接続できません。 (エラー内容)サーバーへの接続を確立しているときにエラーが発生しました。SQL Server2005に接続しているときにこのエラーが発生した場合は、SQL Serverの既定の設定がリモート接続を許可しないようになっていることがエラーの原因である可能性があります。(provider:共有メモリ プロバイダ,error:40-SQL Serverへの接続を開けませんでした) なにかSQLServer側の設定を変更しないと接続できないのでしょうか? どなたかアドバイスお願いします<(_ _)>

  • VB6.0でSQLServerへ・・・RecordSet生成タイムアウト・・・

    VB6.0でSQLServer2000へADOで接続して、RecordSetに結果を入れる際に「時間切れ」になってしまいます。コネクションはちゃんとできていて(connection.stateは1)で、 RecordSet.open(SQL文,connection,adOpenForwardOnly,adLockReadOnly)でしばらく待った後「Err.description」で時間切れと言われてしまいます。connection.ConnectionTimeout = 200にしてても時間切れです・・・(涙) でで、SQLServerのlocalhost端末のAccessからSQLServerにリンクをはって同様のSQL文(普通のSelect文です、Joinも副問い合わせとかもしてないです。)をクエリで実行したところ、結果が返ってくるまで15分くらいかかりました。抽出条件にIndexを張ってないため・・・(事情があってIndexはれないです)こういう場合、どのようにしてVBでRecordSetを取得すればいいのでしょうか?ConnectiontimeoutはrecordSet取得時にも有効ですか?そうだとしたら、connectiontimeoutは好きなだけ大きい値を設定してみてよいのでしょうか?

  • SQLServerのエラー1069について

    Win2000Server+SQLServer2000を利用しています。 昨日まで正常に稼動していたのですが、今日アクセスできないので、SQLServerの状態を見ると停止していました。 SQLServerを開始しようとすると 「ログオンに失敗したため、サービスを開始できませんでした」 「エラー1069 (ログオンに失敗したため、サービスを開始できませんでした)が、MSSQLServerサービスでこのサービス操作を実行中に発生しました」 のようなエラーが出ます。 管理ツールのサービスからSQLSERVERAGENTを選び、アカウントを変更して試しましたが、同じエラーが出ます。何が原因なのでしょうか?

  • ACCESSからSQLServerのデータを取得したい

    SQLServerが利用できない環境にデータを持っていくため、以下のようなシステムを考えております。(テーブルのリンクは不可・手動でのデータのエクスポートは不可) 1.ACCESSのフォームに「データベース名」「テーブル名」を入力し、実行ボタン押下 2.ADOでSQLServerに接続 3.指定のテーブルと同じ構造のテーブルをACCESSに作成 4.SQLServerのデータをACCESSにINSERT ここで質問なのですが、ACCESSは自分のデータベースとSQLServerのデータベースに同時に接続できますか? 同時接続した場合のACCESS/SQLServerの書き分けはどのようになるのでしょうか。

  • access vb の検索をする命令でエラー

    access vb の criteria を使用してデータ検索をする命令の箇所でエラーが出る (テスト用データではエラーが出ない)   テストを終え本番切り替え時にエラーが出る。   動作環境はWinxp,winvista、win7 access2003とaccessvbで構築したdb      実行時エラー’3265’もどこを見て原因があるかも不明です     (Accessデータベースを検索するためAccessのフォームにある Access vbの、(1)ロジックと、(2)エラー表示の内容) (1)ロジック      rs2.Open "講座開始日時テーブル",cx,adOpenKeyset,adLockOptimistic  criteria = "講座コード ='”& 講座コード & "'"   ’講座コードの属性は string      rs2.moveFist      rs2.find critera, 0    ’<- この命令のところでテスト用プログラムでは                    ’エラーがでないのに、本番用プログラムでは                    ’以下のエラーが出て原因が把握できない状態です       Do Until rs2.EoF                 If rs2.EOF Then 講座番号確認区分 = "エラー"  ’エラー表示 GoTo enda Else 講座コード = rs2!講座番号    ’データ検索OK          GoTo XXX  Endif      Loop (2)エラー表示  |ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー  |Microsoft Visual Basic  | 実行時エラー’3265’  | 要求された名前、または序数に対応する項目がコレクションで見つかりません。  |   |   | 継続  終了(E)  デバッグ(D)  ヘルプ(H)  |ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

  • VB6 ADOの参照設定の意味、

    VB6.0にて、ADOを使用したアプリケーションを作成しています。 参照設定にてADO2.7を指定しています。 コンパイルしたアプリケーションを、 MDAC2.5が入っている環境で、動かしてみたら動きました。 インストールされているMDACの確認には、Microsoftのツールを使用しました。 下記コードを記述したモジュールを作成し、 Dim adoCon As ADODB.Connection Set adoCon = New ADODB.Connection MsgBox adoCon.version その環境にてバージョンを確認したら 「2.5」と表示されました。 ちなみに、MDAC2.7がインストールされている環境では、「2.7」と表示されました。 ここで質問があるのですが、 参照設定でADO2.7を指定した場合、 動作先の環境に入っている最新のADOのバージョンが使われると考えて良いのでしょうか? たとえば、動作先の環境にADO2.1が入っていたら、参照設定のバージョンに関わらず、それで動作する・・・ が、バージョンに依存するメソッドを実行するとエラーになってしまうとか。 Createobjectで生成するのと、かわらないのでしょうか? よろしくお願いいたします。

  • ネットワーク上のDBにアクセス時にエラー

    VB6.0 + Access2003を使用しています。 ネットワーク上にMDBがあり、複数の端末からアクセスしています。 MDBにはADO接続で、共有モードで開いています。 複数の端末から同時にOpenし、同じテーブルにアクセス(Select文実行) した場合に、 エラー番号:-2147467259 内容:Microsoft JET Database Engineでエラーが発生しました。     データベース"を開くことができません。アプリケーションで認識できない    データベースであるか、またはファイルが破損しています というエラーが発生します。(ファイルは破損していません) 3、4台で同時アクセスを何度が試していますが、 毎回このエラーが出ることはなく、エラーが出る原因がわかりません。 原因、対処方法などわかりましたら教えてください。 よろしくお願いします。

  • VB6+SQLServer2005 DBの新規作成

    VB6+ADOを使用してSQLサーバーの新規データベースファイルを 作成しようと思っております。下記のようなプログラムを つくりましたがうまく動きません。お知恵を貸してください。 catDB.Createのところで 「インターフェイスがサポートされていません」 とエラーが出ます。 いままでAccess2000で動かしていたものをSQL2005に移設している ところです。 SQLサーバーは、はじめて触ります '--------------------------------------------- 'Const ADO_VERSION ="Microsoft.Jet.OLEDB.4.0;" Const ADO_VERSION ="SQLOLEDB;" '--------------------------------------------- Set catDB = New ADOX.Catalog catDB.Create "Provider=" ADO_VERSION & _ "Data Source=" & "d:\test"