sql-server - 打开与多个数据库的连接 - 唤醒
问题描述
我有大量的 Azure 数据库,目前有 6 个,但随着时间的推移会增加。
数据库的访问频率非常低,因此为了节省成本,它们被设置为 1 小时后自动休眠。
我需要在 Access 中连接到这些数据库中的一个或多个以检索数据,因此需要唤醒正确的数据库,每个数据库大约需要 30-60 秒。
我正在尝试将它们作为链接表动态添加,AttachDSNLessTable
但是在我调用它之前我需要唤醒数据库。我想异步执行此操作,因为唤醒过程可能需要一些时间,随着数据库数量的增加,这将变得荒谬。
我的想法是创建一个 ADODB 连接数组,遍历数组并.Open
使用选项调用方法adAsyncConnect
,然后监视所有连接的连接状态,直到那时所有连接都显示为打开或出现错误。
我一直在尝试的代码如下:
Dim databases() As DatabaseInfo
Dim connections() As ADODB.Command
Dim drv As String
Dim i As Integer
databases = getDatabaseInfo()
drv = GetDriverName()
ReDim connections(UBound(databases))
For i = 0 To UBound(databases)
Dim c As ADODB.Command
Dim con As ADODB.Connection
Dim sConn As String
sConn = "ODBC;DRIVER=" & drv & ";SERVER=" & databases(i).Server & ";DATABASE=" & databases(i).Name & ";UID=" & databases(i).Username & ";PWD=" & databases(i).Password
connections(i) = New ADODB.Connection 'Receive error
connections(i).Open sConn, , , adAsyncConnect
Next i
我在线上遇到编译错误connections(i) = New ADODB.Connection
,错误是Invalid use of property
。
这是否意味着无法在数组中使用 ADODB 连接?如果没有,还有其他方法可以异步连接到数据库列表吗?
解决方案
这是问题代码:
Dim connections() As ADODB.Command
变量名称和用法表明您的意图是一个连接数组,因此它应该是:
Dim connections() As ADODB.Connection
这将避免由于尝试将连接实例分配给命令变量而导致的编译错误。
推荐阅读
- c# - Do I need to pass in the url to call a WCF web service?
- ios - Certificates with invalid serial no. (iPhone has denied the launch request.)
- perforce - p4 提交 -r 并保持不变
- ajax - Headers changed in onBeforeSendHeaders are not sent
- javascript - Opencart question regarding square feet and boxes needed calculator
- sql - How to handle quoted values in AWS Redshift unload command?
- google-apps-script - GoogleSheets: How to write a script to automatically create a new tab, or delete/rename an existing tab, based on a list?
- d3.js - d3js刷如何获取选择值
- python - Django,在保存之前创建外键(下拉列表)的新值
- tfs - 如何从 TFS 2015 中的看板中删除一些列?