• 締切済み

ACCESS VBAでサーバー起動しているか確認

ACCESS2000でOracle8iとODBC接続しております。 接続先サーバーが複数あり、それぞれテーブルリンクしてVBAで処理を記述しております。サーバーが起動していないと当然以下のエラーで接続が失敗します。  ■実行時エラー '3151':ODBC 'データベース' への接続に失敗しました。 各接続先サーバーは夕方~22時までの間にランダムで終了します。顧客の状況でそうなってしまいます。起動しているサーバーだけ処理させるために3151のエラー処理を追加したのですが、タイムアウトまでうっとうしく感じます。 そこで、PINGのようなイメージで先にサーバーの起動確認し、起動していたら処理を実行させるといったことを考えましたが、VBAでそのような方法はありますでしょうか。その他、このような場合の良い方法(発想)などありましたらご教授いただけないでしょうか。

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

Function GetPingStatus(ByVal Address As String) As Boolean 'GetPingStatus("192.168.0.1 等")か、GetPingStatus("コンピュータ名") 'Trueが返ってくれば疎通OK Dim obj As Object   For Each obj In GetObject("winmgmts:\\.\root\cimv2") _       .ExecQuery( _       "SELECT * FROM Win32_PingStatus" & _       " WHERE Address = '" & Address & "'", , &H30)     GetPingStatus = IIf(Nz(obj.StatusCode, 1) = 0, True, False)   Next End Function ネタ元はこちら サービスがダウンしたときに通知を受け取る方法はありますか http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/sept04/hey0914.mspx こちらも参考に サービスがダウンしたときに通知を受け取る方法はありますか http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/sept04/hey0903.mspx でも処理中にブチッとやられたら・・・どうしたもんでしょね。

len_on
質問者

お礼

ご回答いただきましてありがとうございます。お礼が遅くなりまして申し訳ありません。処理中に電源切られたら、ほんとにどうしたもんでしょうか。時間帯限定で使用する等、運用で回避することにいたしました。今回ご回答いただいた内容は今後の参考にさせていただきます。

関連するQ&A

  • ACCESSからのODBC接続について

    Windows2000サーバー上にあるアクセスファイル(別のOracle9サーバーにODBCリンクしている)をWindowsXpパソコンにコピーしましたが、「ODBC-xxxxへの接続が失敗しました」と表示されOracleデータを参照できません。 WindowsXpには、Oracleクライアントはインストール済み、DSNにもMicrosoft ODBC for Oracleを登録済みです。新規にODBCリンクすることは可能です。 エラーなく参照できるようにするにはどうすればいいでしょうか。

  • ACCESS2003 実行時エラー

    初めてmsn相談箱を利用させていただきます。 今、大変困っています。 ・現象 ACCESS2003 VBA  DB.EXECUTE "DELETE * FROM C20_FILE"で      実行時エラー3156 ODBC--リンクテーブル"C20_FILE"での削除に失敗しました。      とダイアログがでてとまってしいます。 ・正常動作実績 OS:Windows XP SP3 msjet40.dll : 4.0.9511.0 msjetoledb40.dll : 4.0.9502.0 ODBC Driver : Oracle in OraHome92 (9.02.00.00) ACCESS2003 DB : Oracle 9i R2 (9.2.0.1.0) 上記の環境では、問題なく動作しています。 ・エラーがでる環境 サーバOS : Windows Server 2008 R2 Standard(64bit) クライアントOS : Windows 7 Professional(32bit) DB : サーバ Oracle Database 11g R2(11.2.0.1.0) for Microsoft Windows(32bit) クライアント Oracle Database 11g R2 Client (11.2.0.1.0) forMicrosoftWindows(32bit) ACCESS2003 msjet40.dll : 4.0.9756.0 msjetoledb40.dll : 4.0.9756.0 ODBC Driver : Oracle in OraClient11g_home1 (11.02.00.01) ODBC接続は正常です。 ACCESS2003 オブジェクトのテーブルからリンクテーブルC20_FILEを開いて 全レコードを削除しようとすると ODBC--リンクテーブル"C20_FILE"での削除に失敗しました。 [Oracle][ODBC][Ora] ORA-01483 : DATEまたはNUMBERバインド変数の長さが            無効です。(#1483) とエラーがでたり、ACCESSに問題が発生しました。とでて ACCESS2003が終了したりと一定ではありません。 ・調査       自分なりに色々のサイトを探してみたのですが、これだ!!と思うのが見当たり            ません。 何卒どうか、どなたか助けてください!!!自分は、OS、ORACLE等は初心者です。          

  • ACCESSのODBC接続

    ご存知の方がいたら教えて下さい。 【動作環境】 OS:WINDOWS10(PRO) ACCESS 2013 SQL SERVER EXPRESS 2016 ODBCを使用してACCESSからSQL SERVERに接続しています。 データ参照やINSERTは問題なく、データ削除で2万件ほどのデータを削除しようとすると、「実行時エラー'3146' ODBC---呼び出しが失敗しました」のメッセージが表示され止まってしまいます。 1000件ほどでしたら、削除は行えます。 ・パススルークエリでDELETE FROM ○○を実行 ・リンクテーブルをVBAからクエリを開き削除 ・SQL SERVERにストアドを作成して、ACCESSから実行する を試したのですが、結果は変わりありません。 また、LOOPで1000件づつ削除も試したのですが、6回(6000件)ほどで同じメッセージが表示されてしまいます。 ODBCでの接続がネックなのかと思っているのですが、解決策が見出せません。 ヒント等でも教えていただければ助かります。 よろしくお願いします。

  • SQLサーバーのテーブルに対してアクセスで更新クエリを行ないたい

    こんばんは。 ・vista ・アクセス2003 ・SQL Server 2005 です。 SQL ServerからテーブルをMDBへリンクしているのですが そのテーブルに対し、アクセス側で更新クエリを実行しようとすると 実行時エラー '3157': ODBC--リンク テーブル'テーブル名'での更新に失敗しました。 [Microsoft][ODBC SQL Server Driver]時間切れになりました。(#0) と言うエラーになり、更新クエリができません。 どうすればアクセスでSQLサーバーのテーブルに対して更新クエリを行えるのでしょうか? よろしくお願いします。

  • ACCESSからODBC接続でORA-12504

    Access上でオラクルのテーブルのリンクを設定しようと していますが、「ORA-12504」のエラーが表示されてしまい 接続できず、困っています。 【エラー詳細】 ODBC-呼び出しが失敗しました。 [Oracle][ODBC][Ora]ORA-12154 TNS~ (#12154)[Microsoft][ODBC Driver Manager]ドライバのSQLSetConnectAttrは失敗しました。(♯0)[Microsoft][ODBC Driver Manager]ドライバのSQLSetConnectAttrは失敗しました。(#0) なお、SQLPlusで接続ができていますし、ODBCアドミニストレータ の接続テストも成功します。 Accessで問題があるのでしょうか? 【環境】 OS:WinXP x64 Access:003 Oracle:サーバ 10g(10.2.0.1) for 64-bit    :クライアント 10g(10.1.0.2) for 32-bit     ※64-bitのオラクルクライアントはAccessが      ドライバを認識しないため使用できませんでした。 何かわかりましたらご教授ください。 よろしくお願いします。

  • ExcelとOracleの連携について

    お世話になります。 Excelで[データ]-[外部データの取り込み]-[データの取り込み]-[新しいソース] -「ODBC DSN」-「接続するODBCデータソース」-「OracleDNS」 -「Oracle ODBCドライバ接続」ではOracleに接続する事は出来、データも Excel上に表示する事が出来ました。 しかし、下記HPの http://www.atmarkit.co.jp/fdb/rensai/excel2oracle02/excel2oracle02_2.html サンプルコードを元にVBAコードを作成したのですが、 'データベース接続処理がうまくいっていない様で、 Err_Han: ' エラー処理 MsgBox (Err.Description) で、「ORA-12154:TNS: 指定された接続識別子を解決できませんでした」 と言うエラーになってしまいます。 VBAにてADOの参照設定とかしていないのですが原因はそれでしょうか。 どなたかご親切な方、ご教示くださいます様、宜しくお願い致します。

  • SQL接続ACCESSにPCからはODBCエラー

    サーバー上のSQLSERVERにODBC接続のACCESSにLAN上のPCから実行するとODBCエラー"名称"への接続が失敗しました。 元々サーバー上(administrator/password)の共有フォルダにあったACCESSですが、複数人数で使用したくて、アップサイジングでSQLSERVERにテーブルを移しましたが、各々PCからサーバーに入り実行するとエラーになります。(サーバーで実行するとエラーになりません) ODBCはサーバー上でのみ設定ではダメ?(PC上に必要?) サーバー上にPCのアカウントが必要? SQLSERVERでのログインユーザーが必要?(権限等?) SQLSERVER2008R2EXPRESSを使用 PCはWindows7 ドメインではなくワークグループ環境

  • ASPでACCESSからoracleにリンクさせて表示したい。

    はじめまして。 いろいろ調べてみたのですが、わからなかったので質問させてください。 現在、ASPを利用してACCESS(2003)のテーブルから簡単な検索をできるようにしています。 このACCESSのテーブルは、別サーバーで動いているoracle(10g)のデーターベースから EXCELでエクスポートしたものを、ACCESSでインポートして使用していました。 この手間を省くため、ACCESSとoracleをODBCを使用してリンクさせたいと思いました。 まず、ODBCのシステムDSNで「oracle in oraclient10g」で追加して、接続を確認。 その後、ACCESSにてODBCでテーブルをリンクさせて開くことも確認できました。しかし、 WEB上で確認したところ、サーバー側・クライアント側でも以下のエラーが出てしまいます。 Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] ODBC--'****' への接続が失敗しました。 これはどのようにすれば、出来るようになるでしょうか。 初歩的な質問で申し訳ありませんが、ご教授ください。 よろしくお願いします。

  • ACCESSとoracleのODBC接続

    accessでoracleとODBC接続しています。access2003です。oracleは最新。 oracleのテーブルの項目数が255を超えています。 ACCESSの制限とか(?)で項目が350位あるので100項目くらいがリンクできません。VBAからselect文で(Select SYA_ID from IDOU)起動してもエラーになってしまいます。 何とか後ろのほうの項目を取得する方法は無いでしょうか? ご指導のほど宜しくお願い致します。

  • ACCESSからODBC経由だと"ORA-12504"

    遠隔の環境からOracleに接続させています。 OracleのSQL Plusだと、接続できるのですが、 ACCESSのODBC経由だと、「ORA-12504」のエラーが表示され、接続できず、困っています。 サービス名はあわしているつもりです。 アドバイスをお願いいたします。 ●OracleサーバーのVerはよくわかりません... 多分古い(8iぐらい)と思います。 accessは2003です。 Oracleクライアントは、Oracle8iです。 よろしくお願いいたします。