VBA测试连接到SQL Server

时间:2017-06-19 16:54:09

标签: sql-server access-vba

我们的前端连接了多个SQL服务器。我们需要一个测试来检查哪些服务器在任何时候都处于脱机状态。

以下代码与在线SQL服务器完全兼容,但在测试脱机时,需要超过30秒才能超时。我们需要更快地超时,因为这是一个定期运行的检查

Function ConTEST()

Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Dim strConnect As String

strConnect = "DRIVER={SQL Server};SERVER=SERVER;UID=UID;PWD=PWD;APP=Microsoft® Windows® Operating System;DATABASE=DB_NAME"

With conn
.ConnectionString = strConnect
.CommandTimeout = 5
.ConnectionTimeout = 5
.Open
End With

End Function

非常感谢有关如何解决此超时问题的任何建议。

1 个答案:

答案 0 :(得分:0)

如果它只是服务器上脱机的数据库,那么连接到" master"连接中的数据库,然后运行" DATABASEPROPERTYEX"函数来获取要检查的数据库的状态。

Dim rs As New ADODB.Recordset

With conn
.ConnectionString = strConnect
.CommandTimeout = 5
.ConnectionTimeout = 5
.Open
Set rs = .Execute("select DATABASEPROPERTYEX('yourdb', 'Status') as db_status")
Debug.Print rs(0).Value
.Close
End With

如果整个服务器脱机,您可能希望从命令行ping服务器。