有什么方法可以检查访问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. JavaDB - 检查数据库是否存在
- 4. chechbox检查是否值在数据库
- 5. 检查SQLite数据库是否存在
- 6. MySQL检查数据库是否存在
- 7. 检查访问数据库的名称
- 8. 检查访问数据库(.mbd)是否存在,如果不创建它
- 9. 检查数据库中是否存在数据库
- 10. 是否VB.NET垃圾访问数据库?
- 11. 检查oracle数据库是否可用
- 12. HTML5数据库表 - 检查是否空
- 13. sqlite3_open - 检查文件是否是sqlite3数据库的问题
- 14. 在线访问Heroku Postgres数据库
- 15. C# - SMO - 如何检查我是否拥有给定数据库的独占访问权限(即检查数据库是否在使用中)?
- 16. 检查用户是否有权访问SharePoint 2010中的内容数据库
- 17. ADO.NET:检查数据库服务器是否可访问的更快方法?
- 18. 检查编辑是有效的数据库MS-访问
- 19. TSQL在线检查数据库实例
- 20. 访问数据库查询
- 21. 检查MySQL数据库数据是否不存在
- 22. 红宝石检查数据库中是否存在数据
- 23. 是否有一个良好的在线数据库与Web GUI?
- 24. 如何检查ReflectionProperty是否可访问?
- 25. Swift - 检查网站是否访问
- 26. 检查API是否可访问
- 27. 如何查询postgreSQL数据库来检查值是否存在?
- 28. 检查数据库中是否存在使用查询> NodeJS
- 29. 项目Web访问,数据库资源
- 30. 查询Firebase用户是否检查数据库中是否存在联系人
感谢您的回答!我想我可以使用服务器端查询的想法 - 我会试一试。 – 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