有什麼方法可以檢查訪問Web數據庫是否在線?我通過OleDB和Microsoft.ACE.OLEDB.12.0提供程序連接到數據庫。數據庫包含本地表以及一些Web表。我需要能夠檢查Web表是否連接到SharePoint數據庫。我也使用Access Interop庫來執行一些操作 - 如果我可以使用它來檢查數據庫是否在線,那也可以。檢查訪問Web數據庫是否在線
回答
訪問客戶端知道,如果它是「上」線或「離線」。因此,必須有某種方式來訪問測試/檢查/知道這些表當前已斷開連接(本地),或者實際上具有到SharePoint的實時連接並且正在主動同步數據。我的蜘蛛感覺告訴我,這種狀態可能不會暴露,如果是這樣,我不知道如何抓住這個價值。
但是,您可以嘗試強制進行完整的網絡同步操作,如果您不在線,那麼您將收到一個可捕獲的錯誤(3021)。這看起來有點像一團糟,並且它可以檢查狀態的全部可能(但我不知道在這個時間點是如何的)。
因此嘗試同步將強制此問題。
如
On Error Resume Next
DoCmd.RunCommand acCmdSyncWebApplication
Debug.Print Err.Number
由於擡起頭,acCmdSyncWebApplicaiton不變的是699
然而上述事實上確實折騰有被解僱的對話框。因此,以上對於用戶交互按鈕是可以的,但不需要用戶間的交互或自動化。
我知道如何從Access執行此操作的唯一方法是調用SharePoint上的表級過程。
下工作得很好,我:
On Error Resume Next
DoCmd.RunDataMacro "tblmonthtext.test1"
Debug.Print Err.Number
如果我們在連接線和表格,然後調用表級程序(什麼都不做)工作得很好,並errnumber = 0。如果我們脫機,然後調用表程序是不可能的,因此錯誤號= 13087.
正如我們正在處理自動連接或disconnedted表處理,然後我的VBA代碼打開表運行得很好,無論如果你有一個網絡連接或應用程序正在「離線」運行,而不是「在線」。我不認爲代碼知道或關心,這是你的問題。
所以我能夠從Access調用該表程序。我相信docmd對象和方法是作爲一個自動化(互操作性)暴露給.net的,所以在這個時候我正在處理這個問題,它對我來說工作得很好。如果rundatamacro被暴露,那麼你可以使用這個想法。
另一個kluge(可能更適合你的工作)是使用dumy表並添加一條新記錄。當表格離線時,生成的自動編號PK值爲負值。當你最終在線並同步時,那些PK負數將被服務器端生成的PK正值所取代。
當你在線並添加一行時,你會得到一個肯定的自動編號PK值。所以這裏另一個可能的技巧是簡單地有一個沒有記錄的虛擬表。
然後您只需添加一條記錄,確保它已保存。然後你抓住PK值,然後我想只是刪除該行。 (所以表格永遠不會填滿)。如果pk值> 0,則表明您在線並已連接。如果PK值爲< 0,那麼您處於離線斷開模式。因此,一個「提示」或想法是離線模式PK行值將被替換,當你最終得到一個連接同步,並在該離線時間幀,這些PK值是< 0.
如何像
try
{
//Create or open connection
}
catch(/*Exception you receive if database is inaccessible*/)
{
//Handle exception
}
catch(Exception ex)
{
//Handle other exceptions
}
finally
{
accessConnection.Close();
}
謝謝但我沒有試圖看看我能否連接到數據庫 - 我始終可以,因爲它是本地的。我需要查看數據庫當前是否具有與SharePoint Web數據庫的連接。 – 2012-01-06 01:10:26
- 1. 查詢檢查訪問數據庫中是否存在表
- 2. 如何檢查訪問數據庫中是否存在表?
- 3. Unity 3d通過Web服務訪問在線數據庫是否安全?
- 4. MySQL檢查數據庫是否存在
- 5. 檢查是否在數據庫
- 6. 檢查是否在數據庫
- 7. chechbox檢查是否值在數據庫
- 8. JavaDB - 檢查數據庫是否存在
- 9. 檢查SQLite數據庫是否存在
- 10. 檢查數據庫是否存在
- 11. 檢查sqlite數據庫是否在android
- 12. 檢查訪問數據庫的名稱
- 13. 檢查是否數據庫是空的
- 14. 檢查數據庫是否存在,當前的登錄可以訪問
- 15. 檢查訪問數據庫(.mbd)是否存在,如果不創建它
- 16. 檢查數據庫中是否存在數據庫
- 17. 是否VB.NET垃圾訪問數據庫?
- 18. 檢查數據庫中是否存在表的問題
- 19. 檢查數據庫是否有記錄
- 20. HTML5數據庫表 - 檢查是否空
- 21. 檢查oracle數據庫是否可用
- 22. 檢查數據庫是否包含表
- 23. 用Java訪問在線數據庫
- 24. 在線訪問mysql數據庫android
- 25. 在線訪問Heroku Postgres數據庫
- 26. 訪問在線數據庫與Objective-C
- 27. 如何檢查Oracle數據訪問組件是否已安裝?
- 28. C# - SMO - 如何檢查我是否擁有給定數據庫的獨佔訪問權限(即檢查數據庫是否在使用中)?
- 29. 檢查用戶是否有權訪問SharePoint 2010中的內容數據庫
- 30. ADO.NET:檢查數據庫服務器是否可訪問的更快方法?
感謝您的回答!我想我可以使用服務器端查詢的想法 - 我會試一試。 – 2012-01-06 16:14:37
謝謝。請記住,上面的表格過程調用是Access功能。在Access 2010中,表觸發器和表過程(存儲過程)是發佈時在SharePoint上運行服務器端的Access代碼。此代碼不是T-SQL(SQL服務器)或PL-SQL(Oracle),而是像其他人一樣,使用「自己」的過程語言。因此,如果服務器不可用,調用這些數據宏將失敗。如上所述,可以使用檢查表格插入上的負面自動編號。 (所以在這裏沒有服務器端查詢,但訪問「服務器端代碼」。 – 2012-01-07 05:38:55
我去了PK <0選項。謝謝。 – 2012-01-08 00:21:59